Asterisk Inbound Calls, Multiple SIP Accounts, CalledID
Hello all,
I have an Asterisk server (Asterisk 10.12.4) with multiple sip accounts with the same service provides. We have 8 phone numbers in total.
Incoming calls from the public are all correctly directed to appropriate office handsets. However, the display on the reception phone (the only one i care about) is always showing the same “SIP/Account1_0843214321” rather than the account representing the number dialed.
For-instance, if Sam on her mobile calls “*0811111111*”, Asterisk will show a log entry like the following:
— Executing [s@incoming:1] Set(“SIP/*Account1_0822222222*”, ”
thedid=””NodePhone”
*0822222222*” and not “*0811111111*”.
So Sam’s call will come through and be routed to the correct handset as the business needs, but it seems that all incoming calls are being labeled as though coming in on a different account. The effective problem is that the calledID is now wrong.
I’m after some general advice on how to handle the problem.
Ta,
-Andrew
9 thoughts on - Asterisk Inbound Calls, Multiple SIP Accounts, CalledID
Can you show us the CDR record for that call?
And maybe what your s priority of your incoming context is?
It should be easy to get what number was dialed, Try:
${CUT(PASSTHRU(${SIP_HEADER(TO):5}),@,1)}
Normally I display the callers number on my phones, Not the number they dialed?
It looks like all incoming calls are all being matched against the same entry in sip.conf. A ‘set set debug on’ should clearly indicate this.
Look for the line that says : Found peer ‘
This is one of the chronic problems. Try this option in sip.conf:
match_auth_username=yes
Carefully read the description, it is better to test in “after hours”.
02.04.2015 2:50, Andrew Galdes пишет:
Hi Dmitriy and others and thanks for your help so far.
The option “match_auth_username=yes” seems to have had no effect. From my reading, this option will try to match the username of the incoming SIP
account to a section heading. If that is how it must work then i can see a big problem. I’m trying to present the receptionist with a nice display of which line the call came in on. For example, the receptionist answers calls for 8 different companies and would like the phone to display the company name that she should announce to the caller.
Here is a more complete output of an incoming call. I’ve changed the SIP
numbers to “Company1′, etc, to hide the numbers.
Connected to Asterisk 10.12.4 currently running on asterisk (pid = 32267)
And here is the “sip.conf”:
[general]
[Company2]
And here is some of the “extensions.conf” file:
[incoming]
-Andrew Galdes
Solved it, kinda. It’s not cute. I’m sure this is the way NOT to do it but it does work. For prosperity, the SIP service is through Internode.
Here is my “extensions.conf” file:
exten => s,1,Set(thedid=”${SIP_HEADER(TO)}”); ignore this one exten => s,2,Set(pseudodid=${SIP_HEADER(To)})
exten => s,3,Set(pseudodid=${CUT(pseudodid,@,1)})
exten => s,4,Set(pseudodid=${CUT(pseudodid,:,2)})
exten => s,5,Set(callersname=${IF($[ ${pseudodid} =
081…]?Company1:${callersname})})
exten => s,6,Set(callersname=${IF($[ ${pseudodid}
= 082…]?Company2:${callersname})})
exten => s,7,Set(callersname=${IF($[ ${pseudodid}
= 083…]?Company3:${callersname})})
exten => s,8,Set(callersname=${IF($[ ${pseudodid}
= 084…]?Company4:${callersname})})
exten => s,9,Set(callersname=${IF($[ ${pseudodid}
= 085…]?Company5:${callersname})})
exten => s,10,Set(callersname=${IF($[ ${pseudodid}
= 086…]?Company6:${callersname})})
exten => s,11,Set(callersname=${IF($[ ${pseudodid}
= 087…]?Company7:${callersname})})
exten => s,12,Set(callersname=${IF($[ ${pseudodid}
= 088…]?Company8:${callersname})})
exten => s,13,GotoIf($[“${callersname}” = “Company1”]?internal,36,1:14); to reception exten => s,14,GotoIf($[“${callersname}” = “Company2”]?internal,88,1:15); to department1
exten => s,15,GotoIf($[“${callersname}” = “Company3”]?internal,36,1:16); to reception exten => s,16,GotoIf($[“${callersname}” = “Company4”]?internal,36,1:17); to reception exten => s,17,GotoIf($[“${callersname}” = “Company5”]?internal,36,1:18); to reception exten => s,18,GotoIf($[“${callersname}” = “Company6”]?internal,89,1:19); to department2
exten => s,19,GotoIf($[“${callersname}” = “Company7”]?internal,36,1:20); to reception exten => s,20,GotoIf($[“${callersname}” = “Company8”]?internal,13,1:21); to department3
And later in same file:
; Phone 36 reception
Ta,
-Andrew Galdes Managing Director
RHCE, LPI, CCENT
AGIX Linux
Ph: 08 7324 4429
Mb: 0422 927 598
Find us: Website <http://www.agix.com.au> | LinkedIn
<http://au.linkedin.com/in/andrewgaldes> | Blog <http://agix.com.au/blog> |
YouTube <http://www.youtube.com/user/andrewgaldes> | Google+
<http://google.com/+AndrewGaldes>
*Platform Architects for High Demand Web Applications.*
Since your objective is to have the receptionist identify the company she should be answering to then might I suggest a simple workaround to your problem. Since right here you are already sending the call to the expected internal context and extension, you could simply alter the Caller Name and put in the Company Name so she could see it on the screen. Something like:
[internal]
exten => 33,1,Set(CALLERID(name)=Company1:${CALLERID})
… exten => 88,1,Set(CALLERID(name)=Company2:${CALLERID})
… exten => 36,1,Set(CALLERID(name)=Company3:${CALLERID})
… etc…
That will display the Company Name you want to see followed by the caller ID #
Hi, Andrew.
You are trying to solve two tasks: definition through what line the call came and a beautiful display of this information.
1. definition through what line the call came. If the username and password for inbound and outbound registration the same, then try the following:
a) delete “register” lines. b) add option “callbackextension=Company1” to Company1 friend section.. And in others with their names too. or you can change “/s” to “/Company1” in register line.
2. beautiful display of this information a) add option “setvar=fromCompany=Company1” to Company1 friend section.. b) In dialplan add Set(CALLERID(name)=${fromCompany} ${CALLERID(name)})
Maybe this will help?
Dmitiy.
08.04.2015 2:48, Andrew Galdes пишет:
what about
exten => s,1,Goto(from-trunk,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1)
regards
2015-04-08 5:45 GMT+00:00 Dmitriy Serov:
Andrew,
Instead of your SET and GOTO blocks I’d recommend using the Asterisk DB to make things easier to maintain.
You could make two database entries for each of your DID’s
database put 4259981810 name JohnPersonal database put 4259981810 target kiniston-extern,john-personal,1
Then you could do a single block that would do the lookup and call routing:
Set(DESTINATION=${CUT(PASSTHRU(${SIP_HEADER(TO):5}),@,1)})
Set(CALLERID(name)=${DB(${DESTINATION}/name)})
Goto(${DB(${DESTINATION}/target)})