我已经设置了FreePbx,它可以工作,我可以调用pbx和pbx。我启用了 REST API 并添加了用户和密码。我克隆了Asternet.Ari https://github.com/skrusty/AsterNET.ARI。
程序运行,我得到连接的事件:
// Create a new Ari Connection
ActionClient = new AriClient(
new StasisEndpoint("192.168.1.14", 8088, "userId", "password"),
"HelloWorld");
// Hook into required events
ActionClient.OnStasisStartEvent += c_OnStasisStartEvent;
ActionClient.OnChannelDtmfReceivedEvent += ActionClientOnChannelDtmfReceivedEvent;
ActionClient.OnConnectionStateChanged += ActionClientOnConnectionStateChanged;
ActionClient.OnChannelCallerIdEvent += ActionClient_OnChannelCallerIdEvent;
ActionClient.Connect();
........
private static void ActionClientOnConnectionStateChanged(object sender)
{
Console.WriteLine("Connection state is now {0}", ActionClient.Connected);
}
操作客户端已连接。然后我打电话给一个分机,但没有任何反应。我没有收到任何其他事件。调用任何扩展时是否应触发事件?不确定我是否正确设置了 pbx。当我从软电话或从手机外部局域网呼入时,我没有收到任何呼叫事件。
很久过去了,但也许还有用。只需将订阅所有事件参数设置为 true。
ActionClient = new AriClient(
new StasisEndpoint("voip", 8088, "root", "password"),
"HelloWorld",
true);
好吧,你的Asterisk Ari正在连接,但要在其中获取任何东西,你必须创建扩展,以便你的调用转到Stasis应用程序。
请使用以下信息编辑您的扩展名.conf文件
exten => _1XX,1,NoOp()
same => n,Stasis(HelloWorld,PJSIP/${EXTEN}, 45)
same => n,Hangup()
此脚本首先检查任何以 1 开头的传入号码都将被原谅到您的 ARI 脚本中。HelloWorld是应用程序的名称,因此您可以在脚本中阅读它。现在任何来电都会在您的套接字上显示整个信息。现在,您必须将此信息处理到任何特定任务。\