Vonage AI Studio を使って、電話受付業務を作成しよう
はじめに
みなさん、こんにちは。KDDI ウェブコミュニケーションズで CPaaS のエバンジェリストをしている高橋です。
この記事では、Vonage AI Studio を使って、電話の一次応答をノーコード・ローコードで作成します。
本記事の対象となる読者
- Vonage を初めて触る方
- Vonage AI Studio を使ってみたい方
- 電話の受付業務を改善したいと考えている方
※この記事については、コーディングスキルは不要です。
Vonage とは
Vonage は、米国ニュージャージー州に本社を置くCPaaS(Communication Platform as a Service)企業です。
もともとは VoIP(Voice over IP)企業としてスタートしましたが、いくつかの企業買収を行うことで、コミュニコミュニケーションサービス全般をサポートすることができる企業に発展しました。現在はスウェーデンの大手通信機器会社エリクソンの傘下に入っています。
Vonage AI Studio とは
Vonage AI Studio (以下、AI Studio)は、ノーコード・ローコードでコールフローを作成できるツールです。Vonageが提供しており、ブラウザ上で動作します。
上の図のように、ノードと呼ばれる部品をドラッグ・アンド・ドロップして接続するだけで、簡単にコールフローが作成できます。
用語定義
用語 | 説明 |
---|---|
エージェント | AI Studioでフローを作成する最も大きな単位です。エージェント単位で言語や話者、リージョンやタイムゾーンの設定を行います。スタンダードプランでは、最大10個のエージェントが作成できます。 |
イベント | フローが起動するトリガーです。イベントには、Inbound call / Outbound call / End call / API Eventの4つがあります。 |
ノード | フローを構成する各部品のことです。ノードは、Conversation / Advanced / Actions / Integrations / Flow Control の5つのカテゴリーに分類されます。 |
プロパティ | いくつかのノードにはプロパティと呼ばれる要素が含まれます。たとえば、自然言語解析におけるエンティティやインテントや、フロー内で共有する変数などがプロパティになります。 |
シナリオ
本記事では、以下のシナリオでコールフローを作成していきます。
- 電話をかかってきたら、まずは会社名を名乗ります。
- 具体的な用件を聞きます。
- 用件が請求書に関するものか、料金に関するもののいずれかの場合のみ受け付けます。
- 料金に関する質問であれば、料金ページのURLをSMSで通知します。
- 請求書の質問であれば、ナレッジベースに従って回答を行います。
- 担当者に問い合わせ内容をメールで伝えます。
準備
このシナリオをAI Studioで作成するためには、あらかじめ以下の準備が必要になります。
- Vonage アカウント(こちらから取得が可能です)
- OpenAIのAPIキー(ない場合はOpenAI連携が実装できませんが、それ以外は実装可能です)
- ブラウザ(Chrome推奨)
- 通話が可能な携帯電話 or スマートフォン
- Vonage クーポンコード(トライアルアカウントで電話番号を購入する際に必要です)
AI Studioの起動
- Vonage APIコンソールにログインします。
- 左側からAI Studioを選択し、さらに右側に表示されるAI Studioにアクセスするボタンを押します。
新しいエージェントの作成
- Create Agentボタンを押します。
- Agent Typeの中からTelephonyを選択し、Nextボタンを押します。
エージェントの基本情報を登録していきます。
- Regionは、「United States」を選択します。現在選択できるのは、「United States」か「Europe」の2つのみとなります。
- Agent Nameには、任意の名前を指定します。今回は「VonageHandson」としました。
- Languageは、「Japanese」を選択します。2023年11月現在、日本語はアルファリリースとなります。
- Voicesでは、話者を選択します。日本語は13種類から選択できます。Premiumと書かれた話者は別料金(€0.0027/100文字)が必要です。それ以外は AI Studio の料金プランに含まれます。
- Time Zoneは、「Asia/Tokyo」を選択します。
- 上記設定が完了したら、Nextボタンを押します。
- Start from Scratchを選択し、Nextボタンを押します。
イベントの種類を選択します。
イベントとは、どのような状況でフローを実行するかの指定で、以下の4種類があります。
イベント種別 | 説明 |
---|---|
Inbound Call | ユーザーからの着信時に実行されます。 |
Outbound Call | ユーザーへの発信で、ユーザーが応答した時に実行されます。 |
End Call | 通話が終了したときに実行されます。 |
API Event | 外部からのAPI経由で実行されます。 |
- 今回は着信時のフローを作成するので、Inbound Callを選択します。
- Createボタンを押します。
上記のようなフロー作成画面が表示されればエージェントの作成は完了です。
フローの作成
ではいよいよシナリオに従ってフローを作成していきましょう。
会社名を名乗る
音声を発話させるには、Speakノードを利用します。
左側のNODESメニューからSpeakノードをドラッグ・アンド・ドロップします。
- ドロップしたノードのClick here to edit部分をクリックすると、プロパティウィンドウが開きます。
-
プロパティウィンドウの上部で、ノードの名前を指定します。今回は、「会社名を名乗る」としておきます。
-
Agent saysで、最初に会社名を名乗る文章を入力して、Enterボタンを押します。作成した文章の右側にある紫色の再生ボタンを押すと、設定した内容を音声で聞くことができます。
-
Save & Exitボタンを押して、設定を保存します。
-
次に、スタートノードと今作成したノードを繋げます。
- Startノードの右側にある◯印から、先程作成したSpeakノードの左側の◯印まで線を伸ばすことで、ノードとノードが接続されます。
問い合わせ内容を聞く
まずは用件を格納するためのユーザーパラメータを作成します。ここで作成するパラメータは、エージェント内部のノード間で共有する変数だと思っていただければ大丈夫です。
- 左側のPROPERTIESから、Parametersメニューを選択します。
- Parametersウィンドウが開くので、User ParametersのAdd user parameterリンクをクリックします。
- Name欄に「REQUIREMENT」と入力します。
- エンターキーを押してパラメータを登録します(セーブしたメッセージが出ることを確認してください)。
- Go Backボタンを押します。
- Closeボタンを押します。
用件を聞くためのノードを追加します。
- 左側のNODESの中のCollect Inputノードをドラッグ・アンド・ドロップします。
- ドラッグしたノードのClick here to editと書かれた場所をクリックします。
- プロパティウィンドウが開きます。
- プロパティウィンドウの上部で、ノードの名前を指定します。今回は、「用件を聞く」としておきます。
- Parameterリストから、先ほど作成した「USER.REQUIREMENT」を選択します。ここで指定したプロパティに、ユーザーが話した内容が文字になって保存されます。
- Promptsフィールドを使って、問いかけ文を追加します。今回は「用件を具体的にお話しください。」と入力しておきます。
- Number of Retriesに、「3」を指定します。これにより再試行を3回行います。3回試しても入力がない場合は、No inputとして処理されます。
- Retry Promptsには、「すみませんが、うまく聞き取れませんでした。用件を具体的にお話しください。」と入力しておきます。
- それ以外の項目については、デフォルト値のままで問題ありませんので、最後にSave & Exitボタンを押して、設定内容を保存してください。
- 会社名を名乗るノードと、用件を聞くノードをつなぎます。
用件を精査する
では次に、ユーザーが問い合わせた内容を精査して、「請求書に関するもの」か、「料金に関するもの」だけをフィルタリングする処理を作成します。ユーザーが発話する内容を精査するために、NLU(Natural Language Understanding: 自然言語理解)を利用します。
Vonage AI Studioには、NLUを行うための仕組みが標準で用意されており、まずはその準備を行っていきましょう。
NLUで使われる用語の整理
用語 | 説明 |
---|---|
Classification | NLUを実行するためのノードです。実行時に、以下のEntitesやIntentを利用します。 |
インテント(Intent) | NLUで学習をするための基礎データです。例えば請求書に関する問い合わせのサンプルデータとして「請求書について確認したい」とか、「請求書が届いていない」、「請求書の宛先を変更したい」などを基礎データとして登録します。これにより、サンプルに近い言い回し(例:「請求書の明細金額を確認したい」でも請求書に関する問い合わせであることを認識できます。 |
エンティティ(Entities) | エンティティを使うことで、インテントの一部をさらに細かく指定することができます。たとえば、「請求書について確認したい」というインテントの「請求書」のところをエンティティとして登録しておくことで、ここが異なる発話(例:「支払期日を確認したい」)になった場合に、エンティティで切り分けを行うことができます。 |
インテントを登録する
今回は、請求書に関する問い合わせか、料金に関する問い合わせの2つにしぼりますので、インテントも2種類作ります。
- 左側のPROPERTIESメニューからIntentsを選択します。
- Intentsウィンドウが開くので、Create Intentボタンを押します。
まずは請求書に関するインテントを作成します。
- ウィンドウ上部に「請求書」と入力し、このノードに名前をつけます。
-
User Expressions欄を使って、以下の7つのトレーニングデータを登録します。
- 請求書について確認したい
- 請求書の内容について
- 今月の請求書について
- 先月の請求金額についてお伺いしたい
- 請求書の宛先を変更したい
- 請求書が届いていません
- 請求書を再発行してほしい
- Save & Go Backボタンを押します。
つづいて、料金に関するインテントを登録します。
- Create Intentボタンを押します。
- ウィンドウ上部に「料金」と入力し、このノードに名前をつけます。
-
User Expressions欄を使って、以下の5つのトレーニングデータを登録します。
- 月額基本料について知りたい
- 基本料は必要ですか
- 料金ページを教えてください
- 消費税はかかりますか
- インボイス制度に対応していますか
- Save & Go Backボタンを押します。
- 請求書と用件の2つのインテントが作成されたことを確認し、Closeボタンを押します。
Classificationノードを追加する
- 左側のNODESメニューからClassificationノードをドラッグ・アンド・ドロップします。
- ドラッグしたノードをクリックしてプロパティウィンドウを開きます。
- ウィンドウ上部に「用件による分岐」と入力し、ノードに名前をつけます。
- Classification Parameterのプルダウンリストから、NLUの対象となる文章が格納されている「USER.REQUIREMNET」を選択します。
- Intentsフィールドには、先程作成した2つのインテント(請求書と料金)を選択します。
- Save & Exitボタンを押します。
- 今作成したノードと用件を聞くノードをつなぎます。
用件別に一次回答を行う
- Speakノードを3つ追加します。
- それぞれに以下のプロパティを設定し、用件による分岐ノードの各設定値と接続します。
ノードの名前 | 発話内容 | 接続する直前ノードの設定値 |
---|---|---|
請求書に関するお問い合わせ | 請求書に関するお問い合わせですね。 | 請求書 |
料金に関するお問い合わせ | 料金に関するお問い合わせですね。 | 料金 |
その他の問い合わせ | 大変申し訳ございませんが、こちらの番号では請求書もしくは料金に関するお問い合わせのみをお受けしております。 | Missed |
中間テスト①
では、このあたりで一度テストをしてみたいと思います。
AI Studioのテストは、電話とチャットを使って行うことができます。
この時点ではまだ電話番号を購入していないため、チャットを使ってテストをしてみましょう。
- 画面上部にあるTesterボタンを押します。
- Start chatボタンを押します。
- ウィンドウの下部にあるテキストボックスに文字を入力することで一連のフローのテストを行います。
- エンターのみで「No Input」のテストができます。
- 請求書と料金の問い合わせがうまく振り分けられることを確認します。
- テストを繰り返す場合は、画面上部の繰り返しボタンを使います。
電話番号の購入
ここからの手順を行うために、電話番号を購入していきます。電話番号を購入するためには、以下のいずれかの条件が必要です。
- アカウントをアップグレードしている
- クーポンコードを適用している
- Vonage APIコンソールにログインします(AI Studioではありません)。
- 左側の番号メニューを展開し、番号を購入を選択します。
- 国のリストから「United States(+1)」を選択します。
- 機能のリストを開き、「SMS」と「Voice」をチェックします。
- Searchボタンを押すと、購入できるリストが一覧表示されます。
- 購入したい番号をリストから選択し、購入ボタンを押します。
- 確認ウィンドウが開くので、購入ボタンを押します。
- 画面上部に購入完了のメッセージが表示されれば、無事に番号が購入できています。
電話番号をAI Studioに紐付ける
では次に、今購入した電話番号を現在作成中のエージェントに紐づけます。
- AI Studioのコンソールに入ります。
- 左上のハンバーガーメニューから、Phone Settingsを選択します。
- 先程購入した番号をリストから選択します。
- Assign Numberボタンを押します。
- 電話番号が紐付けられたことを通知するダイアログが表示されます。
- Closeボタンを押してウィンドウを閉じます。
料金の問い合わせをSMSで回答
電話番号の紐づけも完了したので、続けてフローを作成していきましょう。
ここでは、問い合わせ内容が料金に関するものだった場合は、料金ページのURLをSMSで送信します。
- 左側のNODESからSend SMSノードをドラッグ・アンド・ドロップします。
- ドロップしたノードのプロパティウィンドウを開きます。
- ウィンドウ上部に「SMSを送信」と入力し、ノードに名前をつけます。
- From欄には、「HANDSON」と入力します。
- To欄では、まず「$」を入力し、表示されるリストから「$CALLER_PHONE_NUMBER」を選択します。
-
Body欄には、「料金は以下のページにて公開しております。
https://www.vonagebusiness.jp/communications-apis/ai-studio/pricing/
」と入力します。※URLは何でもOKです。 - ここまで設定したら、Save & Exitボタンを押して保存します。
- 料金に関する問い合わせノードと今作成したノードを繋いでおきます。
SMSを送信した旨を報告
SMSの送信が完了したら、その旨を報告します。
- Speakノードを使って、上の図のようにSMSを送信した旨を発話させるようにしておきます。
- SMSを送信ノードとの接続を忘れないようにしておきましょう。
担当者のメールアドレスを登録しておく
着信があったこととSMSを送付したことを担当者にメールで伝えるために、事前に担当者のメールアドレスを登録しておきます。
- 左側のPROPERTIESからContactsメニューを選択します。
- Create Contactボタンを押します。
- 画面上部にコンタクト名(メールを送信したい担当者名)を入力します。
- Phone Numberに、担当者の電話番号を入力します(E.164形式)。
- 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ノードをドラッグ・アンド・ドロップします。
- 上の図のように、メールを送信ノード2つと、その他の問い合わせノードを、いまドロップしたノードに接続します。
中間テスト②
ではここまでの状態をテストしてみましょう。
今回は、実際の電話機を使ってテストを行います。ただ、現在はUS番号しか購入していないので、皆さんからの携帯からかけるのではなく、AI Studioから皆さんの電話に発信して、一連のフローをテストしていきます。
- 画面上部のTesterボタンを押します。
- Start phone callボタンを押します。
- 国の選択リストから「Japan(+81)」を選択します。
- 電話番号欄には、ご自分の電話番号の先頭の0を外したものを設定します。
- Callボタンを押します。
自分の電話機にUS番号から着信がかかりますので、一連のフローをテストしてください。
SMSやメールが届くことも合わせて確認しておきましょう。
OpenAIと連携する
AI Studioの新機能として、OpenAI Integrationがあります。この機能をつかうことにより、AI Studio内からOpenAI APIを使った生成系AIの連携が可能になります。
今回はこの機能を使って、ナレッジベースの内容をもとにした適切な回答を作成し、請求書に関する質問が来たときに答えられるようにしてみたいと思います。
OpenAI Integrationの設定
Vonage API コンソールにログインします。
- 左側のメニューから統合を選択します。
- 右側に表示されているOpenAIを選択します。
- Name欄に「VoangeHandson」と入力します。
- Secret Key created on OpenAI欄に、OpenAI側で発行したシークレットキーを入力します。
- openaiと接続ボタンを押します。
OpenAIのフローを作成する
AI Studioの画面に戻って、フローに組み込んでいきます。
- 左側のNODESメニューからGenerative AIノードをドラッグ・アンド・ドロップします。もしこのノードが見つからない場合は、一度画面をスーパーリロードしてみてください。
次に、生成された文章を格納していくパラメータを作成しておきます。
- 左側のPROPERTIESメニューからParametersを選択します。
- Parametersウィンドウが開くので、Add user parameterをクリックして新しいパラメータを作成します。
- パラメータ名は「GENERATED_SENTENCE」としておきます。
- パラメータが追加できたら、Closeボタンを押してウィンドウを閉じます。
では、Generative AIノードの設定をしていきましょう。
- Generative AIノードのプロパティウィンドウを開きます。
- ウィンドウ上部に「回答分を生成」と入力し、ノードに名前をつけます。
- OpenAI Integrationのプルダウンリストから、先ほど作成した「VonageHandson」を選択します。
- User Input Parameterのプルダウンリストから、生成する元になるパラメータである「USER.REQUIREMENT」を選択します。
-
Knowledge base欄で、OpenAIに与える指示を記載していきます。今回は以下の文章を入力していきます。なお、先頭の
$USER.REQUIREMENT
は、手動で設定する必要があります。
$USER.REQUIREMENT
請求書のルールは以下のとおりです。
・請求書は、毎月月末に計算した金額を、翌月5営業日以内に発行しています。
・請求書は指定されたメールアドレス宛に送信しています。
・送信先メールアドレスが変わった場合は、ホームページから変更が可能です。
・請求書が届かない場合は、迷惑メールフォルダに入ってしまっている可能性がありますので確認してください。
・請求書の金額についてのお問い合わせは、折り返し担当者が連絡しますのでしばらくお待ち下さい。
・10月分からの請求書はインボイス制度に対応しています。
-
Configurationsを展開します。
- Waiting timeを、最大の25秒にセットしておきます。
以上でGenerative AIノードの設定は終了です。
- 請求書に関する問い合わせノードと、受付完了ノードを接続している線を削除します。削除は線を選択して、真ん中あたりに表示される✗アイコンをクリックします。
- 請求書に関する問い合わせノードと、回答文を生成ノードを接続します。
-
回答分を生成ノードの、
$USER.REQUIREMENT
とConversation Ended
の2つを、受付完了ノードに接続します。
次に、生成された文章をユーザーに伝えます。
- 受付完了ノードのプロパティウィンドウを開きます。
- 発話内容を、
$USER.GENERATED_SENTENCE
に変更します。 - Save & Exitボタンを押して、保存します。
最後に、担当者に送るメールも少し手直しをしましょう。
- メール送信(請求書)ノードのプロパティウィンドウを開きます。
- Body欄を上の図のように変更します。
- Save & Exitボタンを押します。
総合テスト
以上でフローはすべて完成です。テストを行い、想像どおりの回答が来ることを確認してみましょう。
パブリッシュ
テストがうまく動作したら、いよいよ本番環境にデプロイしましょう。
- 画面右上のPublishボタンを押します。
- Description欄に説明を書いて、Publishボタンを押します。
- パブリッシュが完了した画面が表示されれば、このフローは無事に公開されています。
後片付け
今回作成したフローは実行しない限り料金は発生しませんが、電話番号については毎月課金の対象となります。
課金を防ぐためにはハンズオンが終了した時点で電話番号の削除をしておくとよいでしょう。
- Vonage APIコンソールにログインします。
- 左側の番号メニューからあなたの番号を選択します。
- 一覧表示される番号の中から、削除したい番号の右側にあるゴミ箱アイコンをクリックします。
- Deleteボタンを押すと番号が削除されます。
まとめ
今回は、ノーコードで電話の一次応対フローを作成しました。AI Studioがあれば、エンジニアでなくてもコールフローが作成できることをおわかりいただけたかと思います。
今回利用した機能以外にも、AI Studioには多くの機能が用意されているので、ぜひ色々とチャレンジしてみてください。
最後にAI Studioの料金についても説明をしておきます。料金ページはこちらです。
スタンダードプランは無料で利用が可能ですが、月に10,000セッション(フローの実行)までという制限があります。また、スタンダードプランでも一部の機能はオプション料金が必要になります。
Discussion