2023.05.09
2024.02.02

【挑戦編】GPT-3.5 Turbo版「ChatGPTで通話内容を要約して、オペレーター業務を効率化させたい」をやってみる

BIZTELでは、「API連携機能」を使って世の中にある様々なツールと組み合わせることで、多種多彩な便利機能を実装することができます。

前回の記事(BIZTEL APIアイデアベース Vol.2)では、ChatGPTを使ってお客さまとの通話内容を要約し、さらにSalesforceへ記録をする仕組みを紹介しました。

今回は、その実現方法について具体的に説明しながら設定していきたいと思います。

※ ChatGPT-4 での設定方法はこちらです。

やってみたいこと

多くのコールセンターでは、オペレーターはお客さまとの通話終了後、応対内容の記録を手動で登録しています。

今回は、いま話題となっているOpenAIのサービス「ChatGPT」を使って、お客さまとの会話を要約し、その結果をSalesforceに自動登録させてオペレータの後作業を効率化してみたいと思います。

チャレンジャー

使用するツール・利用ライセンス

BIZTELの利用ライセンス

・コールセンタープランのご契約
※今回ご紹介する連携を行うためには、BIZTELのバージョンが3.7.20以上である必要があります。

BIZTELで必要なオプション

・API連携コールアクション
・音声認識連携

BIZTEL以外に必要なもの

・Salesforce
AmiVoice API
OpenAI API

※ OpenAI APIの使用には、従量制の料金が適用されます。料金に関する詳細は、OpenAIのWebサイトをご覧ください。

セキュリティ面から、会話内容をクローズドな環境で運用されたい場合は、Microsoft社が提供するAzure OpenAI APIも利用可能です。

※ 詳細な条件についてはお問い合わせください。

動作の全体図

設定の流れ

OpenAI事前準備
OpenAI APIを利用してお客さまとの会話を要約するため、APIキーの発行を行います。

Salesforce事前準備
SalesforceのAPIを利用して通話内容を記録するため、OAuth認証接続アプリケーションの作成とToDoオブジェクトのページレイアウト変更を行います。

BIZTEL設定
お客さまとの会話をテキスト化するため、音声認識連携の設定を行います。
さらに、会話を要約してSalesforceに記録するために、コールアクションの設定を「コールアクションテンプレート機能」を利用して行います。

設定の実践

OpenAI事前準備

1.クレジットカード登録

OpenAIのアカウントを登録すると無料トライアル枠が与えられます(2024年1月時点:アカウント登録後3ヵ月間で5ドル分)。
この無料トライアル枠を超えて利用した場合、OpenAI APIを利用できなくなるため、事前にクレジットカード登録を行います。

OpenAIの左メニューから、Settings→Billingを選択して「Add payment details」ボタンをクリックし、画面に従いクレジットカード登録作業を進めてください。

「個人アカウント」または「法人アカウント」を選択。

画面に従って、クレジットカード情報及び住所等を設定します。

5ドル以上を初期購入します。
※購入額、および自動リチャージの設定は任意です。

※上記のご案内は、2024年1月時点の情報です。詳しくは、OpenAI Webサイトをご覧ください。

2.OpenAI APIキー発行

こちらからOpenAIにログインしてください。
画面右上のアカウントアイコンをクリックして「View API keys」を選択します。


「API keys」のページに遷移するので「+ Create new secret key」ボタンをクリックします。


APIキーが発行されるので、赤枠のボタンをクリックしてAPIキーをコピーしてください。


Salesforce事前準備

1.OAuth認証の接続アプリケーションを作成

こちら「設定の実践 1.Salesforce 設定準備」を参照しながら、Salesforce のOAuth認証のアプリケーション作成と鍵情報の確認を行います。

2.ToDoオブジェクトのページレイアウトを変更

以下が連携に必要な項目なので、任意のレイアウトを定義してください。

BIZTEL設定

1.音声認識連携

お客さまの音声をテキスト化するための設定を行います。

※設定方法については、こちら「2. 音声認識連携の設定方法」をご参照ください。
※別途、アドバンスト・メディア社の「AmiVoice API」 のご契約が必要です。

2.OAuthアカウント設定

BIZTELとSalesforceを連携するためのOAuth設定は、こちら「設定の実践 2.BIZTELでのOAuth設定」をご参照ください。

