0

我正在尝试使用 Asterisk 仅作为 VOIP、SIP/GSM 的接口来完成通过 AMI 执行所有呼叫逻辑的软件。几乎一切都很好,但是......:

这是我的场景: - 来电被转发到公告,然后永远转发到 MOH - 我的应用程序决定使用 AMI 拨打哪些分机 (7777) 操作:发起 - 一旦有人接听分机,他/她的频道 (SIP/306-例如 xxxxx) 使用 AMI Action: Bridge 与等待呼叫的通道桥接

直到此时一切正常,连接的双方都可以听到对方的声音,按需录音。一切皆好。

现在,我正在尝试在其中一个桥接通道上使用 AMI 辅助转移到另一个分机 (Atxfer)。它不起作用。我在一个频道上收到了几个关于 DTMF 的 ami 事件(播放时音频被静音)。每个 DTMF 数字都会在 AMI 上引发快速 Bridge:unlink 和 Bridge:link 事件。

我试图改变 dtmfmode,从星号 1.8 升级到 11(现在是星号),它总是一样的。

虽然在这些通道上使用 Atxfer 盲传输存在此问题(使用 AMI 操作:重定向)。

完整的日志没有显示类似这样的内容:

[2013-11-11 20:24:57] 调试 [9457]:features.c:3740 feature_interpret:功能解释:chan=SIP/306-00000017,peer=SIP/GTS-00000016,code=*2,sense= 1、特征=0、动态=apprecord#apprecord

4

1 回答 1

0

我建议您阅读一些适合初学者的星号书籍,例如 ORelly 的“Asterisk the future of telephony”。

在您的情况下,正确的解决方案是对第一个通道使用星号拨号命令,而不是创建第二个呼叫。

目前尚不清楚您如何使用 AMI 进行传输。如果你想通过 ami 来做(这是非常糟糕的方式),你可以做如下的事情

  • 在传输请求(数字)上解开通道。之后最好把它放在 AsyncAGI 中。

  • 使用读取命令收集要传输的数字

  • 转移到新目的地

  • 如果再次桥接失败

注意:您生成的应用程序将非常错误且不可扩展。当您在同一个盒子上运行大量操作和通道时,AMI 界面并不是为做这些事情而设计的,并且工作得非常糟糕。因此,您已经在高并发负载下测试了您的应用程序,以确保它工作(或更可能不工作)。

于 2013-11-12T09:53:27.373 回答