标签: asterisk-ari

节点ARI客户端| 连接方法没有触发回调?

所以,我开始玩Asterisk Restful Interface(ARI).

我创建了一个单独的快速应用程序来执行此操作.

我有一个正确配置的Asterisk 13运行实例.我知道这一点因为当我进入https://192.168.46.122:8088/ari/sounds浏览器时,系统会提示我输入用户名和密码,输入后会返回一个有效的JSON对象,其中包含预期的数据...

[
  {
    "id": "conf-now-unmuted",
    "text": "The conference is now unmuted.",
    "formats": [
      {
        "language": "en",
        "format": "gsm"
      }
    ]
  },
  {
    "id": "vm-nomore",
    "text": "No more messages.",
    "formats": [
      {
        "language": "en",
        "format": "gsm"
      }
    ]
  },
  {
    "id": "vm-review",
    "text": "press 1 to accept this recording press 2 to listen to it press 3 to rerecord your message",
    "formats": [
      {
        "language": "en",
        "format": "gsm"
      }
    ]
  },
  {
    "id": "demo-echodone", …
Run Code Online (Sandbox Code Playgroud)

javascript asterisk node.js asterisk-ari

5
推荐指数
1
解决办法
897
查看次数

Asterisk ARI - 在振铃前将通道传递给 Stasis

我的目标

将来电直接传递给 Stasis,并允许应用程序决定是向来电者播放振铃音还是忙音。

问题

使用我的 ARI 应用程序,如果我same => n,Ringing从拨号计划中省略该行,如果呼叫方挂断,Stasis 应用程序将返回错误。我可以在没有任何早期媒体的情况下挂断电话,直到我通过channel.play()ARI传递命令。

这个解决方案有两个问题:

  1. 当呼叫者挂断时,Stasis 应用程序会收到第二个 StasisStart,并返回Channel not found错误。
  2. 没有命令 channel.busy

有没有人有什么建议?

我目前能看到的唯一选择是确保所有用户都有语音邮件,并且永远不会播放忙音。不是每个人都想要/喜欢语音邮件,而且在来电者不知道他们的电话已接通的情况下接听电话并播放忙音是不道德的。

更新

使用以下拨号计划,我可以让它以所需的方式工作(如果用户不可用,则向用户播放),但出现错误:

扩展配置文件

[public]
exten => _.,1,NoOp()
same  =>    n,Stasis(myStasisApp, ${SIP_HEADER(to)})
same  =>    n,Busy(10)
same  =>    n,Hangup()
Run Code Online (Sandbox Code Playgroud)

我的应用程序

// The user is available
channel.ring();

// The user is busy
channel.continueInDialplan();
Run Code Online (Sandbox Code Playgroud)

错误

呼叫方挂机时发送另一个 StasisStart,其后是:

Unhandled rejection Error: {
  "message": "Channel not found"
}
Run Code Online (Sandbox Code Playgroud)

asterisk asterisk-ari

4
推荐指数
1
解决办法
2987
查看次数

标签 统计

asterisk ×2

asterisk-ari ×2

javascript ×1

node.js ×1