【发布时间】:2015-03-10 10:55:54
【问题描述】:
我正在编写与 Asterisk 服务器集成的简单弹出应用程序。我们的测试环境基于我们配置了一些 SIP 中继的 FreePBX。测试在两个扩展 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 仍然能够捕捉到它。
我想知道实现我想要的正确方法是什么?我对星号完全陌生,也许我缺少基本概念,所以我真的很感激很好的例子。谢谢。
【问题讨论】:
标签: asterisk amazon-ami agi asternet