2023.12.28
2024.08.22

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

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

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

今回は【ChatGPT-4】を利用した実現方法について具体的に説明しながら設定していきたいと思います。

※ ChatGPT-3.5 Turbo版での設定方法はこちらです。

やってみたいこと

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

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

チャレンジャー

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

BIZTELの利用ライセンス

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

BIZTELで必要なオプション

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

BIZTEL以外に必要なもの

・Salesforce
・AmiVoice API
・OpenAI API(モデル:gpt-4o-2024-08-06

※ 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ドル以上を初期購入します。
※購入額、および自動リチャージの設定は任意です。

※「OpenAI事前準備」>「1.クレジットカード登録」のご案内は、2024年1月時点の情報です。詳しくは、OpenAI Webサイトをご覧ください。

2.プロジェクトAPIキー発行

こちらからOpenAIにログインして、画面右上の歯車マークをクリックしてください。

画面右上の「Dashboard」をクリックして、左メニューの「API keys」をクリック後、プロジェクトキーを作成します。

設定画面に従って、情報を設定して「Create secret key」をクリックします。
【Permissions:Allの場合】

【Permissions:Restrictedの場合】
APIの種類によって、権限付与あり/なしを設定することが可能です。その場合、以下の設定が必要となります。
・Models は「Read」権限を付与
・Model capabilities は「Write」権限を付与

Keyが発行されるので「Copy」ボタンをクリックして、キー文字列をコピーし、保存してください。

※「OpenAI事前準備」>「2.プロジェクトAPIキー発行」のご案内は、2024年7月時点の情報です。詳しくは、OpenAI Webサイトをご覧ください。

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へ「お客様との会話を500文字以内で箇条書きで要約」と指示します。

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

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

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

{
  "version_name": "unknown",
  "version_hash": "94e4508",
  "name": "ChatGPT4版連携(240227)",
  "memo": "ChatGPT4対応版",
  "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": "/\"attributes\":\\{\"type\":\"(?P<TYPE>[a-zA-Z]*)\".*?\"Id\":\"(?P<NOID>[a-zA-Z0-9]*)\"/",
      "result_entry_information_label": null,
      "result_entry_information_text": null,
      "result_entry_prompt_text": null,
      "result_entry_summary_text": null,
      "result_entry_type": null,
      "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-4o-2024-08-06\",\r\n\t\"messages\": [\r\n\t{\r\n\t\t\"role\": \"system\",\r\n\t\t\"content\": \"お客様お問い合わせ窓口でのお客様とオペレータの会話。500文字以内で箇条書きで要約する。要約できないときは要約できないとお応えください。\"\r\n\t},\r\n\t{\r\n\t\t\"role\": \"user\",\r\n\t\t\"content\": \"{VOICE_LOG.LEFT(8000).JSON_ESCAPE()}\"\r\n\t}],\r\n\t\"max_tokens\": 500,\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>.*?)\"/",
      "result_entry_information_label": null,
      "result_entry_information_text": null,
      "result_entry_prompt_text": null,
      "result_entry_summary_text": null,
      "result_entry_type": null,
      "retry_interval_milli_sec": 3000,
      "timeout_num": 60,
      "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,
      "result_entry_information_label": null,
      "result_entry_information_text": null,
      "result_entry_prompt_text": null,
      "result_entry_summary_text": null,
      "result_entry_type": 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,
      "result_entry_information_label": null,
      "result_entry_information_text": null,
      "result_entry_prompt_text": null,
      "result_entry_summary_text": null,
      "result_entry_type": 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\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,
      "result_entry_information_label": null,
      "result_entry_information_text": null,
      "result_entry_prompt_text": null,
      "result_entry_summary_text": null,
      "result_entry_type": null,
      "retry_interval_milli_sec": 3000,
      "timeout_num": 10,
      "memo": null
    }
  ]
}
 

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

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

【必須で修正する箇所(合計6件)】
!マークが出ている設定は、OAuthアカウントが未設定のため「OAuthアカウント設定」で登録したSalesforec用のOAuthアカウントを選択します。(計4件)

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

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

