找不到具体的答案。我是星号和 AMI 的新手。我需要使用星号自动生成调用并将参数传递给 AGI 程序。使用调用文件似乎首先生成不需要的调用。那么,如何使用星号 AMI API (PHP) 通过将所有参数传递给它来执行其中包含 AGI 的拨号计划?因此,AGI 将接管并发出呼叫。
问问题
4147 次
2 回答
2
我认为在您的情况下,使用调用文件实际上会更简单。原因如下:
- AMI 要求您编写网络代码,这(如果您是初学者)构建简单的文本文件(调用文件)会更加棘手。
- 调用文件允许您将变量传递给您可以在拨号方案代码中使用的 Asterisk。
- 呼叫文件非常简单。
下面是一个使用调用文件的简单方法的完整示例。我已尽力在相关评论中解释它。
首先,假设您有一些使用变量的拨号方案代码,并调用 AGI 脚本(根据您的问题,我假设您正在这样做)。这意味着您的extensions.conf
文件中将包含类似于以下内容的代码:
[test_stuff]
exten => s,1,NoOp(starting test!)
exten => s,n,NoOp(my variable's value is: ${somevar})
exten => s,n,NoOp(my other variable's value is: ${some_other_var})
exten => s,n,AGI(/path/to/my/script.sh,${somevar})
exten => s,n,NoOp(i just ran an AGI script and passed it a command line argument!)
exten => s,n,Hangup()
下面是一个调用文件,它将:
- 需要在一些临时目录中创建(也许
/tmp/
)。 - 保存后,您可以通过将其移动到
/var/spool/asterisk/outgoing/
(例如:)来运行它mv /tmp/blah.call /var/spool/asterisk/outgoing/
。 - 呼叫文件将立即向外拨出电话号码 818-222-3333。
一旦 818-222-3333 的人接听电话,Asterisk 将立即开始执行您的 [test_stuff] 拨号方案代码,并将在您的呼叫文件中设置的变量可供它使用:
频道:SIP/trunkname/18182223333
上下文:test_stuff
扩展名:s
优先级:1
设置:somevar=hithere
设置:some_other_var=woot
希望有帮助!
于 2011-09-27T20:13:57.163 回答
0
例如,您的问题可以在本地渠道的帮助下解决
在呼叫文件Local/1812222222@test_stuff
中用作通道,同时使用以下拨号方案
[test_stuff]
exten => _X.,1,NoOp(starting test!)
exten => _X.,n,Set(phone=${EXTEN})
exten => _X.,n,AGI(/path/to/my/billing,${phone},${other_variables_account_etc..})
exten => _X.,n,Dial(SIP/trunkName/${phone})
您可以将此方法与两个接口 AMI 或 .call 文件一起使用
于 2012-09-05T07:56:24.850 回答