0

我已经设置了 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);
    }

ActionClient 已连接。然后我打电话给分机,但没有任何反应。我没有收到任何其他事件。调用任何扩展时是否应该触发事件?不确定我是否正确设置了 pbx。当我从软电话或手机从局域网外呼入时,我没有收到任何呼叫事件。

4

2 回答 2

1

很长一段时间过去了,但也许有用。只需将 subscribeAllEvents 参数设置为 true。

        ActionClient = new AriClient(
            new StasisEndpoint("voip", 8088, "root", "password"),
            "HelloWorld",
            true);
于 2020-01-21T13:38:10.290 回答
0

好吧,您的 Asterisk Ari 正在连接,但要获取其中的任何内容,您必须创建 Extension,以便您的呼叫转到 Stasis 应用程序。

请使用以下信息编辑您的 extensions.conf 文件

exten => _1XX,1,NoOp()
same => n,Stasis(HelloWorld,PJSIP/${EXTEN}, 45)
same => n,Hangup()

此脚本首先检查任何以 1 开头的传入号码将被转发到您的 ARI 脚本。HelloWorld 是应用程序的名称,因此您已经在脚本中使用了它。现在任何来电都会在您的套接字上显示全部信息。现在您必须将这些信息处理到任何特定任务。\

于 2019-02-10T07:17:20.440 回答