[asterisk-users] possible bug in Asterisk 16
Tony Mountifield
tony at softins.co.uk
Wed Nov 6 03:51:56 CST 2019
In article <4fb12839-c24c-bd27-51f9-2d85a4bffb75 at gmx.ch>,
Fourhundred Thecat <400thecat at gmx.ch> wrote:
> Hello,
>
> I am experiencing weird problem in Asterisk 16.2, possibly a bug. Same
> thing works fine in Asterisk 11. Here is the situation:
>
> I have 2 extensions on 2 phones. 4 extensions in total.
>
> phone 1:
> 8882
> 8382
>
> phone 2:
> 8884
> 8384
>
> And I have 2 SIP trunks for outgoing calls. I want to call via SIP1 when
> called via 8882 or 8884, and SIP2 when called via 8382 or 8384.
>
> And one last detail. SIP1 has caller ID spoofing enabled (used for call
> forwarding), so for outgoing calls, I have to explicitly set caller ID,
> otherwise 8882/8884 would be shown.
>
> Here is my config:
>
> exten => _0XXXXXXXX./_888[24],1,Verbose(0,EXTERNAL CALL)
> same => n,Macro(record)
> same => n,Set(CALLERID(num)=0441111111)
> same => n,DIAL(SIP/0441111111/${EXTEN})
> same => n,Hangup()
>
> exten => _0XXXXXXXX./_838[24],1,Verbose(0,EXTERNAL CALL)
> same => n,Macro(record)
> same => n,DIAL(SIP/0442222222/${EXTEN})
> same => n,Hangup()
>
> Now here the problem. The combination of /_888[24] and
> Set(CALLERID(num)=0441111111) causes problems:
>
> sent to invalid extension but no invalid handler:
> context,exten,priority=fullaccess,0793333333,4
>
> When I comment the line Set(CALLERID, everything works.
> Or when i change the first line to:
>
> exten => _0XXXXXXXX.,1,Verbose(0,EXTERNAL CALL)
>
> Everything works as well. Only the combination of both
> /_888[24] and Set(CALLERID(num)=0441111111) causes problems:
>
> can anybody understand what is happening here ?
Yes, I think so. Let's rewrite your first section as it is stored internally,
without the "same" and "n" shortcuts:
exten => _0XXXXXXXX./_888[24],1,Verbose(0,EXTERNAL CALL)
exten => _0XXXXXXXX./_888[24],2,Macro(record)
exten => _0XXXXXXXX./_888[24],3,Set(CALLERID(num)=0441111111)
exten => _0XXXXXXXX./_888[24],4,DIAL(SIP/0441111111/${EXTEN})
exten => _0XXXXXXXX./_888[24],5,Hangup()
Notice that all steps match both destination number and source caller-ID.
When you get to step 4, you have just changed the source caller-ID to
0441111111, which no longer matches _888[24]
If you did this instead, it should work:
exten => _0XXXXXXXX./_888[24],1,Verbose(0,EXTERNAL CALL)
same => n,Macro(record)
same => n,Set(CALLERID(num)=0441111111)
exten => _0XXXXXXXX./0441111111,n,DIAL(SIP/0441111111/${EXTEN})
same => n,Hangup()
I've just done the above on my Asterisk 16 box, and the loaded dialplan
looks like this:
hp3*CLI> dialplan show testing
[ Context 'testing' created by 'pbx_config' ]
'_0XXXXXXXX.' (CID match '0441111111') => 4. DIAL(SIP/0441111111/${EXTEN}) [extensions.conf:883]
5. Hangup() [extensions.conf:884]
'_0XXXXXXXX.' (CID match '_888[24]') => 1. Verbose(0,EXTERNAL CALL) [extensions.conf:880]
2. Macro(record) [extensions.conf:881]
3. Set(CALLERID(num)=0441111111) [extensions.conf:882]
-= 2 extensions (5 priorities) in 1 context. =-
Notice that the "n" converted to "4" correctly even though the extension changed.
I wasn't aware it would until I tried it.
Why your original version works fine in Asterisk 11 I don't know. Maybe the
handling of caller-ID changed.
Cheers
Tony
--
Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org
More information about the asterisk-users
mailing list