繁体   English   中英

Asterisk:发起呼叫未在拨号方案中设置 CALLERID

[英]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 编写的。 这是一个简单的修改,所以如果您使用不同的版本,您可以简单地比较更改并对您的版本进行这些小的更改以实现它。

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

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

我没有找到其他解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM