[英]Asterisk : originate call doesn't set the CALLERID in the dialplan
我正在使用 Asterisk PBX 呼叫软电话,我使用这个命令:“originate SIP/100 extension 4004”,在拨号方案中,我必须获得 CALLERID 变量,但在这种情况下,它总是空的!
PS:如果我从软电话 (100) 呼叫分机 (4004),则 CALLERID 已设置,我可以通过以下方式获取它: ${CALLERID(num)}
。
如何在原始情况下获取来电显示?
当您发起呼叫时,您可以自己设置来电显示。 有两种方法可以做到这一点——要么在你自己的 originate 应用程序中,要么在拨号方案中。 下面是一个例子。
Action: Originate
Channel: local/12345@outgoing
Application: Echo
CallerID: Asterisk <12345>
扩展.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 originate 中看到您的呼叫者 ID 设置,或者如果您选择在拨号方案中覆盖它,则这些值。
有关详细信息,请参阅管理器操作来源和呼叫者 ID Function 。
我知道这已经晚了,但如果您使用的是 Asterisk 1.8,Originate 应用程序通常不允许这样做。
我之前在论坛上问过,他们说这个功能会在稍后添加。 所以我所做的是修改 app_originate.c 以允许传递数字和名称。
这是我去年写的: https://github.com/cmendes0101/asterisk-originate-callerid
已投产一年多,运行良好。 是为 1.8 编写的。 这是一个简单的修改,所以如果您使用不同的版本,您可以简单地比较更改并对您的版本进行这些小的更改以实现它。
我现在使用的最终解决方案:
我没有找到其他解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.