Page 1 of 1

Dialplan modification...

PostPosted: Mon Nov 17, 2008 7:26 am
by ciacho
We need person, who modify our dialplan (extensions.conf from vicidial).

Our voip provider have limits for outgoing calls per sip account (1 sip account = 1 outgoing call in the same time).
We have voip (sip) provider that offer 5 sip accs per agent.

Now we have 8 working agents and use Matt solution:
- 10 sip accs are in use
- if dialing number ends at '0' then use first acc
- if dialing number ends at '1' then use second acc, etc..:

Code: Select all
exten => _0048XXXXXXXX0,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _0048XXXXXXXX0,2,Dial(SIP/${EXTEN}@SIPAcc,55,To)
exten => _0048XXXXXXXX0,3,Hangup

exten => _0048XXXXXXXX1,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _0048XXXXXXXX1,2,Dial(SIP/${EXTEN}@SIPAcc1,55,To)
exten => _0048XXXXXXXX1,3,Hangup

exten => _0048XXXXXXXX2,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _0048XXXXXXXX2,2,Dial(SIP/${EXTEN}@SIPAcc2,55,To)
exten => _0048XXXXXXXX2,3,Hangup

exten => _0048XXXXXXXX3,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _0048XXXXXXXX3,2,Dial(SIP/${EXTEN}@SIPAcc3,55,To)
exten => _0048XXXXXXXX3,3,Hangup
...


We would like to make that each Agent must have pool of own sip accs. This solution should also provide a better control for agents (we will see sip accs billing / agent).

PostPosted: Sun Nov 23, 2008 1:42 am
by williamconley
So you are looking for an "if busy, check the next line" for each agent to have 5 lines available. And inbound calls would be routed to that agent if on that line? Or is this just for outbound? That's not difficult. We could write that solution. Is there a bounty on it?

In fact, that's a feature I've been wanting to create for a while anyway.

The ability to define a trunk with a maximum number of lines and put the trunks in "trunk groups" with "fill-up" and "fail-up" dialing.

Then: If a trunk fails, dial on another trunk (in the group), if a trunk's lines fill up, go to another trunk (in the group).

I was expecting it to be geared toward 10 lines per VOIP company, but it would be equally useful for 1 line per "account" with a provider.

PostPosted: Mon Nov 24, 2008 4:13 am
by ciacho
Yes, we looking exactly for this solution. 1 think more:
- We have 1 inbound sip trunk that is not used yet. This trunk should be used for all agents that are logged in the specified campaign.

Please give Your price (we need also invoice).

Regards,
Kris

PostPosted: Tue Nov 25, 2008 10:20 am
by williamconley
For a realistic price i need to know if this involves inbound or outbound only. It won't be difficult to write or test, but inbound adds a layer of cost to it.

PostPosted: Wed Nov 26, 2008 2:43 am
by ciacho
William,

Now we use only outbound campaigns, but in near future we would also use mix inbound / outbound campaigns, then we need a solution that is independent from traffic.

Regards,
Kris

PostPosted: Fri Nov 28, 2008 2:36 pm
by prabhakar_asterisk
I know your problem would have been solved by now but thought of telling others who face the same issue.

Once I had a client who wanted to use 3 sip providers for his campaign. He wanted as a fail over condition

exten => _X.,1,AGI(call_log.agi, ${EXTEN})
exten => _X.,2,Dial(SIP/${EXTEN}@SIP ACCOUNT1,,tTo)
exten => _X.,3,GotoIf($["${DIALSTATUS}" = "ANSWERED"]?7:4)
exten => _X.,4,Dial(IAX2/${EXTEN}@ IAX ACCOUNT,,tTo)
exten => _X.,5,GotoIf($["${DIALSTATUS}" = "ANSWERED"]?7:6)
exten => _X.,6,Dial(SIP/${EXTEN}@SIP ACCOUNT 2,,tTo)
exten => _X.,7,Hangup()

It may not be the right way but works like charm

Cheers,
Prabhakar

PostPosted: Fri Nov 28, 2008 7:29 pm
by williamconley
prabhakar_asterisk wrote:GotoIf($["${DIALSTATUS}" = "ANSWERED"]?7:4)


Simple enough for a temporary, and certainly for a test to see how it goes. But what happens if the call is busy or invalid? It will call using all five accounts in succession because it wasn't answered. Today, that could cause an issue since a lot of the carriers are unhappy with "no-connect" calls, not to mention the delay involved in trying the same number five different times to connect a call that's anything other than answered. Also, it requires hard coding everything. But would certainly be a cheap quick (temporary?) solution, while awaiting a permanent solution.

Oh, and I didn't mention what happens if the client simply didn't want to answer the call ... now you've called them 5 times in succession. That's not just annoying. We need to check to see if the agent's first line is in use and skip it if it is ... and so on.