通知または調査の自動呼び出しを行う





場合によっては、企業が顧客の一部に電話して何かについて通知する必要がある場合や、サービスの質に関する調査を実施する場合があります。 この問題はさまざまな方法で解決できますが、この場合は、Javascript / Webサービスの処理に慣れていて、IPテレフォニーシステムの機能を詳しく調べたくないWeb開発者が解決する必要があるという事実から進めます。 彼にとって幸いなことに、適切なツールがあります。これについては、以下で詳しく説明します。



そのため、自動呼び出しの実装には、 VoxImplantプラットフォームと、それに組み込まれた呼び出しリストサブシステム(CallList)を使用します。 これに同意したそれらの人々にだけ自動化された呼び出しをすることができることにすぐに注意されるべきです。 電話スパムはSMSスパムや電子メールスパムよりも優れているため、人々を再び悩ませる必要はありません。

いくつかのシナリオを見てみましょう-イベントの通常の通知(たとえば、アクティベーションコードメッセージや医療機関への訪問のリマインダー)とサービスの品質に関する調査。



アカウント設定



VoxImplantの場合、ファイルの各行で実行されるスクリプトで使用できる、番号のリストと各番号の追加情報を含むCSVファイルが、HTTP要求を介して入力に送信されます。 最初の行は、パラメータの名前を含む必須のタイトルであるため、後でこれらのパラメータをスクリプトで使用できます。 システムがこの文字列を処理する方法に影響するシステムパラメータもあります。 次の例を見てみましょう。



user_id;first_name;last_name;phone_number;activation_code 0;;;74951234567;101102
      
      







これは、呼び出すCSVファイルのコンテンツです。 VoxImplantスクリプトを呼び出すと、このデータはJSON形式になり、目的の目的に使用できます。 次のVoxEngineスクリプトを作成します。



 require(Modules.CallList); //   CallList require(Modules.AI); var call, first_name, last_name, phone_number, activation_code, playbackCounter = 0; //     VoxEngine.addEventListener(AppEvents.Started, function (e) { var data = VoxEngine.customData(); // <--      CSV  JSON- data = JSON.parse(data); user_id = data.user_id; first_name = data.first_name; last_name = data.last_name; phone_number = data.phone_number; activation_code = data.activation_code; Logger.write(" " + first_name + " " + last_name + "   " + phone_number); //  call = VoxEngine.callPSTN(phone_number, "+1234567890"); // <--     callerid,      CallerIDs     Voximplant //     call.addEventListener(CallEvents.AudioStarted, function(){AI.detectVoicemail(call)}); //    call.addEventListener(CallEvents.Connected, handleCallConnected); call.addEventListener(CallEvents.Failed, handleCallFailed); call.addEventListener(CallEvents.Disconnected, handleCallDisconnected); call.addEventListener(AI.Events.VoicemailDetected, voicemailDetected); }); function voicemailDetected(e) { //  ? if (e.confidence >= 75) { VoxEngine.CallList.reportError("Voicemail", VoxEngine.terminate); return; } } //  function handleCallConnected(e) { connected = true; setTimeout(function () { e.call.say(", " + first_name + "!   : " + activation_code, Language.RU_RUSSIAN_FEMALE); }, 500); e.call.addEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); } //   function handlePlaybackFinished(e) { e.call.removeEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); playbackCounter++; //        if (playbackCounter == 4) { e.call.hangup(); } else { //          setTimeout(function () { e.call.say("  : " + activation_code, Language.RU_RUSSIAN_FEMALE); e.call.addEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); }, 2000); } } function handleCallFailed(e) { //  ,     //               //   ,    ,    result_data // CSV-      result, msg, code  JSON- CallList.reportError({ result: false, msg: "Failed", code: e.code }, VoxEngine.terminate); } function handleCallDisconnected(e) { //   ,  ,   // result  duration     result_data // CSV-     JSON- CallList.reportResult({ result: true, duration: e.duration }, VoxEngine.terminate); }
      
      





スクリプトを保存し、スクリプトをフックするアプリケーションとアプリケーションルールを作成します。 パターンは変更せずに残すことができ、HTTPリクエストを介していつ起動されるかは関係ありません。



HTTP APIを介した呼び出し



http://voximplant.com/docs/references/httpapi/#toc-createcalllistの呼び出しを開始するAPIメソッドでは、要求パラメーターを分析して、すべてが明確になるようにします。







