コールバック関数で着信コールをキューに入れます

会社のコールセンターに電話をかけるとき、私たちはしばしば回線で長い待ち時間に直面します。私たちの多くは、私たちの生活の中で少なくとも数十分間、迷惑なメロディーを聞いていました。 最も興味深いのは、特に8-800に電話する場合、会社があなたが電話をかけるコールセンターに対して完全に不採算であることです。 幸いなことに、この問題を解決する方法は長い間考案されてきました-それはコールバックまたはコールバックです。 このメソッドの本質は非常に簡単です:発信者は、番号がサービスキューに残っている間にコールセンターから切断するように求められ、ターンが始まるとすぐに、ダイヤルされ、コールが配信されたオペレータに接続されます。 したがって、私たちは1石で数羽の鳥を殺します。コールセンターの回線は占有されておらず、費用のかかる8〜800分は費やされず、クライアントは回答を見越して不必要な刺激を経験しません。 コールセンターのソフトウェアベンダーは、そのような機能に非常に適切なお金を求めています。この機能をVoxImplantプラットフォームを使用して非常に簡単かつ迅速に実装する方法について説明します。

VoxImplantを使用したコールセンターの構成について既に書いたので、この記事ではこの部分を繰り返さず、コールバック関数を実装するためにスクリプトで行う必要のある変更に焦点を当てます。 すぐに、この機能は、キューを操作するためにACDモジュールが接続されているシナリオでのみ使用できることに注意してください。 コールバック関数を考慮して、着信呼び出しを処理するスクリプトは次のようになります。

//   ACD require(Modules.ACD); var request, // <--     ACDRequest originalCall, // <--   callerid, statusInterval, callback = false; // <--   - //     VoxEngine.addEventListener(AppEvents.CallAlerting, handleInboundCall); //    function handleInboundCall(e) { originalCall = e.call; callerid = e.callerid; //   originalCall.addEventListener(CallEvents.Connected, handleCallConnected); originalCall.addEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); originalCall.addEventListener(CallEvents.Failed, cleanup); originalCall.addEventListener(CallEvents.Disconnected, cleanup); //    originalCall.answer(); } //   function cleanup(e) { if (request) { //     -  request.cancel(); request = null; } //   if (!callback) VoxEngine.terminate(); } //         function handlePlaybackFinished(e) { e.call.startPlayback("http://cdn.voximplant.com/toto.mp3"); } //     function handleToneReceived(e) { if (e.tone == "#") { callback = true; originalCall.hangup(); // <--        } } //   function handleCallConnected(e) { //       originalCall.handleTones(true); originalCall.addEventListener(CallEvents.ToneReceived, handleToneReceived); //     'MainQueue',       request = VoxEngine.enqueueACDRequest("MainQueue", callerid); //          request.addEventListener(ACDEvents.Queued, function (acdevent) { request.getStatus(); }); //           request.addEventListener(ACDEvents.Waiting, function (acdevent) { var minutesLeft = acdevent.ewt + 1; var minutesWord = " ."; if ((minutesLeft > 10 && minutesLeft < 20) || (minutesLeft % 10 > 4 || minutesLeft % 10 == 0)) { minutesWord = " ."; } else if (minutesLeft % 10 == 1) { minutesWord = " ."; } originalCall.say("      " + acdevent.position + ".       " + (acdevent.ewt + 1) + minutesWord + "                  .", Language.RU_RUSSIAN_FEMALE); }); //    request.addEventListener(ACDEvents.OperatorReached, function (acdevent) { if (callback) { //      ,        ,       acdevent.operatorCall.say(",    .", Language.RU_RUSSIAN_FEMALE); acdevent.operatorCall.addEventListener(CallEvents.Disconnected, VoxEngine.terminate); acdevent.operatorCall.addEventListener(CallEvents.PlaybackFinished, function (callevent) { //  .   caller id  ,       Voximplant. const callerId = "+1234567890" originalCall = VoxEngine.callPSTN(callerid, callerId); originalCall.addEventListener(CallEvents.Connected, function (callevent) { VoxEngine.sendMediaBetween(acdevent.operatorCall, originalCall); clearInterval(statusInterval); }); originalCall.addEventListener(CallEvents.Failed, cleanup); originalCall.addEventListener(CallEvents.Disconnected, cleanup); }); } else { VoxEngine.sendMediaBetween(acdevent.operatorCall, originalCall); acdevent.operatorCall.addEventListener(CallEvents.Disconnected, VoxEngine.terminate); clearInterval(statusInterval); } }); //    -       request.addEventListener(ACDEvents.Offline, function (acdevent) { originalCall.say(" ,    . ,   .", Language.RU_RUSSIAN_FEMALE); originalCall.addEventListener(CallEvents.PlaybackFinished, function (e) { VoxEngine.terminate(); }); }); //      30  statusInterval = setInterval(request.getStatus, 30000); }
      
      





それだけです。 ACDについての前のチュートリアルのスクリプトをわずかに修正したため、コールバックキューを取得しました。 変更したベーススクリプトはgithub.com/voximplant/acdで入手でき、オペレーター向けの最も単純なWeb背景も入手できます。



HTTP APIを介してキューを操作する



前の例は、最初に着信があった場合に作成されましたが、実際には、クライアントがサイトですぐにコールバックを注文し、処理キューに入れる必要がある場合があります。 一般に、キューは抽象エンティティであり、呼び出しだけでなく、たとえば電子メール、メッセージなどもスローできます。 この状況では、スクリプトはStartScenarios HTTP APIメソッドを介して実行する必要があり、スクリプト自体はわずかに変換されます。

 var displayName, callback = true; //     StartScenarios VoxEngine.addEventListener(AppEvents.Started, function(e) { var data = VoxEngine.customData(); //   script_custom_data         : data = data.split(":"); callerid = data[0]; displayName = data[1]; Logger.write("Put "+displayName+" with number "+callerid+" in a queue"); //     'MainQueue' request = VoxEngine.enqueueACDRequest("MainQueue", callerid); // ...     ,      });
      
      







PSもしも...



「コールセンターでVoxImplant Web SDKを使用して作成されたWeb電話の代わりにSIP電話を使用する場合はどうなりますか?」

「奇妙なことに、これは可能ですが、これについては別の記事で詳しく説明します。」



All Articles