2017-03-03 22 views
0

私は、このガイドをベースにしてTaskrouterを使用してコールセンタータイプのシステムを実装しようとしています。 https://www.twilio.com/docs/tutorials/walkthrough/dynamic-call-center/ruby/rails プロジェクトの所在地はコールの詳細に影響する場合はオーストラリアです。Twilio Taskrouterで電話が鳴っても止まらない

このシステムは複数の番号(ワーカー)にダイヤルし、通話が受け入れられたりキャンセルされても電話が鳴り続けるという問題が発生しました。 すなわちTaskrouterがWorkers AとBを呼び出し、Aが最初にピックアップすると、それらは顧客に接続されますが、Bは引き続き呼び出し音を鳴らします。 Bが電話を拾うと、ハングアップトーンで挨拶されます。 Bがピックアップするまで、少なくとも数分はリンギングを続けることができます。 誰もピックアップせず、コールが単にタイムアウトしてボイスメールにリダイレクトされた場合も同様です。あなたが想像することができるように、無限に鳴っている電話は、特に反対側に誰もいない場合、かなり迷惑です。

上記のガイドを変更せずに(ローカルで設定するための最小限の変更を除く)、この問題を再現できました。ワーカーは同時にワーカーにダイヤルするのではなく、最初の行を数秒間ダイヤルしてから次のワームに移動します。

私の解釈は、Taskrouterが作業者にダイヤルしていますが、ダイヤルを終了するときには更新しないで、ワークフローの次の段階に進むことです。これは、ワーカーステータスを更新するので、タイムアウトしたかどうかはわかりますが、実際のコールは更新されません。

私はこれに任意の解決策を探しているとhaventは、以下のを除いて、それについて多くを発見した:これらは、具体的Taskrouterに適用されますが、必要と通話ができます終了することを示唆していない How to make Twilio stop dialing numbers when hangup() is fired? https://www.twilio.com/docs/api/rest/change-call-state

更新して完了させる。 私はこれを実装できるかどうかはわかりませんが、ワークフロー内でダイヤルされているすべてのコールに対して同じCallSidを使用しているように見えるため、各コールを分離することは不可能/不可能になり、アクティブコールも終了します。 また、Taskrouterが自動的にこれをやってくれるのは間違っているようですので、私はあまりにも頻繁に修正して物を壊す前にこれについて尋ねたいと思っていました。

チュートリアルコードを使用して誰かがこの問題に遭遇したことがありますか? テスト時に私は固定電話番号ではるかに多くの問題を認識しました。これは携帯電話には独自のタイムアウト/リダイレクトがあるためです。 VOIPはすぐに通話に応答するように見えるので、少し違った動作をします。

ありがとうございました!

+2

この問題に固有のコードがないか、他の人がそのコードを複製するのを助けたり、コードで解決できる場合を除き、これはスタックオーバーフローの問題ではありません。 – tadman

+0

コメントありがとうございます。 Twilioによって提供されたチュートリアルコードを使用するだけで、問題を再現することができます。そのため、投稿に何も含まれていませんでした。また、コールを直接処理するわけではないので、どのコードをハイライト表示するのかはっきりしていませんでしたが、使用する間接メソッドと詳細を含めるように編集します。 – alx

+0

[Twilio support] (https://www.twilio.com/help/contact)彼らは正しい方法であなたを導き、必要に応じて内部的にフィードバックすることができます。 – philnash

答えて

0

これを回避するための現在の提案は、即時デキュー命令を発行するのではなく、受信者がインバウンドコールを受け入れることを希望するときにREST APIでissue a Call instructionを発行することです。

これにより、2つのコールをつなぎ合わせるアウトバウンドコールが作成されるため、同じインバウンド発信者のアウトバウンドコールは一度には多くなりません。

あなたの実装では、あなたが達成したい動作に依存します:

  1. あなたはサイマルダイヤルする労働者の両方をしたいですか?
  2. 作業をワーカーに送信したい場合は、まずタスクを受け入れるためにクリックします。 は、コールをルーティングしますか?

これは、通話を発行する前に労働者が予約(reservation.accepted)を受け入れるべきだと言うシナリオです。

#1の場合は、呼び出し命令またはデキュー命令を発行できます。キーは、DequeueStatusCallbackUrlまたはCallStatusCallbackUrlを提供して、コールの進行状況イベントを受信することです。アウトバウンドコールの1つが接続されたら、他の関連するコールを完了する必要があります。したがって、あなたのアプリ内でその決定を下すには、AssignmentCallbacksまたはEventCallbacksを使用して、どの予約に結びついている発信コールを残念ながら追跡する必要があります。