(録音完了/音声認識連携完了イベント 実行順4:レコードID設定例)
下の画像の赤線部分には、発信番号から履歴を紐づけるレコードを特定することができなかった場合に、紐づけるリードのレコードIDを記載します。

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

Ⅳ お客さまの業務に応じて、ChatGPTへの指示を調整
<録音完了/音声認識連携完了>実行順1:OpenAI APIへ要約の指示をしているので、必要に応じて修正してください。
  
※現在の設定例)お客さまとの会話を500文字以内で箇条書きでまとめてほしいとき
※その他の設定例
 例)BIZTELユーザをオペレータと読み替える
 例)お客さまからのお褒めや評価の言葉を抽出する
 例)会話の改善点を提案する

今回、ChatGPTで利用するモデル【GPT-4】MAXREQUEST8192tokensとなっているため、要約にかけられるお客さまとの会話文字数に制限があります。
現状、会話の先頭からおおよそ8000文字となっていますので、{VOICE_LOG.LEFT(8000).JSON_ESCAPE()}でお客さまとの会話を8000文字だけ抽出して、ChatGPTに指示しています。

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

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

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

連携結果

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


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

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

オペレータ : こんにちはXYZカスタマーサポートセンターです。お名前と問い合わせ内容を教えていただけますか。

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

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

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

オペレータ : 状況を確認させていただく前に、まずはお客様のご住所とアカウント番号をお聞かせいただけますでしょうか?

お客様 : もちろんです。

お客様 : 住所は東京都新宿区1-1-1アカウント番号は12345678です。

オペレータ : ありがとうございますできたアカウント情報を確認させていただきますので少々お待ちくださいませ。

オペレータ : 鈴木様、アカウント情報の確認ができました。まずはお客様のインターネット環境についていくつか質問させていただきます。

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

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

オペレータ : 承知いたしました。それらのデバイスで同時にインターネットを使用している場合は多いでしょうか?

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

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

オペレータ : かしこまりました夜になると多くなるということですね。承知いたしました。お客様のご自宅ではWi-Fiルーターを使用してますか、それとも郵政接続でしょうか?

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

オペレータ : ありがとうございます。インターネット速度に関連するトラブルシューティングをいくつか試させていただきます。

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

オペレータ : まずルーターの電源を一度切って30秒ぐらい待ってから、再度つけていただけますでしょうか?

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

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

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

オペレータ : ありがとうございます。それでは再度、インターネットの速度を確認していただけますでしょうか?

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

お客様 : 今試してみたところ、速度が戻ったようです。

お客様 : ありがとうございます。

オペレータ : 速度が回復したということで、味いたしました。それでは引き続きインターネットが遅くならないよう、いくつかの対策をご紹介させていただきます。

オペレータ : まず一つ目がルーターの位置を見直してください。壁や家具に囲まれた場所に置くと電波が届きにくくなりますので、できる限り高い位置に設置して障害物を避けるようにしていただければと思います。

オペレータ : 二つ目は、デバイスも数が増えてしまいますと、それぞれのデバイスでインターネットの速度が遅くなることがございます。

オペレータ : 必要なデバイスだけを接続し、不要なデバイスのWi-Fiをオフすることで速度が改善されることがあります。

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

お客様 : どちらも該当しそうだから、ちょっとまた試してみます。

オペレータ : ありがとうございます。本日はこの他に質問はございますでしょうか?

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

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

お客様 : ありがとうございます。

お客様 : 失礼いたします。

オペレータ : はい、ありがとうございます例します。

<要約結果>

– 鈴木様はインターネットの速度が遅くなっている問題について問い合わせた
– オペレータは鈴木様のアカウント情報と接続状況を確認した
– 多くのデバイスが同時にインターネットを使用すると遅くなる可能性があることを説明した 
– ルーターの再起動を行った結果、速度が改善した 
– ルーターの位置やデバイス数の管理についてアドバイスを提供した 
– 鈴木様はその他の質問が無いと回答し、会話を終了した

振り返り・まとめ

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

ChatGPTと連携することで自動で要約が実現でき、「後作業」時間が削減されるだけでなく、人による通話記録の精度差もなくなり大幅な業務効率化・標準化につながります。


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

編集後記

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

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

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