我正在使用Asterisk PBX呼叫软电话,我使用thise命令:“发起SIP/100分机4004”,在拨号方案中,我必须获得CALLERID变量,但在这种情况下,它总是空的! P:如果我从软电话(100)呼叫分机(4004),设置了CALLERID,并且我可以使用:${CALLERID(num)}
。Asterisk:始发呼叫不设置拨号方案中的CALLERID
如何在原始情况下获取调用者ID?
我正在使用Asterisk PBX呼叫软电话,我使用thise命令:“发起SIP/100分机4004”,在拨号方案中,我必须获得CALLERID变量,但在这种情况下,它总是空的! P:如果我从软电话(100)呼叫分机(4004),设置了CALLERID,并且我可以使用:${CALLERID(num)}
。Asterisk:始发呼叫不设置拨号方案中的CALLERID
如何在原始情况下获取调用者ID?
最终的解决方案,我现在使用:
我没有找到另一种解决方案。
当您发起呼叫时,您自己设置来电显示。有两种方法可以做到这一点 - 无论是在原始应用程序中,还是在拨号方案中。下面是一个例子。
Action: Originate
Channel: local/[email protected]
Application: Echo
CallerID: Asterisk <12345>
的extensions.conf:
[outgoing]
exten => 12345,1,NoOp()
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
,或者你可以这样做:
exten => 12345,1,NoOp()
same => n,Set(CALLERID(num)=54321)
same => n,Set(CALLERID(name)=Asterisk)
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
你应该可以看到你的来电显示设置无论是在AMI发起或,如果您选择在dialplan中覆盖它,这些值。
欲了解更多信息,请参阅Manager Action Originate和CallerID Function。
我知道这是晚了,但如果你在Asterisk 1.8原始应用程序只是不允许它正常。
我之前曾在论坛上发过帖子,他们表示该功能将在稍后添加。所以我所做的是修改app_originate.c以允许传递数字和名称。
这里是一个我写了去年: https://github.com/cmendes0101/asterisk-originate-callerid
一直在生产了一年多,并一直工作良好。写为1.8。这是一个简单的修改,所以如果你使用不同的版本,你可以简单地区分变化,并对你的版本做一些小的修改。
你好 感谢您的回答,但我不明白如何使用您的解决方案,因为呼叫者ID必须是动态的(我称他为php脚本,它将接收扩展作为参数)。 无论如何,我正在使用相同的脚本将扩展名写入文件,然后使用AGI脚本从星号读取此文件,这是我现在使用的解决方案。 exten => 4004,n,AGI(get_caller_id.php) exten => 4004,n,Set(CALLERID(num)= $ {caller_id}) 谢谢。 – 2012-04-09 09:59:49
上述示例回答了您如何在通过AMI来源创建的渠道上设置调用者ID的问题。我并没有试图为你写你的申请。如果你需要一个动态的来电显示,只需使用dialplan变量而不是上面所示的硬编码值,然后从你的AGI脚本中设置变量。 – 2012-04-09 23:42:44
我没有说我正在使用AMI!我只是从另一个脚本中调用originate。 谢谢你:) – 2012-04-10 11:02:02