背景
在通讯领域,Asterisk 是一款常用的电话交换机软件。为了便于对接 Asterisk 服务,我们需要使用一个 AMI 连接器。本文将介绍 npm 包 @revall/asterisk-ami-connector,它是一个封装了 Socket 连接 Asterisk 的 AMI 的包,使用简便。
安装
安装 @revall/asterisk-ami-connector 很简单,只需要在终端执行以下命令即可:
npm install @revall/asterisk-ami-connector
使用方法
初始化
首先,我们需要初始化连接器。这里,我们需要传入连接 Asterisk 所需的配置项,如 AMI 的用户名、密码、Host 地址以及监听的端口号。
const connector = new AMIConnector({ username: 'admin', password: 'password', host: '192.168.1.10', port: 5038, });
监听事件
接下来,我们需要监听连接器的事件。AMi 连接器的事件分为两大类:系统事件和自定义事件。系统事件比如连接成功,连接断开等,而自定义事件即在管理端添加的事件。
-- -------------------- ---- ------- ----------------------- -- -- - ---------------- ------------ --- -------------------------- -- -- - ---------------- --------------- --- --------------------- ------- -- - --------------------- -------- ------- --- ------------------------ ---------- -- - --------------------- ----------- ---------- ---
其中,connect 和 disconnect 是系统事件,而 event 和 response 则是自定义事件。在监听到自定义事件之后,我们可以进行一些特定的操作,比如根据事件类型进行分类处理,或者把事件信息发送到其他客户端。
发送命令
最后,我们需要发送命令到 Asterisk 服务器上。这里,我们可以通过调用 send方法来发送命令,其参数为 AMI 命令的 Action 和可选的关联数据。在发送命令之后,我们会收到对应的响应或事件。
connector.send({ Action: 'Command', Command: 'dialplan show public', }).then((response) => { console.log('Command response:', response); }).catch((err) => { console.error('Command error:', err); });
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- - ------------ - - ------------------------------------------ ----- --------- - --- -------------- --------- -------- --------- ----------- ----- --------------- ----- ----- --- ----------------------- -- -- - ---------------- ------------ --- -------------------------- -- -- - ---------------- --------------- --- --------------------- ------- -- - --------------------- -------- ------- --- ------------------------ ---------- -- - --------------------- ----------- ---------- --- ---------------- ------- ---------- -------- --------- ---- -------- ------------------ -- - -------------------- ----------- ---------- -------------- -- - ---------------------- -------- ----- ---
结论
npm 包 @revall/asterisk-ami-connector 可以极大地简化连接 Asterisk 服务的工作。通过初始化连接器、监听事件和发送命令,我们可以在 Node.js 环境中轻松地与 Asterisk 进行交互。希望本文能对你们的工作有一定的指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005668a81e8991b448e2c81