我使用Asterisk PBX来呼叫软电话,我使用这个命令:"发起SIP / 100分机4004" ,在拨号方案中,我必须得到CALLERID变量,但在这种情况下,它总是空的!
P.S:如果我从软电话(100)呼叫分机(4004),则设置CALLERID,我可以使用${CALLERID(num)}
来获取它。
如何在原始案件中获取来电显示?
答案 0 :(得分:11)
当您发起呼叫时,您自己设置来电显示。有两种方法可以做到这一点 - 无论是在原始应用程序中,还是在拨号方案中。下面是一个例子。
Action: Originate
Channel: local/12345@outgoing
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始发中设置您的来电显示,或者如果您选择在拨号方案中覆盖它,则会看到这些值。
有关详细信息,请参阅Manager Action Originate和CallerID Function。
答案 1 :(得分:4)
我知道这已经晚了但是如果你在Asterisk 1.8上使用Originate应用程序就不能正常使用它。
之前我曾在论坛上提出过问题,他们说这个功能会在稍后添加。所以我做的是修改app_originate.c以允许传递数字和名称。
这是我去年写的: https://github.com/cmendes0101/asterisk-originate-callerid
已经生产了一年多,并且一直很好。写的是1.8。这是一个简单的修改,所以如果您使用不同的版本,您可以简单地区分更改并对您的版本进行小的更改以实现它。
答案 2 :(得分:2)
我现在正在使用的最终解决方案:
我没有找到另一种解决方案。