RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 571821
Accepted
S.H.
S.H.
Asked:2020-09-29 21:20:15 +0000 UTC2020-09-29 21:20:15 +0000 UTC 2020-09-29 21:20:15 +0000 UTC

Asterisk、RestAPI 和获取调用信息

  • 772

祝福大家!有 Asterisk 版本 13。它启用了 RestAPI。我想使用此 RestAPI 从 ATC 接收有关通话开始和结束的信息,最好是有关通话期间电话上的击键的信息。仍然很高兴获得声音流。(“听电话”)但我试过了——我所有连接到 webSocket 的尝试都没有结束。也就是说,网络套接字立即被禁用。RestAPI 用户和密码已创建。

也许我基本上做错了什么?我需要在 PBX 上进行一些设置吗?

asterisk
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    S.H.
    2020-10-03T17:14:15Z2020-10-03T17:14:15Z

    先生们,感谢所有阅读并帮助我解决问题的人。特别感谢 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 套接字连接,例如:

    "ws://192.168.10.55:8089/ari/events?app=qwer&subscribeAll=true&api_key=konst:******"
    

    然后一个小小的奇迹就会发生。这个开头的URL包含服务器地址和WS端口(默认是8088端口,我改了)。然后 - 魔法 URL 的开头。然后events?app=qwer- 这是“不存在的”星号应用程序的名称。

    最重要的是:&subscribeAll=true

    正是这一行告诉星号,有必要向这个套接字发送有关正在进行的进程的信息!这正是我写问题时所缺少的!没有她,一切都是废话。

    好吧,那么 - 只需一个登录名和密码,六个星号必须替换为正确的密码。因此,如果您收听 WEB 语法文本,那么有关拨号方案切换上下文的信息就会落在那里,也就是说,类似于呼叫处理的调试信息。

    在 C# 中创建 Web 套接字的代码:

    void Form1_Shown(object sender, EventArgs e) {
        ws = new WebSocket("ws://192.168.10.55:8089/ari/events?app=qwer&subscribeAll=true&api_key=konst:******");
    
        ws.OnError += Ws_OnError;
        ws.OnOpen += Ws_OnOpen;
        ws.OnClose += Ws_OnClose;
        ws.OnMessage += Ws_OnMessage;
        ws.Connect();
    }
    

    作为 WS 套接字,我使用了websocket-sharp

    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5