音声ボットにチャレンジ Part 2

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/31baf6d2-d3a5-3baf-8ac0-d411066a8e15.png)

[前回の記事](https://qiita.com/yanagih/items/0aa39ff5b2e4047fe736)では、[ピザ注文アクション](https://qiita.com/yanagih/items/f98cff2b5b9ce3208fc4)をそのまま使用して音声ボットを構築しました。

今回は、音声ボット構成時の
* 考慮点
* カスタマイズ

についてお話ししたいと思います。

# 考慮点

考慮点については、[音声のためのダイアログの最適化](https://cloud.ibm.com/docs/assistant?topic=assistant-deploy-phone#deploy-phone-dialog)に整理されていますので、順番に見ていきます。

#### ダイアログのテキスト応答に HTML 要素を含めないでください。 書式設定を追加するには、Markdown を使用します。

チャットボットの場合は、人間が目で確認したり読んだりするため、HTML 要素を使って、回答内容を装飾するケースがありますが、音声ボットの方は音声による読み上げとなるため、誤って HTML 要素自体を読み上げないよう、**HTML 要素を含めてはいけない**と記載されています。
基本的には、[単純なテキスト応答](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-overview#dialog-overview-simple-text)を推奨しています。
ただし、**書式設定を追加するには、Markdown を使用します**ともありますので、Markdown での応答にできれば、音声ボット、チャットボットの両方に使える対話フローの作成が可能になりそうです。

#### 「休止」応答タイプはサポートされていません。

**「休止」応答タイプ**とは、チャットボットからの返答をすぐに表示するのではなく、人間からの応答のようにタイピング時間をイメージさせるウェイト時間を設定できる機能です。
チャットボットを前提に用意されている応答タイプなので、当然ながらサポートされないとあります。
ただし、電話でも**一呼吸入れる**、という話し方があるので、音声ボット用に、```turn_settings.timeout_count```変数が用意されています。

#### ダイアログ・ノードに検索スキルの応答タイプを含めて、電話統合で読み上げることができます。 前置きのメッセージ (ナレッジ・ベースを検索しました など) の後、1 つ目の検索結果の本文だけが読み上げられます。

[検索エンジンとの連携](https://qiita.com/yanagih/items/a55d48892572e2df3383)がサポートされるとあります。検索エンジンからの結果であることがわかるように、**前置きメッセージ**を加えられるというのは気が利いていますね。
前置きメッセージを含めて **5,000 文字以内**という制限事項がありますが、電話でのやり取りなので、5,000 文字に入っていれば良い、ということではなく、簡潔な内容になるような調整が必要になると思います。
多くの場合は、**Answer Finding 機能を有効化**してあると思いますので、長文とはならず、1 or 2 センテンス程度になると思います。

#### 「ヒューマン・エージェントに接続」応答タイプを使用して、ヒューマン・エージェントへの転送を開始します。

オペレータから別にオペレータに電話が転送された体験をお持ちの方もいらっしゃると思います。
音声ボットにおいても、音声ボットが回答できない場合、人間のオペレータに転送する機能がサポートされています。

#### 「チャネル転送」応答タイプを使用して、Web Chat 統合への転送を開始します。

上のケースに似ていますが、音声ボットが回答できない場合、人間ではなく、Web Chat に転送する機能がサポートされている、とあります。Web Chat への URL を SMS メッセージを使って送信する方法とのことです。
それまでの会話内容が一緒に Web Chat 側にも送信されるようですが、具体的な動作イメージについては、またの機会に確認し、 Qiita の記事としてご紹介したいと思います。

# カスタマイズ

### 音声ボット側から電話を切る設定

音声ボットと電話で対話している時に気がついがのですが、音声ボットは、こちらから電話を切らない限り、通話を終了することはありません。
場合によっては、音声ボット側から電話を明示的に切りたいユース・ケースがあると思います。

そこで、カスタマイズの一例として、**音声ボット側から電話を切る設定**をご紹介します。
方法は、オンライン・マニュアルの[コールの終了](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-voice-actions#dialog-voice-actions-hangup)が該当します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/e2107ddf-5e62-dbf2-3e80-554afeb3214d.png)
ただ、これだけでは、どのように設定すれば良いのかわかりにくいと思いますので、具体的な設定方法をご紹介します。

電話を切りたい**ステップ**をクリックします。
ここでは、**ピザの注文アクション**の注文受付完了である**ステップ 5** を選択します。
応答文をの右上の **\<\/\>** をクリックします。

:::note info
**ピザの注文アクション** とは、[こちらの記事](https://qiita.com/yanagih/items/f98cff2b5b9ce3208fc4)で作成したアクションになります。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/f41bba3e-28ce-04ca-4278-ca9f4f4a4884.png)
**JSON View 表示**に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/2c8be835-430a-eeb6-c4e4-b59ea82a7091.png)

```JSON:電話を切る
    {
      "response_type": "end_session"
    }
```
**generic[]配列** 内に **電話を切る** スニペットを追加します。
(こんなイメージです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52151/1ba0042d-8ab1-38d7-a6f5-8185fb07b20b.png)


設定は以上です。
この設定により、**『ご注文を承りました』** を話した後、自動的に電話が切断されます。

このほかにも、[電話対話の処理](https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-voice-actions)には、

* Speech to Text サービスへの詳細設定の適用
* Text to Speech サービスへの詳細設定の適用
* 人間の担当者に通話を転送する
* 保留音または音声録音を再生する
* キーパッド入力を使用可能にする
* 会話を Web チャット統合に転送する
* 電話会話中にテキスト・メッセージを送信する

のカスタマイズ方法が書かれていますので、興味のある方は、試してみてください。

# (参考) Voice Agent with Watson からのマイグレーション

Watson Assistant で電話統合機能が提供される前は、**Voice Agenet with Watson** と呼ばれるサービスが提供されていました。
既に新規でのサービス受付は終了しております。
このサービスをご利用のユーザーは[マイグレーション・ガイド](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-deploy-phone-config#deploy-phone-config-migrate-from-va)を参照し、早期にマイグレーションのご検討をお願いします。

# いかがでしたでしょうか

チャットボット用に作成した対話フローをそのまま使用することは可能ですが、音声ならではの**考慮点**と**カスタマイズ方法**をご紹介しました。

# 参考情報

### 参照したリファレンス

#### Classic Watson Assistant: 電話対話の処理
https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-voice-actions

#### New Watson Assistant: Voice Agent with Watson からのマイグレーション
https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-deploy-phone-config#deploy-phone-config-migrate-from-va

### 関連する Qiita Advent Calendar 2022 の記事

https://qiita.com/yanagih/items/0aa39ff5b2e4047fe736

https://qiita.com/yanagih/items/f98cff2b5b9ce3208fc4