コールトラッキングには、静的と動的のいくつかのタイプがあります。 静的なコールトラッキングの場合、各広告チャネルに番号が割り当てられ、割り当てられます。その後、番号を介したすべてのコールが記録され、統計情報の分析により、最も効果的なチャネルが示されます。 限られた数のチャネルを追跡する必要がある場合、この方法はうまく機能します。 現代の世界では、広告主はチャネルだけでなく特定のキーワードの有効性も追跡し、個々の顧客をキャッチしたいと考えています。これにより、最終的に多数の番号が必要になります。
この場合、彼らは動的なコールトラッキングの使用を開始します。動的なコールトラッキングでは、すべてのチャネルで使用される電話番号のプールがありますが、その番号はその場でサイト訪問者に接続され、クライアントが番号を呼び出すと、システムはこれを追跡します。 サイトへの訪問数と、異なるチャネルからサイトにアクセスする訪問者を追跡するために必要な数との間には相関関係があるため、コール追跡サービスは通常、サービスの価格をリソースの出席に結び付けます。
まあ、それはすべて理論で終わりました、私たちは練習に進むことができます。 VoxImplantプラットフォームに接続された追跡番号のプールのオプションを検討します。これは、着信コールの処理とクライアント番号への転送を担当します。 呼処理のシナリオでは、バックエンドからHTTP(S)に転送するデータを受信し、呼情報を記録することを想定しています。 呼び出しが成功した場合、日付、継続時間、会話の録音のURL、呼び出しが来た番号、呼び出しをリダイレクトした番号を保存します。呼び出しが行われなかった場合は、エラーに関する情報を追加します。 実装に移りましょう:
- VoxImplantアカウントを登録して有効化する
- コントロールパネルに移動し、 [ アプリケーション]セクションでアプリケーションを作成します。トラッキングと呼ぶことができます
- [ シナリオ]セクションで、次の内容の新しいスクリプトを作成します。
var outbound_call, dialed_number, agent_number, record_url, call_date, call_length = 0, failure_code, failure_reason, wsURL = "http://yourwebservice.com/api", // , - connected = false; // VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { // UTC- call_date = new Date().toUTCString(); // , dialed_number = e.destination; // URL wsURL += "?dialed_number=" + encodeURIComponent(dialed_number); // HTTP- -, Net.httpRequest(wsURL, function (res) { if (res.code == 200) { // agent_number = res.text; // outbound_call = VoxEngine.callPSTN(agent_number, dialed_number); // VoxEngine.easyProcess(e.call, outbound_call, handleCallsConnected); outbound_call.removeEventListener(CallEvents.Disconnected); outbound_call.addEventListener(CallEvents.Disconnected, handleCallDisconnected); outbound_call.removeEventListener(CallEvents.Failed); outbound_call.addEventListener(CallEvents.Failed, handleCallFailed); } else { // - - , - e.call.reject(); } }); }); // VoxEngine.addEventListener(AppEvents.Terminating, function (e) { // if (connected) { Logger.write("Dialed number: " + dialed_number + " Agent number: " + agent_number + " Date: " + call_date + " Length: " + call_length + " Record URL: " + record_url); // HTTP Net.httpRequest } else { // Logger.write("Call failed. Code: " + failure_code + " Reason: " + failure_reason); // HTTP Net.httpRequest } }); // function handleCallFailed(e) { failure_code = e.code; failure_reason = e.reason; VoxEngine.terminate(); } // function handleCallDisconnected(e) { call_length = e.duration; VoxEngine.terminate(); } // function handleCallsConnected(call1, call2) { connected = true; outbound_call.addEventListener(CallEvents.RecordStarted, function (e) { record_url = e.url; }); outbound_call.record(); // start call recording }
名前を付けて保存します。 Webサービスに転送用の番号を返させ、コード内のwsURLを変更することを忘れないでください
- 番号付きの2つのオプションがあります- 直接VoxImplantに移動するか、SIP設定でトランクのアドレスを指定して 、そこから通話をプラットフォームに送信します。
- 前に作成したトラッキングアプリケーションの編集に進み、[ルール]タブで、何らかの名前を付ける必要がある新しいルールを作成します(たとえば、InboundCalls、Patternは残すことができます)。スクリプトをAssignedにドラッグして保存します。
- 電話することができます
これは、コールトラッキングにVoxImplantを使用する概念を示す最も単純なシナリオです。これを複雑にして、一度に複数の番号に電話をかけるか、複数の番号に順番にダイヤルしようとすることができます。 使用可能な数よりも多くの番号が必要な場合は、番号を呼び出すときにクライアントが入力する内線番号をいつでも使用できます。 この場合、次のようなキープレス処理をコードに追加する必要があります。
var inbound_call, ext = ''; // VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { inbound_call = e.call; inbound_call.addEventListener(CallEvents.ToneReceived, function (callevent) { callevent.call.stopPlayback(); ext += callevent.tone; if (ext.length == 4) { wsURL += "?dialed_number=" + encodeURIComponent(dialed_number) + "&ext=" + ext; // Net.httpRequest(wsURL, function (res) { if (res.code == 200) { // agent_number = res.text; // outbound_call = VoxEngine.callPSTN(agent_number, dialed_number); // VoxEngine.easyProcess(e.call, outbound_call, handleCallsConnected); outbound_call.removeEventListener(CallEvents.Disconnected); outbound_call.addEventListener(CallEvents.Disconnected, handleCallDisconnected); outbound_call.removeEventListener(CallEvents.Failed); outbound_call.addEventListener(CallEvents.Failed, handleCallFailed); } else { // - - , - inbound_call.reject(); } }); } }); inbound_call.addEventListener(CallEvents.Connected, function (callevent) { inbound_call.say(", .", Language.RU_RUSSIAN_FEMALE); }); inbound_call.answer(); });
おそらく、あなたは多くの興味深いことを思いつくことができますが、これはこの記事の範囲には含まれていません。 本格的なコールトラッキングサービスには多くの作業が必要であり、これを実行する既製のサービスにはお金がかかるだけではないことを覚えておくことが重要です。 コメントの質問にお答えします。