3.コールアクション連携

お客さまとの会話を要約してSalesforceに記録するコールアクションの設定を、「コールアクションテンプレート機能」を利用して行います。

今回は、ChatGPTへ「お客さまとの会話を300文字以内で箇条書きで要約」と指示します。

<コールアクション連携 手順の概要>

Ⅰ  テキストエディタを利用して、コールアクションテンプレートを作成
Ⅱ  BIZTEL管理画面から、コールアクションテンプレートをインポート
Ⅲ  BIZTEL管理画面から、コールアクション連携を編集
  OAuthアカウント設定 :4件編集
  紐づけ先が特定できない時のレコードID1件編集
  OpenAI APIキー:1件編集
  ※合計6件修正することで設定が完了します。
Ⅳ お客さまの業務に応じて、ChatGPTへの指示を調整

<コールアクション連携 手順の詳細>

Ⅰ コールアクションテンプレートを作成
以下のテキストをすべてコピーして、テキストエディタにペーストして保存してください。

注意事項
●ファイルはJSON形式であるため、ファイルの拡張子は「.json」にしてください。
●文字コードはUTF8で保存してください。

{
  "version_name": "3.7.20",
  "version_hash": "b3526eb",
  "name": "ChatGPT連携(0417)",
  "memo": null,
  "api_nodes": [
    {
      "api_event_type": 100,
      "api_link_type": 2,
      "error_response_status_code_pattern": null,
      "execution_order": 1,
      "max_retry_count": 3,
      "precondition_pattern": null,
      "precondition_target_text": null,
      "request_body": null,
      "request_header": null,
      "request_method": "GET",
      "request_url": "{OAUTH_INSTANCE_URL}/services/data/v45.0/parameterizedSearch/?q={TEL}&sobject=Account&sobject=Contact&sobject=Lead",
      "response_variable_pattern": "/{\"searchRecords\":\\[({\"attributes\":{\"type\":\"(?P<TYPE>[a-zA-Z]*)\",(.*),\"Id\":\"(?P<NOID>[a-zA-Z0-9]*)\"}(,{\"attributes\":(.*))*)\\]}$/",
      "retry_interval_milli_sec": 3000,
      "timeout_num": 10,
      "memo": null
    },
    {
      "api_event_type": 5000,
      "api_link_type": 1,
      "error_response_status_code_pattern": null,
      "execution_order": 1,
      "max_retry_count": 3,
      "precondition_pattern": null,
      "precondition_target_text": null,
      "request_body": "{\r\n\t\"model\": \"gpt-3.5-turbo\",\r\n\t\"messages\": [\r\n\t{\r\n\t\t\"role\": \"system\",\r\n\t\t\"content\": \"お客様お問い合わせ窓口でのお客様とオペレータの会話。300文字以内で箇条書きで要約する。但し、[context]に記載のない情報を要約することは許されていません。要約できないときは要約できないとお応えください。\"\r\n\t},\r\n\t{\r\n\t\t\"role\": \"user\",\r\n\t\t\"content\": \"{VOICE_LOG.LEFT(4000).JSON_ESCAPE()}\"\r\n\t}],\r\n\t\"max_tokens\": 300,\r\n\t\"temperature\": 0.7,\r\n\t\"frequency_penalty\": 0,\r\n\t\"presence_penalty\": 0,\r\n\t\"top_p\": 1\r\n}",
      "request_header": "Authorization:Bearer XXXXXXXX\r\nContent-Type:application/json",
      "request_method": "POST",
      "request_url": "https://api.openai.com/v1/chat/completions",
      "response_variable_pattern": "/content\":\"(?P<SUM>.*)\"},\"finish_reason\"/",
      "retry_interval_milli_sec": 3000,
      "timeout_num": 30,
      "memo": null
    },
    {
      "api_event_type": 5000,
      "api_link_type": 2,
      "error_response_status_code_pattern": null,
      "execution_order": 2,
      "max_retry_count": 3,
      "precondition_pattern": "/Contact|Lead/",
      "precondition_target_text": "{RESPONSE_TYPE}",
      "request_body": "{\t\r\n\t\"WhoId\": \"{RESPONSE_NOID}\",\r\n\t\"Subject\": \"{STARTTIME}に通話(着信)\",\r\n    \"Description\": \"{VOICE_LOG.JSON_ESCAPE()}\\r\\n■要約:\\r\\n{RESPONSE_SUM}\",\r\n\t\"CallDisposition\":\"■発信電話番号:{TEL}■着信電話番号:{CALLED}\\\\r\\\\n■着信アカウント名:{AGENT_NAME}■着信内線番号:{AGENT_EXTEN_NO}\\\\r\\n■通話開始時間:{STARTTIME}■通話終了時間:{ENDTIME}\\\\r\\n■通話時間:{CALLSEC}\"\r\n}",
      "request_header": "Content-Type: application/json",
      "request_method": "POST",
      "request_url": "{OAUTH_INSTANCE_URL}/services/data/v45.0/sobjects/Task/",
      "response_variable_pattern": null,
      "retry_interval_milli_sec": 3000,
      "timeout_num": 10,
      "memo": null
    },
    {
      "api_event_type": 5000,
      "api_link_type": 2,
      "error_response_status_code_pattern": null,
      "execution_order": 3,
      "max_retry_count": 3,
      "precondition_pattern": "/Account/",
      "precondition_target_text": "{RESPONSE_TYPE}",
      "request_body": "{\t\r\n\t\"WhatId\": \"{RESPONSE_NOID}\",\r\n\t\"Subject\": \"{STARTTIME}に通話(着信)\",\r\n    \"Description\": \"{VOICE_LOG.JSON_ESCAPE()}\\r\\n■要約:\\r\\n{RESPONSE_SUM}\",\r\n\t\"CallDisposition\":\"■発信電話番号:{TEL}■着信電話番号:{CALLED}\\\\r\\\\n■着信アカウント名:{AGENT_NAME}■着信内線番号:{AGENT_EXTEN_NO}\\\\r\\n■通話開始時間:{STARTTIME}■通話終了時間:{ENDTIME}\\\\r\\n■通話時間:{CALLSEC}\"\r\n}",
      "request_header": "Content-Type: application/json",
      "request_method": "POST",
      "request_url": "{OAUTH_INSTANCE_URL}/services/data/v45.0/sobjects/Task/",
      "response_variable_pattern": null,
      "retry_interval_milli_sec": 3000,
      "timeout_num": 10,
      "memo": null
    },
    {
      "api_event_type": 5000,
      "api_link_type": 2,
      "error_response_status_code_pattern": null,
      "execution_order": 4,
      "max_retry_count": 3,
      "precondition_pattern": "/^(?!.*(Contact&Lead&Account)).*$/",
      "precondition_target_text": "{RESPONSE_TYPE}",
      "request_body": "{\t\r\n\t\"WhoId\": \"XXXXXXXX\",\r\n    \"Subject\": \"{STARTTIME}に通話(着信)\",\r\n    \"Description\": \"{VOICE_LOG.JSON_ESCAPE()}\\r\\n■要約:\\r\\n{RESPONSE_SUM}\",\r\n    \"CallDisposition\":\"■発信電話番号:{TEL}■着信電話番号:{CALLED}\\\\r\\\\n■着信アカウント名:{AGENT_NAME}■着信内線番号:{AGENT_EXTEN_NO}\\\\r\\n■通話開始時間:{STARTTIME}■通話終了時間:{ENDTIME}\\\\r\\n■通話時間:{CALLSEC}\"\r\n}",
      "request_header": "Content-Type: application/json",
      "request_method": "POST",
      "request_url": "{OAUTH_INSTANCE_URL}/services/data/v45.0/sobjects/Task/",
      "response_variable_pattern": null,
      "retry_interval_milli_sec": 3000,
      "timeout_num": 10,
      "memo": null
    }
  ]
}
 

