前々回の記事では、CPaaSがどのようなサービスなのか、CPaaSベンダーにはどのような会社があるのかなどについて紹介しました。そして前回の記事では、実際にCPaaSベンダーと契約して、SMSを送信するステップについて解説しました。
本連載の最後に、CPaaSのAI機能であるVonage AI Stuidoを使って電話に自動応答する方法について前後編に分けて説明します。
Vonage AI Studioとは
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つのカテゴリーに分類されます。 - プロパティ
- いくつかのノードにはプロパティと呼ばれる要素が含まれます。たとえば、自然言語解析におけるエンティティやインテントや、フロー内で共有する変数などがプロパティになります。
今回のシナリオ
今回、以下のシナリオでコールフローを作成していきます。
- 電話をかかってきたら、まずは会社名を名乗ります。
- 具体的な用件を聞きます。
- 用件が請求書に関するものか、料金に関するもののいずれかの場合のみ受け付けます。
- 料金に関する質問であれば、料金ページのURLをSMSで通知します。
- 請求書の質問であれば、ナレッジベースに従って回答を行います。
- 担当者に問い合わせ内容をメールで伝えます。
ただし、最初から作成するのは大変なので、今回はある程度できあがったフローを読み込んで利用します。
なお、後編の記事でOpenAIの機能と連携してみますので、試したい場合にはOpenAIのAPI Keyをあらかじめ取得しておいてください。
Vonageアカウントのアップグレード
Vonageで電話の着信をさせるためには、電話番号が必要になります。電話番号を購入するためには、前回作成したVonageアカウントをアップグレードする必要があります
今回は本記事の内容を試せるように、アップグレード用のクーポンコードを用意しました。
次の手順で、Vonageアカウントをアップグレードしてください。
- Vonageダッシュボードにログインします。
- 左側の請求メニューをプルダウンして、クーポンを選択します。
- クーポンコード欄に
「 24GHYBLG
」と入力します。 - Submitボタンを押します。
アップグレードが完了したら、念のため再度ログインしてください。
注意:今回用意したクーポンコードの有効期限は2024年12月31日です。次の事柄も確認の上ご利用ください。
- 配布枚数の上限に達した場合は期限前に配布が終了することがあります。
- クーポンコードは一度しか適用できません。複数回適用するとアカウントがロックされます。
- クレジットがなくなった場合はカード情報を登録してクレジットを追加していただくことで、引き続き利用できます。

電話番号の購入
Vonageアカウントがアップグレードできたので、電話番号を購入していきます。
Vonage APIコンソールにログインして、左側の番号メニューを展開し、番号を購入を選択します。

続けて以下の操作を行います。
- 国のリストから
「United States(+1)」 を選択します。 - 機能のリストを開き、
「SMS」 と 「Voice」 をチェックします。 - Searchボタンを押すと、購入できるリストが一覧表示されます。
- 購入したい番号をリストから選択し、購入ボタンを押します。
注意:日本の番号は本人性確認

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

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

電話番号利用料は月額計算となります。アメリカの通常の番号であれば€0.
Vonage AI Studioの起動
ではここからは、Vonage AI Studio
Vonage APIコンソールにログインして、左側からAI Studioを選択し、さらに右側に表示されるAI Studioにアクセスするボタンを押します。

AI Studioは独立したサービスになっているため、再度ログインが必要になることがあります。
ユーザーパラメータの作成
はじめにに、フロー内で利用する変数を定義してきます。
画面上部にあるUsersをクリックして、Create user parametersボタンを押します。

以下のパラメータ名を追加します
パラメータ名 | 役割 |
---|---|
REQUIREMENT |
用件を格納します |
GENERATED_ |
OpenAIで生成した文章を格納します |
パラメータが追加できたら、Closeボタンを押してウィンドウを閉じます。

