替换SIP电话中的操作URL和URI还是通过websocket管理?

SIP电话。 带有听筒的计算机。 从理论上讲,它们可以做很多事情,但是它们仅用于呼叫:-)

最近AsterConf在会议上,那里的供应商谈论了他们的手机,我们不会挑出任何人,他们都很好,某个地方更好,某个地方更便宜,实际上他们在做同样的事情。

一些供应商提高了音质,有人用Android固定了平板电脑,有人试图添加某种应用程序。 所有这些使我们将这些电话安装在台式机上。

也许电话是物联网世界中远程角色的理想人选:我单击按钮并获得结果。 而且,以我的拙见,没有足够简单的方法将电话连接到您的“经理”。 作为本文的一部分,我想展示它在图表和视频演示中看起来如何简单。

并请您分享评论,也许某个地方已经实施了类似的措施,或者补充了您的建议和想法。

电话具有操作URL和操作URI。

动作URL允许我们将不同的事件发送到任何URL。 在url中,我们可以指定预定义的变量,这些变量将在调用期间填充实际数据。

因此,例如,我手机的设置看起来像。



Yealink的动作URL设计器在线

动作URI允许我们在电话的IP地址上接收命令,电话可以拨打电话,通过命令接听电话,增加音量,重新启动等。 在下面的视频中,您可以看到所有这些情况。 我们必须指出团队将来自的地址。



一切都是可配置的,什么问题,兄弟?

这些是非常实用的接口,但是...很难集成。 即 我们需要采取100,500次操作才能使其正常运行。 或在设备的设置中填写100个字段(您自己在屏幕上看到),或者与规定混淆并指定一些配置模板。

结果,有很多动作很容易犯错而没有得到想要的东西,然后花费大量时间找出造成设备不当行为的原因。 好吧,如果您要应对一个问题,那么您将拥有五到十个,一百个以及几家供应商,甚至是几代不同的型号。 泡芙泡芙

这有问题吗? 有人需要管理订户的电话吗? 给订户? 从台式机,笔记本电脑还是智能手机? 技术支持? 内部和外部,例如虚拟电话交换提供商? 我是否需要以不同于SIP的方式访问电话? 将电话与应用程序集成在一起,绕过IP-PBX?

我不能明确回答,有缺点也有优点。 为了实现这些优势,我希望能够将Action URL和Action URI快速连接到我的“ Manager”。 我将经理称为服务器,可以从该服务器集中查看电话列表,电话状态,并从其中的任何电话执行一些可用的操作。

让我们看一下图。



假设我们的手机中有一个websockets客户端。

然后,我们只需在电话中指定“管理员”的网络地址,我们的电话便会连接到它。 连接后,手机将发送其ID,名称,mac。 例如,这将使我们可以将其与PBX用户列表进行比较。

然后,我们订阅电话中发生的事件。 其中有很多,这些是重新注册,接听电话,按下按钮等。 然后,我们可以通过发送命令从经理拨打该号码。 设置免打扰或删除免打扰。 然后我向手机发送通知或提醒,设置新徽标。

那么安全性呢? 通常,SIP电话可以用于NAT,而无需外部地址。 但是,如果您将手机的Web服务器端口设置为Action URI网络(顺便说一下,管理区域在该网络上有效),那么您会感到不愉快。

但是,如果电话将通过websockets连接到“管理器”,则这是他的主意,也是他的权利,他可能会断开连接,并且如果您由于NAT而连接到远程服务器,则看起来就像是浏览器连接。

足够的话,更接近重点。 我编写了一个小型电话客户端(我认为应该在电话中),该客户端通过Web套接字连接到服务器。 此外,浏览器已连接到该服务器,该服务器可以从电话接收消息并在此发送命令。

客户端只是Action URL和Action URI的包装,后者通过其熟悉的界面与电话配合使用,并将所有数据包装在Web套接字中。 在Web套接字中,我们具有任何Web开发人员都可以使用的常规JSON消息。

观看视频,一切都非常简单。 所有代码都最少,足以说明概念。


视频中发生了什么?

  1. 我们启动接受websockets连接的服务器,
  2. 我们启动客户端(通过手机的Action URL和URI起作用)
  3. 客户端连接到服务器
  4. 我们启动Web服务器(带有页面中用于通过websockets从浏览器进行连接的代码的页面)
  5. 在浏览器中打开页面,页面连接到服务器
  6. 我们正在从页面发送信息请求
  7. 该请求将一直发送到电话,并返回有关电话线的信息
  8. 我们也可以派遣不同的团队
  9. 包括拨打电话的命令
  10. 然后挂断命令
  11. 所有数据都可以在该页面的日志以及工作服务器和客户端电话的控制台中看到
  12. 然后您可以在电话页面上看到它对命令的反应

因此,将电话连接到Manager只是一个地址。 从Web套接字到另一个演示文稿(反之亦然)的消息可以是任何开发人员。 就我而言,页面已连接到Manager。 通常,它可能是一个更复杂的系统,它将处理命令并将消息发送到电话。

使用简单的连接方法会很方便,因此更容易学习。 从理论上讲,通过该接口,可以发送新配置和其他消息,从而使电话易于集成到任何基础架构中。

通常,这些只是我对在Asterkonf查看新产品的结果的看法。 我将很高兴看到评论中的利弊。 也许其中一个制造商会对此有所了解并推出芯片:-)

Github项目

Source: https://habr.com/ru/post/zh-CN475842/


All Articles