Ⅱ コールアクションテンプレートをインポート
BIZTEL管理画面より「連携オプション」>「コールアクション連携」をクリックして、画面右上の「インポート」をクリックします。詳細はこちら「6.2 コールアクションのインポート」をご参照ください。

Ⅲ コールアクション連携を編集
作成されたコールアクション連携の「API連携タブ」をクリックしてください。
各設定情報を編集していきます。


【必須で修正する箇所(合計6件)】

マークが出ている設定は、OAuthアカウントが未設定のため「OAuthアカウント設定」で登録したSalesforce用のOAuthアカウントを選択します。(計4件)

● 以下のイベントURL内「XXXXXXXX」で表示されている箇所は、適切な値に書き換えます。(計2件)
<録音完了/音声認識連携完了>実行順1:OpenAI APIキー
<録音完了/音声認識連携完了>実行順4:紐づけ先が特定できない時のレコードID

(録音完了/音声認識連携完了イベント 実行順1:APIキー設定例)

 

(録音完了/音声認識連携完了イベント 実行順4:レコードID設定例)

下の画像の赤線部分には、発信番号から履歴を紐づけるレコードを特定することができなかった場合に、紐づけるリードのレコードID(※)を記載します。

※レコードIDの確認方法(以下の赤線部分がレコードIDです)

