0

我正在尝试使用 ARI 来创建一个能够为多个星号实例提供服务的队列。在一些基本文档之后,似乎 ARI 是这样做的方法。

我现在所取得的成就是一个简单的拨号计划,可以将来电发送到我的 stasis 应用程序。一旦呼叫进入停滞状态,就会触发 STASIS_START 事件,我认为这是我的队列的入口点(这是我的第一个问题)。接到电话后,我将一些记录放入 H2 数据库并开始在该频道上播放 moh。

只是为了演示,我立即尝试为自由代理创建另一个频道来处理呼叫。

问题是,当我创建频道时,我必须设置应用程序,如果我设置相同的应用程序,我将触发一个新的 STASIS_START 事件(H2 DB 中的另一个条目 - 这是不需要的),但在这种情况下,这是一个假的,因为我认为只有在新呼叫进入我的“队列”时才应该触发 STASIS_START。我想在进入 stasis 应用程序的“真正的外部调用”上放置一些变量,然后检查到达的调用是否有这些变量......但我担心我做错了可能从架构的角度来看.

这里最好的方法是什么?

另外两个奖励问题:

  1. 当我可以直接在那个频道上播放一些 moh 时,为什么我要使用桥接器为等待的呼叫者播放 MOH?是因为桥使我能够记录或捕获 DTMF 事件吗?

  2. 我的假设是否正确,当我m trying to call for queue agents (in order to match these with the waiting call in the queue) I should usePOST /channels/create combined withPOST /channels/{channelId}/dial instead of usingPOST /channels` 会使用起源?

4

1 回答 1

0

我不是世界上最好的 ARI 程序员,但关于你的代码第二次调用 stasisStart() 的问题,我相信你几乎只有以下两个选择:

  1. 是的,实现你最初的全局变量想法,以标记第一次调用 stasisStart 并在之后每次都绕过它。我尝试了这种方法,它对我来说效果很好。
  2. 如果您可以以这样一种方式安排您的场景,即第一个接听的座席被视为一个电话,而转移到下一个座席被视为一个新的电话(尽管使用相同的呼叫者通道),那么您也许可以划分您的两个 ARI 应用程序中的代码,两个应用程序同时注册到 stasis,其中 agent1 用 app1 应答呼叫,然后将呼叫转移到 app2。
于 2020-12-28T17:46:10.383 回答