首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asterisk执行异步AGI

Asterisk执行异步AGI
EN

Stack Overflow用户
提问于 2015-03-10 18:55:54
回答 1查看 4.2K关注 0票数 0

我正在编写与Asterisk服务器集成的简单弹出应用程序。我们的测试环境是基于FreePBX的,我们在其中配置了一些SIP。测试介于两个分机3000和3001之间。

3000、3001和其他扩展由SIP客户端(microsip)控制,用于测试目的,稍后它们可能成为一些其他sip客户端或软电话。

我需要的是,一旦有人呼叫分机3000,接线员就可以使用常规SIP客户端应答呼叫,而我的应用程序将显示有关呼叫的一些信息。我可以使用AMI来实现这一点。现在我希望在我的应用程序中有一个按钮,它允许我将呼叫置于保留状态。我知道,AMI不会暴露这样的特性,所以我尝试使用异步AGI。(顺便说一下,我正在使用asternet与asterisk通信)

代码语言:javascript
复制
AgiAction agi = new AgiAction(channel, "MusicOnHold");
ManagerResponse resp = manager.SendAction(agi);

一旦我这样做了,我就会得到一个答复

代码语言:javascript
复制
Failed to add AGI command to channel SIP/3000-00000003 queue

我想知道这是什么意思?

此外,我还尝试通过命令行界面启动"MusicOnHold“命令,并得到了响应

代码语言:javascript
复制
Channel XXXXX is not controlled by AGI"

我确实尝试过在拨号方案(extensions.conf)中添加类似的内容:

代码语言:javascript
复制
[default]
exten => 3000,1,NoOp(Async AGI)
same => n,AGI(agi:async)

这将删除"Channel XXXXX is not controlled by AGI“错误,但仍然保留"Failed to add AGI command to channel SIP/3000-00000003 queue”错误。最糟糕的是,一旦我有了这个拨号方案,我的sip客户端就停止接收呼叫,尽管AMI仍然能够捕捉到这一点。

我想知道实现我想要的东西的正确方法是什么?我对asterisk完全陌生,也许我缺少基本的概念,所以我真的很欣赏好的例子。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-03-11 14:28:20

异步AGI是通过AMI请求控制通道的方式,而不是agi。

我不确定你发送的asternet代码是什么,请参考asternet文档

还请注意,您无法将已在asyncagi中的呼叫置于保留状态(已处于等待状态!),除非您通过其他操作停止了等待

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28961874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档