Ⅳ お客さまの業務に応じて、ChatGPTへの指示を調整
<録音完了/音声認識連携完了>実行順1:OPenAI APIへ要約の指示をしているので、必要に応じて修正してください。

※現在の設定例
 お客さまとの会話を300文字以内で箇条書きでまとめてほしいとき

※その他の設定例
 例)BIZTELユーザをオペレーターと読み替える
 例)お客さまからのお褒めや評価の言葉を抽出する
 例)会話の改善点を提案する

API_13_09

今回、ChatGPTで利用するモデル「gpt-3.5-turbo」はMAXREQUESTが4096tokensとなっているため、要約にかけられるお客さまとの会話文字数に制限があります。

現状、会話の先頭4000文字程度となっていますので{VOICE_LOG.LEFT(4000).JSON_ESCAPE()}でお客さまとの会話を4000文字だけ抽出して、ChatGPTに指示しています。

上述の制限があり、要約対象の最大文字数を増やすことは出来ませんが、文字数を減らしたい場合には{VOICE_LOG.LEFT(4000).JSON_ESCAPE()}の4000文字の数値を調整してください。

Ⅴ 連携対象とする電話番号を選択
「連携対象」タブをクリックして、連携対象とする電話番号に✓を設定してください。

Ⅵ コールアクションの設定を有効化
「基本情報」タブをクリックして、ステータス項目を無効から有効に変更してください。

連携結果

Salesforceに通話内容を連携した結果、このようになりました
(画像をクリックすると、拡大されます)。

文字が小さく見づらいので、通話内容の原文を以下に掲載します。

<通話内容の全テキスト>

BIZTELユーザ : お電話ありがとうございます。カスタマーサポートセンターです。名前と問い合わせ内容を教えていただけますでしょうか?

お客様 : はい、こんにちは。私の名前は鈴木です。

お客様 : 今日は、インターネットの速度が非常に遅くなってしまって困っているのですが、こちらの窓口で問い合わせ可能でしょうか?

BIZTELユーザ : はい。鈴木様ご連絡いただきましてありがとうございます。インターネット速度が遅いというですね、大変ご不便おかけしまして申し訳ございません。

BIZTELユーザ : 上京区にさせていただく目に、まずはお客様のご住所と、アカウント番号をお聞かせいただけますでしょうか?

お客様 : はい。

お客様 : 住所は東京都新宿区。

お客様 : 1-1-1

お客様 : アカウント番号は、

お客様 : 12345678です。

BIZTELユーザ : ありがとうございます鈴木様、アカウント情報を確認させていただきますので、このまま少々お待ちくださいませ。

お客様 : はい。

BIZTELユーザ : 鈴木様大変お待たせいたしました。

BIZTELユーザ : アカウント情報の確認が取れました。

BIZTELユーザ : まずはですねお客様のインターネット環境について、靴か質問させていただきます。

BIZTELユーザ : 現在お使いのデバイスは何台接続されておりますでしょうか?

お客様 : 今のところスマートフォンが2台と、パソコンが2台です。

BIZTELユーザ : 承知いたしました。それらのデバイス読んだですね、どういうインターネットをしている場合多いですか。

お客様 : はい。

お客様 : そうですね。大体夜になると家族がみんなで使うので、同時に使うことが多いです。

BIZTELユーザ : ありがとうございます。夜になると、数が多くなるということですね承知いたしました。

お客様 : 夜とかはスマホが4台と、パソコン4台とかですかね。

BIZTELユーザ : お客様のご自宅はWi-Fiルーターを使用してますか。それとも有線接続ですか。

