Webフック通知

本機能は有償です。
本機能の料金を含む利用についての詳細・契約等については、担当営業までご連絡ください。

概要

Webフック通知を設定すると、VoiceX AI Viewerがデータ集積処理を完了したタイミングで、設定した任意の送信先に対してWebフック通知を送信することができます。

Webフック通知が送信されるタイミング

データ集積処理を完了するタイミングは、設定状況に合わせて以下の3パターンが存在します。

  1. 「テキスト化」「テキスト解析」が両方とも有効な場合、それらの処理と、簡易通話履歴の集積が完了したとき
  2. 「テキスト化」のみが有効な場合、その処理と、簡易通話履歴の集積が完了したとき
  3. 「テキスト化」「テキスト解析」が両方とも無効な場合、簡易通話履歴の集積が完了したとき

Webフック通知の設定

Webフック通知では以下の送信設定をおこなうことができます。

項目説明
HTTPリクエストメソッドWebフック通知の送信メソッドを POST, PUT のいずれかから設定します
通知先URLWebフック通知の送信先URLを設定します
HTTPヘッダーWebフック通知の送信時に付加したいコンテンツヘッダーを設定します
「key:value」フォーマットで複数個の設定が可能です
送信先サーバーでベーシック認証などが設定されている場合などに使用します
許容するレスポンスコード送信先サーバーから返戻がおこなわれたとき、本機能が「通知が正常終了した」と判定するHTTPステータスコードを設定します
符号なし整数(HTTPステータスコード)のフォーマットで、複数個の設定が可能です
この項目に設定されていないHTTPステータスコードが送信先サーバーから返戻された場合、本機能は送信エラーが発生したと判定します

特殊なケースを除き、201~209のHTTPステータスコードを許容することが推奨されます
リトライ回数送信先サーバーから「許容するレスポンスコード」が返戻されなかった場合や、例外により本機能がWebフック通知の送信に失敗した場合に、何回リトライをおこなうかを設定します
0回~5回までの
回数を設定することができます
リトライ間隔Webフック通知のリトライをおこなう際の、送信間隔を設定します
0秒~60秒までの間隔
を設定することができます
送信データ「Webフック通知で送信したい簡易通話履歴の要素名」を設定します
この項目が未設定の場合、「sc_uniqueid」のみが「送信データ」として通知されます
「送信データ」は Body に JSON フォーマットで格納され、「”content-type: application/json”」で送信されます
※詳細は次項「Webフック通知設定内容【送信データ】」をご参照ください

Webフック通知は、それぞれ異なる送信設定を3つまで定義することが可能です。
この機能は、複数のCRMと連携したり、自社の送信先サーバーを複数用意し、通知の受信を担保するなどの目的で利用できます。
送信設定が複数設定されている場合でも、Webフック通知は同じタイミングで送信されます。

Webフック通知の送信元 IP アドレスは 3.112.186.51 で固定されています。
送信先サーバー側でWebフック通知の受信する際、IP アドレス制限をおこなうことをお勧めします。

Webフック通知の送信データ

「Webフック通知の設定」における「送信データ」で指定可能な要素名は以下です。
これらの要素名は送信先サーバーで通知を受け取った際の、各データの要素名ともなります。
本機能は「送信データ」に設定された要素名を元に、簡易通話履歴からデータを抽出してWebフック通知をおこないます。

「送信データ」の Body は自由整形をおこなえません。
外部サービスとの連携時に特定の形式で Body の送信をおこなう必要がある場合、加工用に送信先サーバーをご用意頂くか、担当営業に相談の上、弊社 robostein のサービス利用をご検討ください。

要素名型概要
sc_uniqueidString通話ごとに一意に割り振られたユニークID
sc_startString(Date)通話の着信日時
形式:yyyy-mm-dd hh-mm-ss
sc_directionString通話タイプ
「IN」: 外線着信
「OUT」: 外線発信
「LOCAL」: 内線
sc_calleridnumString発信者の電話番号
非通知設定されている場合には「Restricted」が値となる
sc_calleridnameString発信者の電話番号、または発信者名
内線から発信された場合は内線名
“sc_calleridnum”が「Restricted」の場合は「非通知」が値となる
sc_dialednumString通話の宛先
外線から外線の場合:外線番号が値となる
内線から内線の場合:内線番号が値となる
sc_whoansweredString応答者の電話番号
recordingTimeDouble通話録音ファイルの録音時間
sc_durationIntegerVoice Xの全体処理が終了するまでにかかった時間
_registeredString(Date)簡易通話履歴の登録日時
形式:yyyy-mm-dd hh-mm-ss
_updatedString(Date)簡易通話履歴の更新日時
形式:yyyy-mm-dd hh-mm-ss
vrsv2.transcriptString通話内容のテキスト化データ
発信者/受話者の通話内容が混在した文字列として格納される
vrsv2.transcriptiondetailsArray/Objects通話内容のテキスト化データ
発信者/受話者の通話内容が分割され、時系列としてオブジェクト配列で格納される