エージェントのインポート
エージェントを作ります。今回は途中まで作成されているフローを用意しました。まずは、次のZIPファイルを解凍せずにダウンロードしてください。
その後、AI StudioのAgentsタブに移動して、Import Agentボタンを押します。

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

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

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

読み込んだエージェントの解説と設定
インポートしたエージェントのフローは以下のように設定されています。

以降、フローを解説しながら設定を行っていきます。
今回は着信用のAI Studioを作成してありますので、電話の着信があるとSTARTノードからフローが流れます。
会社名を名乗る
「会社名を名乗る」
用件を聞く
「用件を聞く」
「用件を聞く」
- Parameter欄に、先ほど登録しておいた
「 USER.
」REQUIREMENT が選択されていることを確認します。このパラメータに聞き取った内容が格納されます。 - Promptsは、問いかけをするための質問文になります。今回は
「 用件を具体的にお話ください。
」と登録してあります。 - Number of Retriesは、聞き取りができなかった場合の試行回数になります。今回は
3
が登録されています。 - Retry Promptsは、再試行する場合の質問文となります。今回は
「 すみませんが、うまく聞き取れませんでした。用件を具体的にお話ください。
」と登録してあります。
確認が終わったらCloseボタンを押します。

用件による分岐
「用件による分岐」
分析をするためにNLU
用語 | 説明 |
---|---|
Classification | NLUを実行するためのノードです。実行時に、以下のインテントやエンティティを利用します。 |
インテント |
NLUで学習をするための基礎データです。たとえば請求書に関する問い合わせのサンプルデータとして |
エンティティ |
エンティティを使うことで、インテントの一部をさらに細かく指定できます。たとえば |
注意:2024年10月現在、エンティティの登録時に日本語入力が正常に動作しないため、日本語ではエンティティが利用できません。またNLUを利用する場合、$0.
今回はすでに請求書に関するインテントと料金の関するインテントの2つを定義しています。
インテントを確認するには、左側のプロパティアイコンをクリックして、Intentsを選択します。それぞれクリックすると、実際に登録されているデータを確認できます。

「用件を聞く」
- Classification Parameter欄には、分析対象となるパラメータを指定します。
「 USER.
」REQUIREMENT が選択されていることを確認します。 - Intentsには、分析に利用するインテントを指定します。すでに
「 請求書
」と 「 料金
」の2つが登録されています。
確認ができたら、Closeボタンを押してプロパティウィンドウを閉じます。

用件を復唱する
「用件を聞く」
ノードの名前 | 発話内容 | 接続する直前ノードの設定値 |
---|---|---|
請求書に関するお問い合わせ | 請求書に関するお問い合わせですね。 | 請求書 |
料金に関するお問い合わせ | 料金に関するお問い合わせですね。 | 料金 |
その他の問い合わせ | 大変申し訳ございませんが、こちらの番号では請求書もしくは料金に関するお問い合わせのみをお受けしております。 | Missed |
中間テスト①:チャットを使ったテスト
ここまでのフローを一度テストをしてみます。
AI Studioのテストは、電話とチャットを使って行うことができます。ここではチャットを使ってテストをしてみましょう。
画面上部にあるTesterボタンを押します。

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

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

電話番号をAI Studioに紐付ける
電話番号を使ってテストをするために、購入済みの電話番号をエージェントに紐づけます。
左上のハンバーガーメニューから、Phone Settingsを選択します。

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

電話番号が紐付けられたことを通知するダイアログが表示されますので、Closeボタンを押してウィンドウを閉じます。
残りのフローを作成していく
電話番号の紐づけも完了したので、続けてフローを作成していきましょう。
料金の問い合わせをSMSで回答する
問い合わせ内容が料金に関するものだった場合に、料金ページのURLをSMSで送信するようにします。
左側のNODESからSend SMSノードをドラッグ・

