星号:始发呼叫不在拨号方案中设置CALLERID

时间:2012-04-06 15:16:16

标签: sip asterisk

我使用Asterisk PBX来呼叫软电话,我使用这个命令:"发起SIP / 100分机4004" ,在拨号方案中,我必须得到CALLERID变量,但在这种情况下,它总是空的!

P.S:如果我从软电话(100)呼叫分机(4004),则设置CALLERID,我可以使用${CALLERID(num)}来获取它。

如何在原始案件中获取来电显示?

3 个答案:

答案 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 OriginateCallerID Function

答案 1 :(得分:4)

我知道这已经晚了但是如果你在Asterisk 1.8上使用Originate应用程序就不能正常使用它。

之前我曾在论坛上提出过问题,他们说这个功能会在稍后添加。所以我做的是修改app_originate.c以允许传递数字和名称。

这是我去年写的: https://github.com/cmendes0101/asterisk-originate-callerid

已经生产了一年多,并且一直很好。写的是1.8。这是一个简单的修改,所以如果您使用不同的版本,您可以简单地区分更改并对您的版本进行小的更改以实现它。

答案 2 :(得分:2)

我现在正在使用的最终解决方案:

  • 我从php脚本(发起SIP / 100扩展777)中调用我的扩展
  • 我将我的扩展名写入文本文件(file_put_contents)
  • 然后我在星号拨号计划中读取它,并将此变量设置为来电显示套装(CALLERID(num)= $ {caller_id}

我没有找到另一种解决方案。