・下記「送信データのサンプル」を参照
vrsv2.${プロンプトID}.titleStringテキスト解析の種別名
要素名の ${プロンプトID} には各種テキスト解析に紐づけられたユニークIDを指定する
 通話要約のプロンプトID:98f827cafc
 予約判定のプロンプトID:800907caa0
vrsv2.${プロンプトID}.detailString(JSON)テキスト解析の処理結果
データはJSON文字列で格納される
要素名の ${プロンプトID} には各種テキスト解析に紐づけられたユニークIDを指定する

 通話要約のプロンプトID:98f827cafc
 予約判定のプロンプトID:800907caa0

・下記「送信データのサンプル」を参照
送信データのサンプル
サンプルを閲覧する
{
  "http_header": {
    "x-forwarded-for": "3.113.140.132, 172.32.0.36",
    "connection": "upgrade",
    "host": "172.32.6.241:1880",
    "content-length": "1481",
    "x-forwarded-proto": "https",
    "x-forwarded-port": "443",
    "x-amzn-trace-id": "Root=1-678075dd-7477e2e262981f63212dd5df",
    "accept": "*/*",
    "accept-encoding": "gzip, deflate, br",
    "authorization": "bearer hogehoge",
    "content-type": "application/json",
    "user-agent": "node-fetch"
  },
  "http_body": {
    "sc_uniqueid": "pbx01-1719991122.41795",
    "sc_start": "2024-07-03 16:18:42",
    "sc_direction": "IN",
    "sc_calleridnum": "090********",
    "sc_calleridname": "090********",
    "sc_dialednum": "05018209051",
    "sc_whoanswered": "105",
    "recordingTime": 39.62,
    "sc_duration": 44,
    "_registered": "2024-07-03 16:21:06",
    "_updated": "2024-11-11 14:20:51",
    "vrsv2": {
        "transcript": "はい レストランです はい すいません 予約できるか お願いしたいんですけれども 何日の何時から何名で何のコースでしょうか えーと 本日の19時からでフルコースでお願いしたい あの 5名でフルコースで お願いしたいんですけれども はい 承知しました 連絡先の電話番号と名前を教えていただけますか 電話号は090-****-**** はい 私の名前は斉藤と申します あ 受け止まりました お待ちしております よろしくお願いします はい よろしくお願いいたします",
        "transcriptiondetails": [
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "はい レストランです",
                    "startMs": 0,
                    "endMs": 3000,
                    "start": "00:00:00,000",
                    "index": 2,
                    "end": "00:00:03,000"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "はい",
                    "startMs": 3000,
                    "endMs": 5000,
                    "start": "00:00:03,000",
                    "index": 2,
                    "end": "00:00:05,000"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "すいません 予約できるか お願いしたいんですけれども",
                    "startMs": 3240,
                    "endMs": 8240,
                    "start": "00:00:03,240",
                    "index": 1,
                    "end": "00:00:08,240"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "何日の何時から何名で何のコースでしょうか",
                    "startMs": 8000,
                    "endMs": 12000,
                    "start": "00:00:08,000",
                    "index": 2,
                    "end": "00:00:12,000"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "えーと 本日の19時からでフルコースでお願いしたい",
                    "startMs": 11740,
                    "endMs": 18430,
                    "start": "00:00:11,740",
                    "index": 1,
                    "end": "00:00:18,430"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "あの 5名でフルコースで お願いしたいんですけれども",
                    "startMs": 18430,
                    "endMs": 21740,
                    "start": "00:00:18,430",
                    "index": 1,
                    "end": "00:00:21,740"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "はい 承知しました",
                    "startMs": 21000,
                    "endMs": 23000,
                    "start": "00:00:21,000",
                    "index": 2,
                    "end": "00:00:23,000"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "連絡先の電話番号と名前を教えていただけますか",
                    "startMs": 23000,
                    "endMs": 27000,
                    "start": "00:00:23,000",
                    "index": 2,
                    "end": "00:00:27,000"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "電話号は090-****-****",
                    "startMs": 26740,
                    "endMs": 30940,
                    "start": "00:00:26,740",
                    "index": 1,
                    "end": "00:00:30,940"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "はい",
                    "startMs": 31000,
                    "endMs": 32000,
                    "start": "00:00:31,000",
                    "index": 2,
                    "end": "00:00:32,000"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "私の名前は斉藤と申します",
                    "startMs": 31440,
                    "endMs": 33440,
                    "start": "00:00:31,440",
                    "index": 1,
                    "end": "00:00:33,440"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "あ 受け止まりました お待ちしております",
                    "startMs": 33000,
                    "endMs": 36000,
                    "start": "00:00:33,000",
                    "index": 2,
                    "end": "00:00:36,000"
                },
                {
                    "fileName": "1719991271161.wav",
                    "transcript": "よろしくお願いします",
                    "startMs": 36440,
                    "endMs": 37620,
                    "start": "00:00:36,440",
                    "index": 1,
                    "end": "00:00:37,620"
                },
                {
                    "fileName": "1719991271830.wav",
                    "transcript": "はい よろしくお願いいたします",
                    "startMs": 37000,
                    "endMs": 39599,
                    "start": "00:00:37,000",
                    "index": 2,
                    "end": "00:00:39,599"
                }
        ],
        "98f827cafc": {
            "detail": "{\n  \"会話タイトル\": \"予約の確認\",\n  \"お客様情報\": {\n    \"名前\": \"斉藤\",\n    \"連絡先電話番号\": \"090-****-****\",\n    \"連絡先メールアドレス\": \"不明\"\n  },\n  \"要約\": \"エストランコムスクエアでの予約確認。19時からフルコースでの予約を希望。斉藤さんの連絡先は090-****-****。\"\n}",
            "title": "通話要約"
        },
        "800907caa0": {
            "detail": "{\"分類結果\":\"OK\",\"理由\":\"予約が成功したため\"}",
            "title": "予約判定"
        }
    }
  },
  "http_method": "POST"
}
※ 「送信データ」のサンプル
vrsv2.transcriptiondetails のフォーマット

