Asterisk 11.7匹配来电显示

时间:2016-02-09 14:31:44

标签: asterisk

我是一个星号pbx管理一些SIP提供商(ISDN Patton)和一些Voip提供商。 我按照here所述尝试在我的拨号方案中使用CID匹配。 这是我的拨号方案的相关部分,请注意,拨号方案的这一部分包含在我的extension.conf中:

[patton];Calls from Patton
exten => 0219999999/_0031X.,1,Answer(0)  
exten => 0219999999/_0031X.,n,Hangout()

exten => 0219999999,1,Answer(0)   
exten => 0219999999,n,Goto(in_4,${EXTEN},1)

[in_4]
exten => 0219999999,1,Noop(Exten: ${EXTEN})
exten => 0219999999,n,Noop(CID: ${CALLERID(NUM)})

总之,当呼叫者的CID来自荷兰时,我想做些不同的事情。 看看Asterisk CLI中发生了什么我看到:

 == Using SIP RTP CoS mark 5
-- Executing [0219999999@patton:1] Answer("SIP/patton-00000011", "0") in new stack
-- Executing [0219999999@patton:2] Goto("SIP/patton-00000011", "in_4,0219999999,1") in new stack
-- Goto (in_4,0219999999,1)
-- Executing [0219999999@in_4:1] NoOp("SIP/patton-00000011", "Exten: 0219999999") in new stack
-- Executing [0219999999@in_4:2] NoOp("SIP/patton-00000011", "Cid: 0031123456789") in new stack

所以我的理解是,Asterisk不会应用CID匹配,但我不明白为什么,考虑到如果我打印CID它完全符合我的表达。

2 个答案:

答案 0 :(得分:1)

以下是我的extensions.conf文件的一部分,用于处理入站呼叫者ID匹配(来自PSTN线路)

可能有另一种/更好的方法可以做到这一点,但是自1.4以来它一直是我的工作配置,我现在运行13.7没有任何问题。 (个别号码已替换为'#') - 这是一个简单的拨号计划。

这用于捕捉任何发送084或087前缀,几个特定数字和任何来自国际'或懒惰的系统管理员' UNAVAILABLE'

我也为SIP中继设置了相同的功能,因此这应适用于任何频道类型。

[from-pstn]
exten => s,1,Verbose(CLID From BT ${CALLERID(all)})
exten => s,2,GotoIf($[${CALLERID(num):0:3} = 087]?103:3)
exten => s,3,GotoIf($[${CALLERID(num):0:3} = 084]?103:4)
exten => s,4,GotoIf($[${CALLERID(num):0:11} = 07896######]?103:5)
exten => s,5,GotoIf($[${CALLERID(num):0:11} = 01494######]?103:6)
exten => s,6,GotoIf($["${CALLERID(name):0:13}" = "INTERNATIONAL"]?103:7)
exten => s,7,GotoIf($["${CALLERID(name):0:11}" = "UNAVAILABLE"]?103:8)
exten => s,8,GotoIf($[${CALLERID(num):0:10} = 020315####]?103:9)
exten => s,103,Answer
exten => s,104,Wait(1)
exten => s,105,Playtones(info)
exten => s,106,Wait(7)
exten => s,107,Hangup
exten => s,9,Goto(internal-ext,5800,1)

你会想要类似的东西;

[from-yourtrunk]
exten => s,1,Verbose(CLID From <yourtrunk> ${CALLERID(all)})
exten => s,2,GotoIf($[${CALLERID(num):0:4} = 0031]?103:3)
exten => s,103,<do something with the call that matches the CLI>
exten => s,3,Goto(<your-internal-ext>,<number>,1)

需要记住的一点 - 如果您处理可以启动0031但不是来自.nl的调用的入站来电显示,那么您需要将一些额外的模式匹配应用到第二行以强制执行最小位数(例如),否则将与CLI的0031进入任何调用相匹配.................... ...........

如果您需要更多解释,或者我的错误结束,请在此答案中添加评论。

答案 1 :(得分:0)

可能存在非零概率,即cid以其他格式进行(使用详细或Noop命令显示真实cid)

同样在这种情况下,如果cid匹配

,任何拨号方案都可以工作

Asterisk没有选择&#34;大多数匹配&#34;拨号方案。 Insead选择FIRST匹配拨号方案。

您可以使用不同的上下文和include指令来控制匹配。请参阅extensions.conf.sample

中的示例
    -- Executing [19@test:1] Answer("SIP/test2-0000821a", "") in new stack
    -- Executing [19@test:2] Set("SIP/test2-0000821a", "CALLERID(num)=0031123456789") in new stack
    -- Executing [19@test:3] Goto("SIP/test2-0000821a", "patton,0219999999,1") in new stack
    -- Goto (patton,0219999999,1)
    -- Executing [0219999999@patton:1] Answer("SIP/test2-0000821a", "0") in new stack
[Feb 10 08:26:09] WARNING[15817][C-00008bfe]: pbx.c:4869 pbx_extension_helper: No application 'Hangout' for extension (patton, 0219999999, 2)
  == Spawn extension (patton, 0219999999, 2) exited non-zero on 'SIP/test2-0000821a'
[Feb 10 08:26:45] NOTICE[1499]: chan_sip.c:28210 handle_request_register: Registration from '"407" <sip:407@78.47.159.180:5060>' failed for '221.144.172.3:5083' - Wrong password
pro-sip*CLI> dialplan show pa
park-dial            park-hints           park-orphan-routing  park-return-routing  parkedcalls          parkedcallstimeout   
patton               
pro-sip*CLI> dialplan show patton 
[ Context 'patton' created by 'pbx_config' ]
  '0219999999' (CID match '_0031X.') =>  1. Answer(0)                                  [pbx_config]
                    2. Hangout()                                  [pbx_config]
  '0219999999' =>   1. Answer(0)                                  [pbx_config]
                    2. Goto(in_4,${EXTEN},1)                      

[pbx_config] pro-sip*CLI> core show applications like  Hang
    -= Matching Asterisk Applications =-
         ChangeMonitor: Change monitoring filename of a channel. 
                Hangup: Hang up the calling channel. 
      HangupCauseClear: Clears hangup cause information from the channel that is available through HANGUPCAUSE. 
            SoftHangup: Hangs up the requested channel. 
    -= 4 Applications Matching =- pro-sip*CLI>

Addon2(请注意,调试是SO上的OFFTOPIC)

    -- Executing [0219999999@patton:1] NoOp("SIP/test2-0000821c", "cid match") in new stack
    -- Executing [0219999999@patton:2] Answer("SIP/test2-0000821c", "0") in new stack
[Feb 10 08:32:18] WARNING[15826][C-00008c00]: pbx.c:4869 pbx_extension_helper: No application 'Hangout' for extension (patton, 0219999999, 3)
  == Spawn extension (patton, 0219999999, 3) exited non-zero on 'SIP/test2-0000821c'
pro-sip*CLI> dialplan show pa
park-dial            park-hints           park-orphan-routing  park-return-routing  parkedcalls          parkedcallstimeout   
patton               
pro-sip*CLI> dialplan show patton 
[ Context 'patton' created by 'pbx_config' ]
  '0219999999' (CID match '_0031X.') =>  1. Noop(cid match)                            [pbx_config]
                    2. Answer(0)                                  [pbx_config]
                    3. Hangout()                                  [pbx_config]
  '0219999999' =>   1. NOOP(CIDNOTMATCH)                          [pbx_config]
                    2. Answer(0)                                  [pbx_config]
                    3. Goto(in_4,${EXTEN},1)                      [pbx_config]
相关问题