BIZTELユーザ : ありがとうございます。

BIZTELユーザ : いらネット速度に関連するトラブルシューティングをいくつか試させていただきます。

お客様 : Wi-Fiルーターを使っています。

BIZTELユーザ : まずはお客様のご自宅のインターネット環境に問題がないか確認させていただきます。

BIZTELユーザ : ルーターの電源を一度切っていただきまして、

BIZTELユーザ : 30秒ぐらい待ってから、再度電源をつけていただけますでしょうか?

BIZTELユーザ : はい。

お客様 : はい、わかりました。

お客様 : ちょっと待ってくださいね。

BIZTELユーザ : ありがとうございます。

BIZTELユーザ : それでは再度、インターネットの速度ですねパソコンでもスマホでもいいんですけど、確認していただけますでしょうか?

お客様 : 再起動が完了しました。

お客様 : はい。

お客様 : わかりました。やってみます。

BIZTELユーザ : 速度が回復したとのことで安心いたしました。

お客様 : 今試してみたところ速度が戻ったようです。ありがとうございます。

BIZTELユーザ : それでは引き続きインターネットが遅くならないよう、いくつかの対策を今回ちょっとご紹介させていただこうと思います。

BIZTELユーザ : 二つほどありまして、一つが、あのルーターが配置しているっていうところを見直してみてくださいっていうところですかね。

BIZTELユーザ : 壁や家具に囲まれた場所に置く電波が届きにくくなりますので、できるだけ高い位置に設置して、

BIZTELユーザ : 障害物っていうところを避けるようにしていただければと思います。

BIZTELユーザ : あとはですね、デバイスの数が接続されているデバイスの数が増えると、遅くなる可能性があります。

BIZTELユーザ : 必要なデバイスだけ接続して、不要なデバイスのWi-Fiをオフすることで、ことが改善されることがありますので、

お客様 : はい。

BIZTELユーザ : ぜひお試しいただければと思います。

BIZTELユーザ : ありがとうございます日お試しください。

BIZTELユーザ : 本日、この他にですねご質問はございますでしょうか?

お客様 : アドバイスありがとうございます。

お客様 : どちらも該当しそうなので、ちょっとまだ駄目見ますね。

BIZTELユーザ : かしこまりました。本日は田中が承りました。今後も引き続きよろしくお願いいたします。

お客様 : 大丈夫です。ありがとうございます。

BIZTELユーザ : はい失礼いたします。

お客様 : はい、ありがとうございます。失礼いたします。

 

<要約結果>

■要約:
お客様からの問い合わせ内容は、インターネットの速度が遅いこと。
BIZTELユーザは、お客様の住所とアカウント番号を確認。
デバイスの数や使用時間などの情報を聞き取り、ルーターの再起動を提案。
再起動後、速度が回復したとの報告があり、ルーターの配置や接続デバイスの数についてアドバイスを提供。
お客様はアドバイスを受け取り、引き続き試してみるとのこと。

 

要約結果の精度が高く、会話の全容を簡潔に把握することが可能になりました。

振り返り・まとめ

今回は、『BIZTEL APIアイデアベース Vol.2 ChatGPTで通話内容を要約して、オペレーター業務を効率化させたい』の記事でご紹介したChatGPTとの連携方法について、具体的にご説明しながら設定していきました。

ChatGPTと連携することで自動で要約が実現でき、「後作業」時間の工数が削減されます。例えば、これまで約7分の通話に対して、最大で約30〜40分要していた後作業時間が、約1分のSVによる要約内容の確認のみとなり、大幅に短縮されます。

さらに、人による通話記録の精度差もなくなり、業務の大幅な効率化・標準化に繋がります。


コールアクションテンプレート機能を利用することで複雑なAPI設定も簡単に設定できますので、ぜひお試しください。

編集後記

今回は、ChatGPTを使ってお客さまとの通話内容を要約、さらにSalesforceへ記録をする仕組みを実践しました。

このブログでは、今後も様々な機能の実装に挑戦していきます。設定方法も交えながらお伝えしますので、読者のみなさまもぜひチャレンジしてみてください。

いまBIZTELをご利用中のお客さまも、「こんなことがしたい」というご希望がございましたら、BIZTELサービス担当までご相談ください!