祝福大家!有 Asterisk 版本 13。它启用了 RestAPI。我想使用此 RestAPI 从 ATC 接收有关通话开始和结束的信息,最好是有关通话期间电话上的击键的信息。仍然很高兴获得声音流。(“听电话”)但我试过了——我所有连接到 webSocket 的尝试都没有结束。也就是说,网络套接字立即被禁用。RestAPI 用户和密码已创建。
也许我基本上做错了什么?我需要在 PBX 上进行一些设置吗?
祝福大家!有 Asterisk 版本 13。它启用了 RestAPI。我想使用此 RestAPI 从 ATC 接收有关通话开始和结束的信息,最好是有关通话期间电话上的击键的信息。仍然很高兴获得声音流。(“听电话”)但我试过了——我所有连接到 webSocket 的尝试都没有结束。也就是说,网络套接字立即被禁用。RestAPI 用户和密码已创建。
也许我基本上做错了什么?我需要在 PBX 上进行一些设置吗?
先生们,感谢所有阅读并帮助我解决问题的人。特别感谢 Maxim Litnitsky 用俄语写的受欢迎的文章。不过结果还是得到了另外两个不太了解Asterisk,但是有系统思维的人的帮助。
结果,一切顺利,我只需要与社区分享。
Asterisk 由一个名为“dialplan”的特殊脚本控制。拨号方案由上下文组成。在编程世界中没有直接的类比,但粗略地说,上下文可以比作子程序。整个 Asterisk 都带有一个为用户会话(调用)提供服务的 http 服务器,在服务期间从一个子程序切换到另一个子程序。曾几何时,拨号方案是手写的,现在都是通过WEB-asterisk界面生成的。
安装必要的模块后 - 例如,请参阅此链接的说明:http: //vinogradov.iptel.od.ua/rabota-s-asterisk-ari/ - 你可以开始折磨他了。首先,您需要尝试通过常规浏览器进行折磨。
这里swagger充当助手:http ://ari.asterisk.org/ 。自然,那里什么都不清楚,但总的来说,在第一行你需要写一个到服务器的链接,在那里他们要求一个未知的 api 密钥 - 登录 - 格式为“登录:密码”的密码,例如:
http://192.168.10.55:8089/ari/api-docs/resources.json和konst:******(而不是星号,替换您的密码)此 Web 界面给出了星号中的对象的概况。但是他们仍然无能为力。为此,您还需要执行两个步骤:转到 Web 套接字并订阅事件。
而这一切都是关于魔法 URL 的。通常,如果您建立一个到 URL 的 WEB 套接字连接,例如:
然后一个小小的奇迹就会发生。这个开头的URL包含服务器地址和WS端口(默认是8088端口,我改了)。然后 - 魔法 URL 的开头。然后
events?app=qwer- 这是“不存在的”星号应用程序的名称。最重要的是:
&subscribeAll=true正是这一行告诉星号,有必要向这个套接字发送有关正在进行的进程的信息!这正是我写问题时所缺少的!没有她,一切都是废话。
好吧,那么 - 只需一个登录名和密码,六个星号必须替换为正确的密码。因此,如果您收听 WEB 语法文本,那么有关拨号方案切换上下文的信息就会落在那里,也就是说,类似于呼叫处理的调试信息。
在 C# 中创建 Web 套接字的代码:
作为 WS 套接字,我使用了websocket-sharp