星号拨号命令返回拨打的号码

时间:2015-04-09 09:08:54

标签: variables asterisk sip

我正在寻找一个变量,可以告诉我在多目标拨号命令中“赢得”了哪个号码。

示例:

拨号(SIP / 1000安培; SIP / 1001安培; SIP / 1002,30)

集(the_unlucky_winner = $ {...})

我从$ {DIALEDPEERx}变量中得不到任何东西。听起来这些vars已经坏了,但我不知道这是不是我应该使用的。

在此站点部署的古代版本1.2.14。所有客户都是SIP

谢谢任何人

4 个答案:

答案 0 :(得分:0)

只有现实的方式才能做到这一点 - 通过像freepbx这样的本地频道来做(检查freepbx.org来源)或者在回答时使用宏(我恐怕不能在1.2中工作)

答案 1 :(得分:0)

解析文件的CDR记录的内容。其中一个字段是dstchannel,其中包含的值为SIP/1002-9786b0b0

还要记住,挂断时会调用变量堆栈,除非你有一个" h" (hangup)为上下文定义的扩展名。因此,您可以轻松地在那里处理您的呼叫后处理。

进一步阅读:

  1. http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/asterisk-SysAdmin-SECT-1.html
  2. 请注意:

    如果这个答案可以解决您的问题,请"接受"这是为了其他人试图解决同样问题的好处

答案 2 :(得分:0)

大家好我有解决这个问题的方法。它适用于普通拨号和多目标拨号。

在dialstring中添加一个宏,这里我添加了“followme”宏。

M(followme)

$agi->exec("dial", "SIP/6001@sip.example.com&SIP/6002@sip.example.com,rtTgM(followme)");

然后在接听电话后,它将转到上下文

[macro-followme]

在此上下文中,您编写一个脚本以通过

获取已连接的呼叫信息
$dstchannel=$agi->get_variable("DIALEDPEERNUMBER");

答案 3 :(得分:0)

我设法做到的方式如下

Dial(SIP/1000&SIP/1001&SIP/1002,30,M(whoanswered))

[macro-whoanswered]
exten => s,1,NoOp(${CHANNEL})

你会看到回答的实际扩展包含在$ {CHANNEL}中 如果1001回答该频道将类似于SIP / 1001-00017cf1 只需使用CUT命令将其剪切为 / -