星号执行Async AGI

时间:2015-03-10 10:55:54

标签: asterisk ami agi asternet


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

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

我需要的是,一旦有人呼叫分机3000,运营商能够使用常规SIP客户端接听电话,而我的应用程序将显示有关呼叫的一些信息。我能够使用AMI实现这一目标。现在我想在我的应用程序中使用一个按钮,允许我将呼叫置于保持状态。我知道,AMI没有公开这样的功能,所以我试图使用Async AGI。 (顺便说一句,我用asternet与星号沟通)

AgiAction agi = new AgiAction(channel, "MusicOnHold");
ManagerResponse resp = manager.SendAction(agi);

一旦我完成了,我就得到了回复

Failed to add AGI command to channel SIP/3000-00000003 queue

我想知道这意味着什么?

此外,我一直试图通过CLI启动“MusicOnHold”命令,我得到了回复

Channel XXXXX is not controlled by AGI"

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

[default]
exten => 3000,1,NoOp(Async AGI)
same => n,AGI(agi:async)

将删除“通道XXXXX不受AGI控制”错误,但仍然保留“无法将AGI命令添加到通道SIP / 3000-00000003队列”错误。最糟糕的是,一旦我有了这个拨号方案,我的sip客户端就停止接听电话了,尽管AMI仍然可以捕获它。

我想知道什么是达到我想要的正确方法?我对星号完全不熟悉,也许我缺少基本概念,所以我真的很感激很好的例子。谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

还要注意,除非你停止了其他一些行动,否则你无法暂停已经在asyncagi(已经停止!!!)的保持呼叫