呼び出しを開始するいくつかの関数を使用して、次のPHPファイルを作成しましょう。



 <?php define("API_URL", "https://api.voximplant.com/platform_api/"); define("API_KEY", " api key"); define("ACCOUNT_NAME", " account name"); define("RULE_ID", id-); function httpRequest($url,$params) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); if (isset($params["post"])) curl_setopt($ch, CURLOPT_POST, 1); if (isset($params["post_data"])) curl_setopt($ch, CURLOPT_POSTFIELDS, $params["post_data"]); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/csv')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec ($ch); curl_close ($ch); return $server_output; } function createCallList($file) { $url = API_URL . "CreateCallList/?" . "account_name=" . ACCOUNT_NAME . "&api_key=" . API_KEY . "&rule_id=" . RULE_ID . "&max_simultaneous=10" . "&num_attempts=2" . "&interval_seconds=60" . "&priority=1" . "&name=CallList"; $data = file_get_contents($file); $params = array('post' => true, 'post_data' => $data); $result = httpRequest($url, $params); echo $result; } function getCallListDetails($list_id, $output = "json") { $url = API_URL . "GetCallListDetails/?" . "account_name=" . ACCOUNT_NAME . "&api_key=" . API_KEY . "&list_id=" . $list_id . "&output=" . $output; $params = array(); $result = httpRequest($url, $params); echo $result; } createCallList(URL-CSV-); //getCallListDetails($list_id, "csv"); ?>
      
      





getCallListDetailsの実行結果は、次のようになります(正常に電話された場合)。

 "activation_code";"user_id";"last_name";"phone_number";"first_name";"__end_execution_time";"__start_execution_time";"result_data";"last_attempt";"attmepts_left";"status_id";status 101102;0;;74951234567;;;;"{""result"":true,""duration"":27}";"2014-11-24 19:21:39";1;2;Processed
      
      





当然、 http://voximplant.com/docs/references/httpapi/GetCallLists.htmlへのすべての呼び出しのリストを取得するか、 http://voximplant.com/docs/references/httpapi/StopCallListProcessing.htmlの呼び出しを停止できます。



投票シナリオの例



タスクを少し複雑にしましょう-呼び出しに加えて、サービス品質の評価を入力し、呼び出し結果に保存するように求めます。 これを行うには、関数handleCallConnected、handleCallDisconnectedを変更し、新しいhandleToneReceivedを追加する必要があります。

 function handleCallConnected(e) { connected = true; e.call.handleTones(true); // <--    setTimeout(function () { e.call.say(", " + first_name + "!      , "+ ",       .", Language.RU_RUSSIAN_FEMALE); }, 500); e.call.addEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); e.call.addEventListener(CallEvents.ToneReceived, handleToneReceived); } var rating; function handleToneReceived(e) { e.call.removeEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); e.call.stopPlayback(); rating = e.tone; e.call.say("    !", Language.RU_RUSSIAN_FEMALE); e.call.addEventListener(CallEvents.PlaybackFinished, function(e) { e.call.hangup(); }); } function handleCallDisconnected(e) { CallList.reportResult({ result: true, duration: e.duration, rating: rating, }, VoxEngine.terminate); } //   function handlePlaybackFinished(e) { e.call.removeEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); playbackCounter++; //        if (playbackCounter == 4) { e.call.hangup(); } else { //          setTimeout(function () { e.call.say(",       .", Language.RU_RUSSIAN_FEMALE); e.call.addEventListener(CallEvents.PlaybackFinished, handlePlaybackFinished); }, 2000); } }
      
      





結果は次のようになります。

 "user_id";"last_name";"phone_number";"first_name";"__end_execution_time";"__start_execution_time";"result_data";"last_attempt";"attmepts_left";"status_id";status 0;;74951234567;;;;"{""result"":true,""duration"":27,""rating"":""3""}";"2014-11-24 20:17:13";1;2;Processed
      
      





さて、ここではVoxImplantを使用したいくつかの呼び出しシナリオを見てきました。 必要に応じて、スクリプトから外部の世界にHTTPリクエストを直接送信し、リアルタイムでデータを転送するか、ASRモジュールを音声認識に接続して、音声で直接質問に回答できるようにすることができます。 必要に応じて、SIPインフラストラクチャ経由でコールを送信できます。スクリプトでcallPSTNをcallSIPに変更し、そこで設定を転送します。 一般的に、この投稿があなたにとって有用であり、あなたの問題、あなたへの有用な呼び出しを解決するのに役立つことを願っています!



All Articles