Sip 星号:发起呼叫不';t在拨号计划中设置被叫号码

Sip 星号:发起呼叫不';t在拨号计划中设置被叫号码,sip,asterisk,Sip,Asterisk,我使用Asterisk PBX呼叫软电话,我使用这个命令:“originate SIP/100 extension 4004”,在dialplan中,我必须获取CALLERID变量,但在这种情况下,它总是空的 附言:如果我从软电话(100)呼叫分机(4004),CALLERID被设置,我可以通过:${CALLERID(num)}获得它 如何在发起情况下获取呼叫者id?发起呼叫时,您可以自己设置呼叫者id。有两种方法可以做到这一点,一种是在originate应用程序中,另一种是在dialplan中

我使用Asterisk PBX呼叫软电话,我使用这个命令:“originate SIP/100 extension 4004”,在dialplan中,我必须获取CALLERID变量,但在这种情况下,它总是空的

附言:如果我从软电话(100)呼叫分机(4004),CALLERID被设置,我可以通过:
${CALLERID(num)}
获得它


如何在发起情况下获取呼叫者id?

发起呼叫时,您可以自己设置呼叫者id。有两种方法可以做到这一点,一种是在originate应用程序中,另一种是在dialplan中。下面是一个例子

Action: Originate
Channel: local/12345@outgoing
Application: Echo
CallerID: Asterisk <12345>
或者你可以这样做:

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中看到您的呼叫者ID设置,或者,如果您选择在拨号计划中覆盖它,则可以看到这些值


有关更多信息,请参阅和。

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

  • 我从php脚本调用我的扩展(源自SIP/100扩展777)
  • 我将扩展名写入文本文件(文件内容)
  • 然后我在星号拨号计划中读取它,并将此变量设置为呼叫者ID集(CALLERID(num)=${caller\u ID}

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

我知道这已经很晚了,但如果你的应用程序在星号1.8上,则源应用程序通常不允许这样做

我之前在论坛上问过,他们说稍后会添加该功能。所以我做的是修改app_origine.c,允许传递号码和姓名

这是我去年写的一篇:


已经投入生产一年多了,一直工作得很好。是为1.8编写的。这是一个简单的修改,因此如果您使用不同的版本,您可以简单地区分更改,并对您的版本进行这些小更改以实现它。

您好,谢谢您的回答,但我不知道如何使用您的解决方案,因为来电显示必须是动态(我从接收扩展名作为参数的php脚本调用他)。无论如何,我使用相同的脚本将扩展名写入文件,然后我使用AGI脚本从星号读取此文件,这就是我现在使用的解决方案。扩展=>4004,n,AGI(get_caller_id.php)扩展=>4004,n,Set(CALLERID(num)=${caller_id})谢谢。上面的示例回答了您关于如何在通过AMI创建的频道上设置呼叫者ID的问题。我没有尝试为您编写应用程序。如果您需要动态呼叫者ID,只需使用dialplan变量而不是上面所示的硬编码值,然后从AGI脚本。我没有说我正在使用AMI!!我只是从另一个脚本调用originate。无论如何,谢谢:)事实上,你从来没有说过你在使用什么,也没有说过它不是AMI。AMI是每个人和他们的狗用来发起呼叫的。我也有这个问题。我的星号版本是11。我像你的代码一样更改了app_.c。但它并没有设置被调用方。你能帮帮我吗。
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()