このSend SMSノードのプロパティウィンドウを開きます。
- ウィンドウ上部に
「 SMSを送信
」と入力し、ノードに名前をつけます。 - From欄には
「 HANDSON
」と入力します。 - To欄では、まず
「 $
」を入力し、表示されるリストから 「 $CALLER_
」PHONE_ NUMBER を選択します。 - Body欄には
「 料金は以下のページにて公開しております。https://
」kwcplus. kddi-web. com/ service/ vonage/ price と入力します (URLは何でもOKです)。
ここまで設定したら、Save & Exitボタンを押して保存します。

実際にSMS送信をするためには、US番号が必要になります。ただし、海外経由でのSMS送信では電話番号を通知できません。その代わりにAlpha-numeric sender idと呼ばれる3〜11文字の英数字をFrom値として指定できます。$CALLER_
はシステムパラメータで、発信者の電話番号が格納されています。
料金に関する問い合わせノードと今作成したSend SMSノードを繋いでおきます。
SMSを送信した旨を報告する
SMSの送信が完了したら、その旨をユーザーに報告するようにします。次の手順で設定してください。
- 左側のNODESからSpeakノードをドラッグ・
アンド・ ドロップします。 - Speakノードのプロパティウィンドウを開きます。
- ノードのタイトルに
「 SMS送信を報告
」と入力します。 - Agent saysに
「 ただいま、料金ページのURLをSMSで送信いたしましたので、お手数ですがご確認をお願いいたします。
」と入力します。 - Save & Exitボタンを押したのち、Closeボタンを押します。
SMSを送信ノードとの接続も忘れないようにしておきましょう。

担当者のメールアドレスを登録しておく
着信があったこととSMSを送付したことを担当者にメールで伝えるために、事前に担当者のメールアドレスを登録しておきます。
左側のPROPERTIESからContactsメニューを選択して、Create Contactボタンを押します。

Contactでは以下の項目を設定します。
- 画面上部にコンタクト名
(メールを送信したい担当者名) を入力します。 - Phone Numberに担当者の電話番号を入力します
(E. 164形式[2])。 - Email欄に担当者のメールアドレスを入力します。
設定後、Save & Exitボタンを押します。

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

設定後、SMS送信を報告ノードと今作成したノードを接続しておきます。
請求書に関する問い合わせの受け付け応答する
請求書に関する問い合わせについて、受け付けを行った旨を回答しましょう。
左側のNODESメニューからSpeakノードをドラッグ・
- ウィンドウ上部に
「 受付完了
」と入力し、ノードに名前をつけます。 - Agent says欄には
「 請求書に関するお問い合わせを受け付けました。追って担当者よりご連絡いたしますので、しばらくお待ち下さい。
」と入力します。
Save & Exitボタンを押したあとに、請求書に関する問い合わせノードと接続しておきます。

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

設定後に、受付完了ノードと今作成したノードを接続しておきます。
電話を切断する
ここまでのフローが完成したところで、通話が正常に終わるように電話を切断する処理を追加します。
左側のNODESメニューからEnd Callノードをドラッグ・

中間テスト②:電話を使ったテスト
ではここまでの状態をテストしてみましょう。
今回は、実際の電話機を使ってテストを行います。ただ、現在はUS番号しか購入していないので、皆さんからの携帯からかけるのではなく、AI Studioから皆さんの電話に発信して、一連のフローをテストしていきます。
まずは、画面上部のTesterボタンを押します。

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

その後、次の設定を行います。
- 国の選択リストから
「Japan (+81)」を選択します。 - 電話番号欄には、自分の電話番号の先頭の0を外したものを設定します。
そしてCallボタンを押します。

自分の電話機にUS番号から着信がかかりますので、一連のフローをテストしてください。あわせてSMSやメールが届くことも確認しておきましょう。
ここまでで受付業務のコールフローの全体の流れは作成できました。後編では、AI StudioにあるOpenAIとの統合機能を使って、応答メールの文面生成などを組み込んでいきます。
(後編に続く)