通話内容のテキスト化データのうち、「vrsv2.transcriptiondetails」が精度の高いデータとして使用されます。「vrsv2.transcriptiondetails」はオブジェクト配列の形式で、各オブジェクトには以下のデータが可能されます。

パラメータ説明
startこの会話内容を喋り始めた時間
endこの会話内容が喋り終わった時間
index話者
1:電話をかけた人
2:電話を受けた人
transcript会話内容

Webフック通知の送信結果

『Web フック通知』が一度でも有効化されると、「簡易通話履歴:検索条件入力欄」と「簡易通話履歴:表示テーブル」にWebフック通知に関わる項目が表示されます。

  1. 簡易通話履歴:検索条件入力欄
項目説明
Webフック通知Webフック通知の結果に対して、以下から選択した送信結果で検索をおこないます
「通知成功」: Webフック通知が成功した
「通知失敗」: Webフック通知に失敗した
「未通知」: 例外によりWebフック通知がおこなわれなかった

複数の送信設定が定義されている場合、すべての送信結果に対してOR検索をおこないます
  1. 簡易通話履歴:表示テーブル
項目説明
Webフック通知Webフック通知の結果と、Webフック通知結果の詳細パネルへのリンクを表示します(詳細を見る)
Webフック通知の結果は「通知{$送信設定No}:」に続けて以下の形式で表示されます
「通知成功」: Webフック通知が成功した
「通知失敗」: Webフック通知に失敗した
「未通知」: 例外によりWebフック通知がおこなわれなかった

「-」: 中途契約または途中解約などによりWebフック通知が実行されなかった
{$送信設定No} には送信設定の項番が 1, 2, 3 のいずれかで表示されます。送信設定を1つしか定義していない場合には常に「通知1:{$送信結果1}」で表示されますが、複数の送信設定が定義されている場合には「通知1:{$送信結果1}」「通知2:{$送信結果2}」「通知3:{$送信結果3}」といった形式で縦並びに表示されます

Webフック通知結果詳細

簡易通話履歴から「Webフック通知」列のボタンをクリックすると、詳細パネルが表示されます。

詳細パネルには以下の内容が表示されます。

表示内容説明
通知結果「通知成功」「通知失敗」「未通知」のいずれかを表示をします
「通知成功」「通知失敗」の場合には、返戻されたHTTPステータスコード
も表示されます
最終更新日時送信結果が最後に更新された日時を表示します
送信先サーバーからの返戻を受け取った日時、または例外により送信できないと判断された日時として扱われます
再送実行日時Webフック通知の再送が最後におこなわれた日時を表示します
送信設定でリトライが設定されており、それによって再送がおこなわれた場合にも更新されます
通知再送Webフック通知の手動再送ボタンで、クリックすると再送の確認ポップアップが表示され、承諾するとWebフック通知の再送がおこなわれます
この再送時に使用される送信設定は、「以前に通知を実行したときの送信設定」ではなく、「現在設定されている最新の送信設定」を使用します
※Webフック通知の手動再送では、送信設定の「リトライ回数」は0として扱われ、自動リトライはおこなわれません
リクエスト情報Webフック通知をおこなった際の送信設定を表示します
セキュリティ保護の観点から、headers のデータは非表示になります
※実際に header, body として送られたデータではありません
再試行回数送信設定による自動リトライ、及び通知再送による手動再送の合計回数が表示されます
レスポンス情報送信先サーバーから返戻された実際のデータが表示されます

複数の送信設定が定義されている場合にはスクロールバーが表示され、同様の項目をもつそれぞれの送信結果の詳細が表示されます。

Webフック通知の設定方法について

Webフック通知の設定には弊社サポートによる対応が必要になります。
Webフック通知を設定したい場合、「Webフック通知の設定」で記載されている送信設定(最大3つまで)を記載の上、「お問い合わせ」から弊社サポートにご依頼ください。