kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Voiceflowにおける会話のコンテキストを考える ⑥環境コンテキスト

f:id:kun432:20200724191613p:plain

「Voiceflowにおける会話のコンテキストを考える」シリーズのやっと最終回です。今回は「環境コンテキスト」です。

この記事は「Voiceflowにおける会話のコンテキストを考える 」シリーズの第6回の記事です。他の記事は以下にあります。よろしければあわせて読んでみてください。

第1回 第2回 第3回 第4回 第5回 第6回(この記事)

目次

環境コンテキスト

実は環境コンテキストについては、「シチュエーショナルデザイン」シリーズの第2回でもやっています。

というか、そもそも「シチュエーション」というのはある意味「環境」に非常に近い考え方だと思いますね。コーヒーショップを題材に具体的な例を上げてみましょう。

時間

わかりやすいのは「時間」という環境です。一般的なコーヒーショップには営業時間がありますよね。営業時間中と営業時間外に訪れた場合、それぞれ店員の回答は違いますよね。とてもわかりやすいです。

営業時間中

いらっしゃいませ。ご注文は何になさいますか?

営業時間外

申し訳ございません。本日は終了しました。またのご来店をお待ちしております。

天候

天候はまさに「環境」です。晴れの日と雨の日だとやっぱり違いますよね。前回の「エアーチケット」でもそれっぽいことをやっていました。

f:id:kun432:20201220181002p:plain

サンプルでは「晴れ」しかないわけですが、もし雨の予報があった場合には、例えば以下のように変えてあげるのが良いでしょう。

わかりました。XXXX-XX-XXに神戸行きのチケットを予約しますね・・・おっと、当日の神戸の天気予報だと雨の可能性が高いみたいですね・・・日程を変えることもできますが、このまま予約しますか?

ユーザの違い

シチュエーショナルデザインでもあった「パーソナライズ」というのも、スキルから見た場合には「環境」と言えるでしょう。例えば、以下のような場合です。

初めて利用するお客様の場合

いらっしゃいませ。初めてのご利用ですね。当店ではたくさんの種類のコーヒーを取り扱っております。ご注文は何にしますか?

常連のお客様の場合

いらっしゃいませ。いつもご利用ありがとうございます。今日はハワイ コナのエクストラファンシーがちょうど入荷したところでおすすめですよ。ご注文は何にしますか?

今日誕生日のお客様の場合

いらっしゃいませ。いつもご利用ありがとうございます。(ファンファーレ)お誕生日おめでとうございます!今日はサービスでハワイ コナのエクストラファンシーを1杯無料で提供させていただきますよ。そちらでよろしいですか?

つまり、お客様の利用度合いやパーソナル情報との合致具合という「環境」の違いがコンテキストに影響を与えるということですね。

環境コンテキストによる分岐

ではこれをどういうふうに使うか、というところですが、「シチュエーショナルデザイン」シリーズや「コンテキストを考える」シリーズをここまで読んでいただいた方ならもうおわかりかと思います。環境要因を変数として保持してこれをもとにCondition Blockで分岐させることになります。

ということで、営業時間によって分岐する例を見てみましょう。

f:id:kun432:20201223012733p:plain

ちょっとだけコードを書いています。最初のCustom Code Blockの中にはこんなコードが入ってます。

const moment = requireFromUrl('https://cdn.jsdelivr.net/npm/moment');
hh = moment().add(9,'h').hours();

JavaScriptで時間を扱うライブラリである"moment"を読み込んで、現在時刻の「時」を取得しています。add(9, 'h')というのはmoment()で取得できる時間はUTCになっているのでJST、つまり日本時刻に置き換えていることになります。hours()で現在の「時」が取れるので、それを変数hhに保存しているというわけです(変数hhは予め作成しておく必要があります)

そしてCondition Blockです。

f:id:kun432:20201223013114p:plain

ここで変数hhを判定して、

  • hhが8よりも大きい(8は含まない)
  • かつ、hhが22より小さい(22は含まない)

つまり、9〜21時を営業時間として判定して、合致する場合は上へ、合致しない(else)場合は下へ流れるというわけですね。Condition Blockは何度も使ってきたので慣れてる方もいらっしゃると思いますが、こういう複雑な条件を設定することもできます。(ちょっと設定の仕方はコツがいりますが、別の機会に紹介したいと思います。)

まとめ

「Voiceflowにおける会話のコンテキストを考える」シリーズの最終回、「環境コンテキスト」でした。「コンテキストを考える」というのは、言い換えるとシチュエーションごとにユーザとの会話をデザインするということであり、「シチュエーショナルデザイン」と同じく、ユーザの会話体験を素晴らしいものにするための重要な方法の1つです。Voicelowを使えば、コンテキストに基づいた会話フローをかんたんかつ柔軟に構築することができますので、ご活用ください!