はじめてのminarai CS chat 中級編
中級編は初級編を読了した人向けです。 ここでは、より精細なシナリオを書くための方法を紹介します。
カテゴリを使おう
カテゴリは、ユーザーが話している話題をボットが記憶し、その話題についてのシナリオから優先的に検索して返答を返す機能です。
これを使うことで、ボットはよりユーザーが欲しい情報を返すことができます。
カテゴリを絞り込みたいシナリオのコマンド列にcategory カテゴリ名
を、その後に続けて発話されるシナリオのカテゴリ列にカテゴリ名
を書きます。
カテゴリを解除するときは、コマンドにcategory_none
を書きます。
シートの整理
また、カテゴリに関連して、大きな話題ごとにシートを分けておくと整理がしやすくなります。 例えば、観光案内botであれば、観光地、イベント情報、方言について、交通情報などといった、大きなくくりで分けておきます。 シート自体の編集は自由に行えますので、お好みの形式にカスタマイズしてみてください。
シートの追加方法とシートの無効化
新しくシートを追加するときは、1行目に項目名をコピーアンドペーストしておきます。 実際にシナリオとして認識されるのは2行目以降です。A列に1を入れた行が有効になりますが、 このシート自体を無効にしたいときは、シート名の前に、半角のアンダーバーを入れることでシート自体をボットに反映させないようにできます。メモや下書きなどにご活用いただけます。
コマンドを使おう
コマンドを書くと、通常のユーザとボットの対話とは違った動きをさせることができます。 以下、主なコマンドを紹介します(※がついているコマンドは必ずシナリオに組み込んでください)。
client_enter
ユーザがチャット画面を開いたときに、ウェルカムメッセージとして表示するボット発話を定義します。
ユーザ発話に#client_enter#
、コマンドにcategory enter
と書きます。
default
デフォルト発話を表示させます。
ユーザ発話に#default#
、コマンドにdefault_responded
と書きます。
category_top
FAQから質問一覧に戻るときなどに使います。
ボット発話の中に[category_top]
を使ったボタンを用意すると、
#category_top#
の発話に移動します。
resolved, resolved_yes, resolved_no
ボット発話で問題が解決したかどうかをユーザに聞くことができます。
まず任意の発話のコマンドにresolved
と書き、
#resolved#
と書いた行を用意し、ボット発話に質問と[resolved_yes]
と[resolved_no]
を設定したボタンを書きます。
#resolved_yes#
と#resolved_no#
では、resolved
でユーザが「はい」と「いいえ」どちらかを選んだ後のシステム発話を書きます。
このようにボット発話の直後にresolved
の発話が表示されます。
many_resolved_no※
ユーザがresolved_no
を押した回数が一定を超えたとき、このコマンドのボット発話を自動で送ります。
many_default_responded※
ボットがdefault
の発話を返した回数が一定を超えたとき、このコマンドのボット発話を自動で送ります。
many_small_talk※
ユーザがボットに発話した回数が一定を超えたとき、このコマンドのボット発話を自動で送ります。
confirm_operator_call, operator_yes, operator_no, operator_out_of_time
有償プランでは、オペレーターへの切り替えを行うことができます。 オペレーター切替時に使うコマンドがこの4つです。
まず、オペレーター呼出に繋げられるシナリオのコマンドにoperator
と書きます。
これで任意シナリオの直後にオペレーター切り替えのダイアログが表示されます。
#confirm_operator_call#
が動作します。
(オペレーター対応時間の設定は別途紹介します)
#operator_yes#
と#operator_no#
は、ユーザが「はい」か「いいえ」を選んだ後のシステム発話を書きます。
#operator_yes#
では、コマンドにtakeover
を必ず書いてください。
このコマンドでオペレーターの呼び出しを行うからです。
オペレーターが対応時間外ならば#operator_out_of_time#
を返します。
コマンド列にはoperator_out_of_time_responded
を書いてください。
コマンドを自作する
コマンドは自分でも作ることができます。 自作コマンドは、主にボタン発話で使用します。
?ボタン名[コマンド名]
を、ユーザ発話に#コマンド名#
を書いています。
コマンド名には英語も日本語も使えます。
ユーザ発話のバリエーションを増やそう
ユーザ発話を複数パターン作る方法と辞書とフレーズを引用する方法を組み合わせて、いろんなパターンのユーザ発話を網羅できるようにします。
まず必要なワードとフレーズを辞書ファイルに登録しておきます。
${芋けんぴ}[[について|]][[${教えて}|${知りたい}|${何}]]
[[単語|]]
は、この部分の単語があってもなくてもよいという書き方です。
この書き方をすると、
芋けんぴって何
いもけんぴとは何ですか
芋ケンピについて教えて
イモケンピのことを知りたい
といったユーザ発話をこの1行で認識できるようになります。
いろいろな表現に対応できるように考えてみましょう。
ただし、一つのユーザ発話を細かく分けすぎると、更新時にエラーメッセージQuery makes many patterns
が表示されてしまいます。
IDでシナリオ同士を繋げよう
IDは、特定のシナリオに入ったときだけ検索対象になる発話を設定できる機能です。
返答ID
と前のID
の2つをセットで使います。
sight
が入っています。
この場合、ユーザがただ「中部」と発話してもデフォルト扱いになりますが、
リンクを貼ろう
ボット発話の中にリンクを埋め込むことができます。
半角スペースを入れるか改行してURLを書くか、[文字列](URL)
を書きます。
文字の色やサイズを変えてみよう
<span style="color:文字の色;font-size:文字のサイズ">文字列</span>
で、ボット発話の文字の色やサイズを変更できます。
例えば<span style="color:red;font-size:20pt">文字列</span>
ならば、赤色で20ptの大きさの文字列になります。
画像を貼ろう
ボット発話に画像を添付できます。
!(画像URL)
と書きます。
サジェストを表示させないようにしてみよう
ユーザ発話を入力中、このように発話の候補(サジェスト)が表示されます。(本番環境では最大4つ、デバッガでは上限なし)
1
と入力すると、その行のユーザ発話はサジェストに表示されなくなります。
1つのボット発話に対してユーザ発話が複数あるときは、代表で一つ選んだユーザ発話以外は、サジェストなしにすることをおすすめします。
動画はじめてのminarai CS chat中級編
中級編1 カテゴリを使おう
0:13 カテゴリとは
1:35 カテゴリの記述方法
2:32 カテゴリ解除の方法
2:59 シートの整理
3:27 シートの追加方法
3:43 シートを無効にする
中級編2 コマンドを使おう
0:12 【client_enter】ウエルカムメッセージ
0:30 【default】デフォルト発話
0:51 【category_top】TOPへ戻る
1:13 【resolved】解決しましたか?はい・いいえ
1:56 【many系】一定回数による自動返答
2:12 【many_default_responded】デフォルト発話が一定回数を超えた場合
2:22 【many_resolved_no】resolved_noが一定回数を超えた場合
2:33 【many_small_talk】ボタンのない発話が一定回数を超えた場合
2:42 many系の回数設定
3:59 オペレータ機能を利用する<※有料プラン>
5:42 コマンドを自作する
中級編3 シナリオ記述方法について
0:16 辞書ファイルに登録
1:27 IDでシナリオ同士を繋げよう
2:26 前のIDと返答ID
3:04 リンクを貼ろう
3:31 文字の色やサイズを変えてみよう
4:17 画像を貼ろう
4:49 サジェストを表示させないようにしてみよう