Alexa Dev Day Tokyo 2018レポート- VUIワークショップ第二部・第三部 #AlexaDevDay #alexa
こんにちは、中村です。 今日は2018年10月12日、13日に千葉はヒルトン東京ベイにて行われた「Alexa Dev Day Tokyo 2018」の様子をレポートします。 この記事では、音声デザインワークショップ第二部・第三部のセッションレポートになります。スピーカーはAmazon JapanのシニアソリューションアーキテクトであるJustin Jeffress氏、同じくデベロッパーエバンジェリストの畠中俊巳氏です。
はじめに
午前中の第一部では、スキルを使用する人(ペルソナ)の設定・台本の作成を行いました。
レポート
会話デザイン
手間の軽減
すでに知っていることは聞かずに記憶する。台本から保存しておいていい項目を洗い出す。
ex. 名前・住所
会話の分断
会話の分断が起きそうな箇所を洗い出す。
- 同義語(シノニム)
- コンボブレイカー(予想外の会話が発生しそうな箇所)
まとめ
- ペルソナの設定
- 台本作成(ペルソナがやりたいことを考える)
- キャッチボールのデザイン
- ハッピーパスを作成
- コンテキストのギャップを見つける
- 聞かなければならない情報を洗い出す
- スロットになる
- 手間の軽減
- 会話の分断
- ユーザーは予想外の発話をするので想定できる分を洗い出す
フローチャートだと困難になりうるので、台本に記載していく。
ビルド
今回のスキルでは、4つの項目を実装する。
- ダイアログ管理
- メモリと永続性
- コンテキストの切り替え
- 条件に応じたスロット収集
原則: 一息で言える長さの原則
- 一度にたくさん聞かれると忘れてしまうので、一気に聞かない
- ダイアログモデル
- Alexaが自動でスロットを収集してくれる
- 必要情報を会話の中で取得する
ダイアログ管理
スロット
台本で記述したユーザーから取得しなくてはいけない項目をスロットとして定義し、サンプル発話に反映する。
同義語(シノニム)の登録
ユーザーの発話のゆらぎをより拾えるように登録する。
Alexaからのレスポンスには、使用した言葉を使う。スロットの値を使用するとユーザーが誤解するため
メモリと永続性
追跡
- セッションアトリビュートはセッションが終わると消滅してしまうので、DynamoDB等を利用して永続化する
同じことを聞かないようにDBにアクセスして以前聞いたものを取得しスロットに追加する。 DynamoDBにはユーザーIDをキーに保存されておりユーザーIDはスキルのON/OFFでも変化するため、最初から情報を取得する必要がある
会話の中断(コンテキストの切り替え)
ダイアログモデルでは、一旦インテントから抜けてしまうとスロットの値が抜けてしまう。
- インテント名ごとにセッションアトリビュートを保存しておく。
- セッションアトリビュートを取得しリストアする。
- 新しいスロットを取得したらセットしておく。
- Alexaがスロットを取得済みを認識するために、更新を通知する。
条件に応じたスロットの収集
サンプルコードの中で説明。3つのハンドラーで、持っている情報・足りない情報を確認する。
ハンドラーの処理順序について
最初に True を返したハンドラーがリクエストを処理する。優先順位を注意して実装する。
今回の場合は、郵便番号を取得するインテント(InProgressHadZipCaptureAddressIntentHandler)で検索できるので住所等は取得せず処理を進める。
まとめ
いかがでしたでしょうか。 実装における基本部分を再確認できるセッションでした。