CPaaSを使ったアプリケーション開発

CPaaSのAI機能を使って電話受付業務を作成しよう[前編]

前々回の記事では、CPaaSがどのようなサービスなのか、CPaaSベンダーにはどのような会社があるのかなどについて紹介しました。そして前回の記事では、実際にCPaaSベンダーと契約して、SMSを送信するステップについて解説しました。

本連載の最後に、CPaaSのAI機能であるVonage AI Stuidoを使って電話に自動応答する方法について前後編に分けて説明します。

Vonage AI Studioとは

Vonage AI Studioは、ノーコード・ローコードでコールフローを作成できるツールです。Vonageが提供しており、ブラウザ上で動作します。

図1 Vonage AI Studio

上図のように、ノードと呼ばれる部品をドラッグ・アンド・ドロップして接続するだけで、簡単にコールフローが作成できます。

Vonage AI Studio自体はすでに正式リリースしていますが、一部の機能についてはベータリリース、もしくはアルファリリースのものが含まれます。日本語のサポートは2024年10月現在、アルファリリースです。

Vonage AI Studioでは次のように用語を定義しています。

エージェント
Vonage AI Studioでフローを作成する最も大きな単位です。エージェント単位で言語や話者、リージョンやタイムゾーンの設定を行います。スタンダードプランでは、最大10個のエージェントが作成できます。
イベント
フローが起動するトリガーです。イベントには、Inbound call/Outbound call/End call/API Eventの4つがあります。
ノード
フローを構成する各部品のことです。ノードは、Conversation/Advanced/Actions/Integrations/Flow Controlの5つのカテゴリーに分類されます。
プロパティ
いくつかのノードにはプロパティと呼ばれる要素が含まれます。たとえば、自然言語解析におけるエンティティやインテントや、フロー内で共有する変数などがプロパティになります。

今回のシナリオ

今回、以下のシナリオでコールフローを作成していきます。

  1. 電話をかかってきたら、まずは会社名を名乗ります。
  2. 具体的な用件を聞きます。
  3. 用件が請求書に関するものか、料金に関するもののいずれかの場合のみ受け付けます。
  4. 料金に関する質問であれば、料金ページのURLをSMSで通知します。
  5. 請求書の質問であれば、ナレッジベースに従って回答を行います。
  6. 担当者に問い合わせ内容をメールで伝えます。

ただし、最初から作成するのは大変なので、今回はある程度できあがったフローを読み込んで利用します。

なお、後編の記事でOpenAIの機能と連携してみますので、試したい場合にはOpenAIのAPI Keyをあらかじめ取得しておいてください。

Vonageアカウントのアップグレード

