iam*_*iam 5 c# asterisk asteriskami
我一直在使用C#构建WinForms桌面应用程序,该应用程序使用Aster.NET(以前/从Asterisk.NET分叉)与Asterisk交互。我们确实无法可靠地识别和跟踪与单个分机/用户相关的呼叫。
我们遇到的问题是由于Asterisk触发/触发的事件具有不可预测/模糊的性质,它们的变化很大,具体取决于呼叫到达分机之前路由的方式。
例如,在以下情况下,事件顺序/格式是不同的:呼叫在被盲目转移之前命中了IVR;如果呼叫在被转移前打到IVR;如果呼叫直接转到用户的分机。
Asterisk使用不同的唯一ID跟踪呼叫的每一端的方式(例如,呼叫的传入端具有与呼叫的接收端不同的UID),这进一步受到阻碍。尽管我们设法在(随后很丑陋!)代码中对此进行了说明,但在考虑该呼叫可以采用的不同路由路径方面仍然遇到了问题。
因此,我正在寻找有关如何执行以下操作的建议:
就目前而言,我们拥有极其复杂的事件处理程序链,这些事件处理程序根据应用程序的“当前状态”进行不同的操作。
举一个例子:如果我们检测NewStateEvent与ChannelState 6的(“上”),我们检查是否有过程正在进行的呼叫和那的UID匹配,如果是的话,那么当前呼叫已被应答。如果UID不匹配,但其他因素匹配(例如,通道,connectedlinenum等),则我们将其视为呼叫的“另一端”(即接收方或传入方)。
我不确定问题是出在API还是AMI上-但是无论是什么原因,这都使我们有些头疼。
任何建议,不胜感激。
您可以更新到 Asterisk 12 吗?AMI 中的通道名称现在在 Asterisk 12 中稳定。
https://wiki.asterisk.org/wiki/display/AST/AMI+v2+规范
| 归档时间: |
|
| 查看次数: |
2804 次 |
| 最近记录: |