MYVOIPAPP

事件通道

1. 描述

miniSIPServer事件通道是一种消息通道,建立在websocket连接之上。MSS通过事件通道将内部状态通知给外部程序。

MSS与外部程序之间的事件通道

如上图所示,我们可以了解事件通道的几个关键点:

  • 事件通道基于websocket,因此外部应用程序首先需要与MSS建立websocket连接。
  • 事件消息内容采用JSON文本格式。

当前MSS会检查应用程序的IP地址作为鉴权。如果IP地址没有在MSS中配置,MSS将拒绝该应用程序的websocket连接。

2. 配置
2.1 系统

默认情况下,MSS打开TCP端口5080用于接受websocket连接。当然您可以根据自己的需要修改这个端口。请点击菜单“数据 / 系统配置 / 基本”,并修改“事件通道端口”项。如下图所示。

websocket端口配置
2.2 IP地址鉴权

如果外部应用程序要连接MSS事件通道,我们必须将其IP地址添加到MSS进行鉴权。请点击菜单“维护 / 事件通道鉴权”。

添加IP地址进行鉴权
3. 事件(Events)

本章节描述 miniSIPServer 发出的所有事件消息的细节。所有这些消息都是采用JSON编码格式的文本字符串。

下面是一个事件消息的示例,该消息用于报告分机“600”的注册状态。

{"command": "userStatus", "userName": "600", "status": "online"}

每个事件消息都必定包含 'command' 参数,该参数是事件标识。目前该参数可以是以下值:

  • userStatus - 报告分机的注册状态
  • sipStatus - 报告 SIP 呼叫的状态
3.1 userStatus

'userStatus' 事件消息包含以下参数。

参数项 类型 描述
userName 字符串 分机名称或者号码
status 字符串 分机的当前状态,可以是以下值:
  • online - 当前分机已注册到 miniSIPServer
  • offline - 当前分机没有注册到 miniSIPServer,已经处于离线状态
3.2 sipStatus

miniSIPServer 通过本事件消息报告内部每一个 SIP 呼叫的具体状态。 由于不同的呼叫中有不同的呼叫参与方, 因此该事件消息有可能携带不同的参数。 这意味着下面这些参数实际上都是可选参数,会随着呼叫状态而有不同的变化。

参数项 类型 描述
sipID 字符串 miniSIPServer 内部资源唯一标识, 每个呼叫都有不同的标识。
callID 字符串 从 SIP 消息中获取的 'Call-ID' 头域。在 SIP 对话中是唯一标识。请注意,一个 SIP 对话中,可能包含不同的‘sipID’,是一对多的关系,但是只可能有一个'callID'对应。
stage 字符串 当前呼叫所处的呼叫阶段,可以是以下值:
  • dial - 拨号阶段,正在发起呼叫。
  • alert - 振铃,或者播放回铃音。
  • talk - 被叫已摘机,呼叫已应答
  • idle - 当前呼叫已释放
type 整数 呼叫的类型
  • 1 - 发起的呼叫
  • 2 - 接受的呼叫
address 字符串 用户的IP地址
from 字符串 主叫号码
to 字符串 被叫号码,或者目的号码
setupTime 字符串 呼叫发起时的时间戳
alertTime 字符串 被叫振铃时的时间戳
talkTime 字符串 被叫应答时的时间戳
idleTime 字符串 呼叫释放时的时间戳

下面是几个简单的示例:

(1) 发起呼叫时的事件消息

{"command": "sipStatus", "sipID": 823853058, "callID": "24F94C6671233752773D3106MSS311B0002", "stage": "dial", "type": 2, "address": "10.0.0.101:62988", "from": "600", "to": "601", "setupTime": "2018-09-03 16:45:09"}

(2) 呼叫释放时的事件消息

{"command": "sipStatus", "sipID": 823853058, "callID": "24F94C6671233752773D3106MSS311B0002", "stage": "idle", "idleTime": "2018-09-03 16:45:17"}