Vonageで電話の着信をさせるためには、電話番号が必要になります。電話番号を購入するためには、前回作成したVonageアカウントをアップグレードする必要があります(すでにアップグレード済みであればこの項は読み飛ばしてください⁠⁠。

今回は本記事の内容を試せるように、アップグレード用のクーポンコードを用意しました。

次の手順で、Vonageアカウントをアップグレードしてください。

  • Vonageダッシュボードにログインします。
  • 左側の請求メニューをプルダウンして、クーポンを選択します。
  • クーポンコード欄に24GHYBLGと入力します。
  • Submitボタンを押します。

アップグレードが完了したら、念のため再度ログインしてください。

注意今回用意したクーポンコードの有効期限は2024年12月31日です。次の事柄も確認の上ご利用ください。

  • 配布枚数の上限に達した場合は期限前に配布が終了することがあります。
  • クーポンコードは一度しか適用できません。複数回適用するとアカウントがロックされます。
  • クレジットがなくなった場合はカード情報を登録してクレジットを追加していただくことで、引き続き利用できます。
図2 クーポンを利用してVonageアカウントをアップグレード

電話番号の購入

Vonageアカウントがアップグレードできたので、電話番号を購入していきます。

Vonage APIコンソールにログインして、左側の番号メニューを展開し、番号を購入を選択します。

図3 電話番号の購入手順(1)

続けて以下の操作を行います。

  • のリストから「United States(+1)」を選択します。
  • 機能のリストを開き、⁠SMS」「Voice」をチェックします。
  • Searchボタンを押すと、購入できるリストが一覧表示されます。
  • 購入したい番号をリストから選択し、購入ボタンを押します。

注意日本の番号は本人性確認(KYC)が完了した法人、もしくは個人事業主のみ購入が可能です。

図4 電話番号の購入手順(2)

確認ウィンドウが開くので、購入ボタンを押します。

図5 電話番号の確認ウィンドウ

画面上部に購入完了のメッセージが表示されれば、無事に電話番号が購入できています。なお、左側の番号から、あなたの番号を選択すると、購入済みの電話番号を確認できます。

図6 電話番号を確認

電話番号利用料は月額計算となります。アメリカの通常の番号であれば€0.90/月となりますので、1ヶ月後に再度€0.90がクレジットから引き落としされます。引き落とし時にクレジットが足りない場合は、アカウントは一時的にサスペンドされ、購入した電話番号は自動的にリリースされます。

Vonage AI Studioの起動

ではここからは、Vonage AI Studio(以下AI Studio)を利用して着信フローを作成していきます。

Vonage APIコンソールにログインして、左側からAI Studioを選択し、さらに右側に表示されるAI Studioにアクセスするボタンを押します。

図7 AI Studio

AI Studioは独立したサービスになっているため、再度ログインが必要になることがあります。

ユーザーパラメータの作成

はじめにに、フロー内で利用する変数を定義してきます。

画面上部にあるUsersをクリックして、Create user parametersボタンを押します。

図8 AI Studioのユーザータブ

以下のパラメータ名を追加します(綴りを間違えないようにパラメータ名をコピー&ペーストしましょう⁠⁠。

パラメータ名 役割
REQUIREMENT 用件を格納します
GENERATED_SENTENCE OpenAIで生成した文章を格納します

パラメータが追加できたら、Closeボタンを押してウィンドウを閉じます。

図9 ユーザーパラメータを登録

エージェントのインポート

エージェントを作ります。今回は途中まで作成されているフローを用意しました。まずは、次のZIPファイルを解凍せずにダウンロードしてください。

その後、AI StudioのAgentsタブに移動して、Import Agentボタンを押します。

図10 エージェントファイルをインポート(1)

次に、Uploadボタンを押して、ダウンロードしたZIPファイルを選択します。

図11 エージェントファイルをインポート(2)

アップロードが完了したら、右上のImport Agentボタンを押します。

図12 エージェントファイルをインポート(3)

インポートが完了すると、以下のようにエージェントが表示されます。Handsonをクリックします。

図13 登録されたエージェント

読み込んだエージェントの解説と設定

インポートしたエージェントのフローは以下のように設定されています。

図14 インポートしたエージェントのフロー

以降、フローを解説しながら設定を行っていきます。

今回は着信用のAI Studioを作成してありますので、電話の着信があるとSTARTノードからフローが流れます。

会社名を名乗る

「会社名を名乗る」ノードはSpeakノードです。ここでは「お電話ありがとうございます。技術評論社です。」と発話するように設定されています。

用件を聞く

「用件を聞く」ノードはCollect Inputという自動音声認識(ASR: Automatic Speech Recognition)ノードで実現をしています。

「用件を聞く」ノードをクリックすると、プロパティウィンドウが開きます。

  • Parameter欄に、先ほど登録しておいたUSER.REQUIREMENTが選択されていることを確認します。このパラメータに聞き取った内容が格納されます。
  • Promptsは、問いかけをするための質問文になります。今回は用件を具体的にお話ください。と登録してあります。
  • Number of Retriesは、聞き取りができなかった場合の試行回数になります。今回は3が登録されています。
  • Retry Promptsは、再試行する場合の質問文となります。今回はすみませんが、うまく聞き取れませんでした。用件を具体的にお話ください。と登録してあります。

確認が終わったらCloseボタンを押します。

図15 「用件を聞く」ノード

用件による分岐

「用件による分岐」ノードでは、⁠用件を聞く」ノードで聞き取った内容を分析してフローを分岐します。

分析をするためにNLU(自然言語理解)が利用されます。NLUで使われる用語は以下のとおりです。

用語 説明
Classification NLUを実行するためのノードです。実行時に、以下のインテントやエンティティを利用します。
インテント(Intent) NLUで学習をするための基礎データです。たとえば請求書に関する問い合わせのサンプルデータとして「請求書について確認したい」⁠請求書が届いていない」⁠請求書の宛先を変更したい」などを基礎データとして登録します。これにより、サンプルに近い言い回し(例:「請求書の明細金額を確認したい」でも請求書に関する問い合わせであることを認識できます。
エンティティ(Entities) エンティティを使うことで、インテントの一部をさらに細かく指定できます。たとえば「請求書について確認したい」というインテントの「請求書」のところをエンティティとして登録しておくことで、ここが異なる発話(例:「支払期日を確認したい⁠⁠)になった場合に、エンティティで切り分けを行うことができます。

注意2024年10月現在、エンティティの登録時に日本語入力が正常に動作しないため、日本語ではエンティティが利用できません。またNLUを利用する場合、$0.007/リクエストのオプション料金が必要です。

今回はすでに請求書に関するインテントと料金の関するインテントの2つを定義しています。

インテントを確認するには、左側のプロパティアイコンをクリックして、Intentsを選択します。それぞれクリックすると、実際に登録されているデータを確認できます。

図16 すでに登録されているインテント

「用件を聞く」ノードの設定内容を確認してみましょう。⁠用件を聞く」ノードをクリックすると、プロパティウィンドウが開きます[1]

  • Classification Parameter欄には、分析対象となるパラメータを指定します。USER.REQUIREMENTが選択されていることを確認します。
  • Intentsには、分析に利用するインテントを指定します。すでに請求書料金の2つが登録されています。

確認ができたら、Closeボタンを押してプロパティウィンドウを閉じます。

図17 「用件による分岐」ノード

用件を復唱する

「用件を聞く」ノードで用件を分岐すると、それぞれの用件に応じて以下のようにSpeakノードにフローが分岐されます。

ノードの名前 発話内容 接続する直前ノードの設定値
請求書に関するお問い合わせ 請求書に関するお問い合わせですね。 請求書
料金に関するお問い合わせ 料金に関するお問い合わせですね。 料金
その他の問い合わせ 大変申し訳ございませんが、こちらの番号では請求書もしくは料金に関するお問い合わせのみをお受けしております。 Missed

中間テスト①⁠チャットを使ったテスト

ここまでのフローを一度テストをしてみます。

AI Studioのテストは、電話とチャットを使って行うことができます。ここではチャットを使ってテストをしてみましょう。

画面上部にあるTesterボタンを押します。

図18 「Tester」をクリック

次にStart chatボタンを押します。

図19 「Start chat」をクリック

ウィンドウの下部にあるテキストボックスに文字を入力することで一連のフローのテストを行います。請求書と料金の問い合わせがうまく振り分けられることを確認してみてください。なお、エンターのみで「No Input」のテストができます。テストを繰り返す場合は、画面上部の繰り返しボタンを使います。

図20 Testerを使ったテスト

電話番号をAI Studioに紐付ける

電話番号を使ってテストをするために、購入済みの電話番号をエージェントに紐づけます。

左上のハンバーガーメニューから、Phone Settingsを選択します。

図21 電話番号を設定(1)

そしてAssign Phone Numberボタンを押し、先程購入した番号を選択します。選択後、Assign Numberボタンを押します。

図22 電話番号を設定(2)

電話番号が紐付けられたことを通知するダイアログが表示されますので、Closeボタンを押してウィンドウを閉じます。

残りのフローを作成していく

電話番号の紐づけも完了したので、続けてフローを作成していきましょう。

料金の問い合わせをSMSで回答する

問い合わせ内容が料金に関するものだった場合に、料金ページのURLをSMSで送信するようにします。

左側のNODESからSend SMSノードをドラッグ・アンド・ドロップします。

図23 Send SMSノードを追加

このSend SMSノードのプロパティウィンドウを開きます。

  • ウィンドウ上部にSMSを送信と入力し、ノードに名前をつけます。
  • From欄にはHANDSONと入力します。
  • To欄では、まず$を入力し、表示されるリストから$CALLER_PHONE_NUMBERを選択します。
  • Body欄には料金は以下のページにて公開しております。https://kwcplus.kddi-web.com/service/vonage/priceと入力します(URLは何でもOKです⁠⁠。

ここまで設定したら、Save & Exitボタンを押して保存します。

図24 Send SMSノードを設定

実際にSMS送信をするためには、US番号が必要になります。ただし、海外経由でのSMS送信では電話番号を通知できません。その代わりにAlpha-numeric sender idと呼ばれる3〜11文字の英数字をFrom値として指定できます。$CALLER_PHONE_NUMBERはシステムパラメータで、発信者の電話番号が格納されています。

料金に関する問い合わせノードと今作成したSend SMSノードを繋いでおきます。

SMSを送信した旨を報告する

SMSの送信が完了したら、その旨をユーザーに報告するようにします。次の手順で設定してください。

  • 左側のNODESからSpeakノードをドラッグ・アンド・ドロップします。
  • Speakノードのプロパティウィンドウを開きます。
  • ノードのタイトルにSMS送信を報告と入力します。
  • Agent saysただいま、料金ページのURLをSMSで送信いたしましたので、お手数ですがご確認をお願いいたします。と入力します。
  • Save & Exitボタンを押したのち、Closeボタンを押します。

SMSを送信ノードとの接続も忘れないようにしておきましょう。

図25 Speakノードを追加して設定

担当者のメールアドレスを登録しておく

着信があったこととSMSを送付したことを担当者にメールで伝えるために、事前に担当者のメールアドレスを登録しておきます。

左側のPROPERTIESからContactsメニューを選択して、Create Contactボタンを押します。

図26 Contactを作成

Contactでは以下の項目を設定します。

  • 画面上部にコンタクト名(メールを送信したい担当者名)を入力します。
  • Phone Numberに担当者の電話番号を入力します(E.164形式[2]⁠。
  • Email欄に担当者のメールアドレスを入力します。

設定後、Save & Exitボタンを押します。

図27 Contactを設定

料金の問い合わせがあった旨を担当者にメールする

料金の問い合わせがあった旨を担当者にメールするように設定します。

左側のNODESメニューからSend Emailノードをドラッグ・アンド・ドロップして、ドロップしたノードのプロパティウィンドウを開きます。そして以下の項目を設定します。

  • ウィンドウ上部にメール送信(料金)と入力し、ノードに名前をつけます。
  • To欄で@を入力すると、先程登録したContactがリスト表示されるので、それから選択します。
  • Subject欄には「料金に関するお問い合わせがありました」と入力します。
  • Body欄には、以下の内容を登録しておきます。$CALLER_PHONE_NUMBER$USER.REQUIREMENTの部分については、$を押すことで選択が可能です。
Body欄の内容
今しがた、以下のお問い合わせがありました。
お客様電話番号:$CALLER_PHONE_NUMBER
---
$USER.REQUIREMENT
---
料金ページのURLをSMSで送信しました。
引き続きのご対応をお願い致します。
図28 Send Emailノードを設定

設定後、SMS送信を報告ノードと今作成したノードを接続しておきます。

請求書に関する問い合わせの受け付け応答する

請求書に関する問い合わせについて、受け付けを行った旨を回答しましょう。

左側のNODESメニューからSpeakノードをドラッグ・アンド・ドロップして、ドロップしたノードのプロパティウィンドウを開きます。そして以下の設定を行います。

  • ウィンドウ上部に受付完了と入力し、ノードに名前をつけます。
  • Agent says欄には請求書に関するお問い合わせを受け付けました。追って担当者よりご連絡いたしますので、しばらくお待ち下さい。と入力します。

Save & Exitボタンを押したあとに、請求書に関する問い合わせノードと接続しておきます。

図29 受付完了のSpeakノードを作成

担当者に請求書の問い合わせがあった旨をメールする

担当者に請求書の問い合わせがあった旨をメールします。

左側のNODESメニューからSend Emailノードをドラッグ・アンド・ドロップして、ドロップしたノードのプロパティウィンドウを開きます。そして以下の設定を行います。

  • ウィンドウ上部にメール送信(請求書)と入力し、ノードに名前をつけます。
  • To欄で@を入力すると、先程登録したContactがリスト表示されるので、それを選択します。
  • Subject欄には請求書に関するお問い合わせがありましたと入力します。
  • Body欄には以下の内容を登録しておきます。$CALLER_PHONE_NUMBER$USER.REQUIREMENTの部分については、$を押すことで選択が可能です。なお、$から始まる変数は紫色で表示されます。紫色になっていない場合は再度$を押して変数を選択してください。
Body欄のテキスト
今しがた、以下のお問い合わせがありました。
お客様電話番号:$CALLER_PHONE_NUMBER
---
$USER.REQUIREMENT
---
お手数ですがご対応をお願い致します。
図30 メール送信(請求書)ノードを作成

設定後に、受付完了ノードと今作成したノードを接続しておきます。

電話を切断する

ここまでのフローが完成したところで、通話が正常に終わるように電話を切断する処理を追加します。

左側のNODESメニューからEnd Callノードをドラッグ・アンド・ドロップして、メールを送信ノード2つと、その他の問い合わせノードを、いまドロップしたノードに接続します。

図31 End Callノードを追加

中間テスト②⁠電話を使ったテスト

ではここまでの状態をテストしてみましょう。

今回は、実際の電話機を使ってテストを行います。ただ、現在はUS番号しか購入していないので、皆さんからの携帯からかけるのではなく、AI Studioから皆さんの電話に発信して、一連のフローをテストしていきます。

まずは、画面上部のTesterボタンを押します。

図32 Testerボタンをクリック

次にStart phone callボタンを押します。

図33 Start phone callボタンをクリック

その後、次の設定を行います。

  • 国の選択リストから「Japan(+81⁠⁠」を選択します。
  • 電話番号欄には、自分の電話番号の先頭の0を外したものを設定します。

そしてCallボタンを押します。

図34 電話番号を設定

自分の電話機にUS番号から着信がかかりますので、一連のフローをテストしてください。あわせてSMSやメールが届くことも確認しておきましょう。


ここまでで受付業務のコールフローの全体の流れは作成できました。後編では、AI StudioにあるOpenAIとの統合機能を使って、応答メールの文面生成などを組み込んでいきます。

後編に続く)

おすすめ記事

記事・ニュース一覧