【FreeSwitch开发实践】 ESL简介

      最后更新:2022-07-11 05:24:00 手机定位技术交流文章

      文章目录

      • 前言
      • 一、什么是Event Socket
        • 1.1 简介
        • 1.2 两种模式
      • 二、ESL协议简介
      • 三、常用ESL命令
        • 3.1 api
        • 3.2 bgapi
        • 3.3 event
        • 3.4 noevent/nievent
      • ESL支持的语言
      • 总结

      前言

      本文主要对freesiwtch ESL做一个简要介绍,ESL全称Event Socket Libray是freeswitch中一组socket的函数库。


      一、什么是Event Socket

      1.1 简介

      首先要了解ESL,你需要了解Eevent Socket是什么,Event Socket可以使运行在freeswitch外部的程序控制freeswitch, 可以使用socket的方式使用freeswitch提供的所有API和App,因为几乎几乎任何语言都支持socket,因此它几乎可以与任务语言进行通信。
      换句话说,Event Socket实际上是一个 Socket,还有TCP协议,Event Socket只是一个自由开关特定的TCP定制接口。并且Event Socket只提供外部TCP接口,允许外部调用内部自由交换器提供的应用程序和API。

      随着上述介绍,ESL变得更简单,ESL是Event Socket的包库集,是一个实现集。

      1.2 两种模式

      Event Socket分成两种模式,内连模式(Inbound)和外连模式(Outbound)。这里所说的内和外是针对freeswitch而言的。
      外部连接模式:作为TCP客户端的自由交换,而用户程序作为一个TCP Client连接到freeswitch。TCP服务器做什么,事实上,TCP服务器需要用户实现自己,建立连接后,freeswitch会将会话Channel的所有消息都发送给TCP Server, TCP Server可以决定是不是干预通电话,任何时候都可以干预.
      内连模式:freeswitch作为一个TCP Server,而用户程序作为一个TCP Client连接到freeswitch。用户程序可以通过事件订阅获取freeswitch的各种状态。

      二、ESL协议简介

      ESL协议与HTTP协议或SIP协议类似,它是在TCP上的一种协议。这里是通过一些ESL命令对ESL协议的简要介绍。
      在centos7.6下安装telnet命令,使用telnet连接到FreeSwitch8021在港口,尝试一些简单的命令,例如api versionapi status等,如下:

      auth命令验证密码, ClueCon是event_socket.conf.xml中配置的默认密码。
      通过api version、api status可以大致了解,ESL协议的格式如下:

      请求请求:
      command <参数>
      Content-Type: text/plain
      Content-Length: 消息体长度
      <消息体>
      答复:
      Content-Type:[text/plain | command/replay | api/response | text/event-plain | text/event-xml
      | text/event-json
      Content-Length: 消息体长度
      <消息体>


      三、常用ESL命令

      以下是一些常见的ESL命令的简单介绍:

      3.1 api

      apiapi命令用于执行freeswitch内部api或app,是同步执行的,freswitch内部api或app未执行完成,api命令不会返回。

      3.2 bgapi

      bgaip它与API命令类似,但执行方式不同步,不需要等待自由开关内部API或应用程序执行完成,并且可以立即删除。

      3.3 event

      event [plain | xml | json] event_nameevent命令用于订阅freeswitch的各种事件, 分别支持plain文本类型、xml类型和json类型的事件数据模式返回。
      订阅所有事件:

      加入普通事件命令的例子:

      订阅自定义事件命令例:

      其中CUSTOM是所有自定义事件的事件名称, my_custom_event_1是subclass,所有自定义事件都必须有subclass,而且不能相同。

      3.4 noevent/nievent

      noevent/nievent取消订阅事件,例如:


      ESL支持的语言

      ESL是Event Socket的包装库。理论上,只要一个语言支持Socket,就可以实现ESL。已知的ESL支持语言包括C、Perl、PHP、Python、Ruby、Lua、Java、JavaScript、Tcl和C#、VB。
      下面的文章将显示JS和C语言中的ESL使用例子,请等待。

      总结

      本文简要介绍了ESL, 并分别介绍了Event Socket、ESL协议和ESL命令.

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29521.html

          热门文章

          文章分类