はじめての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つをセットで使います。

ここでは「高知の観光スポット」の返答ID列と、「中部」「東部」「西部」の前のID列に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 サジェストを表示させないようにしてみよう

<再生リストはこちら>

results matching ""

    No results matching ""