高度なシナリオの設定

ここでは、基本的なシナリオ設定の考え方を理解した上で理解した上で、より柔軟で賢いエージェントを作成するための機能を解説していきます。

変数設定

エージェントは対話の中で得られた情報や、内部的なフラグなどを変数として保持することができます。設定した変数は、メッセージや後述する条件分岐で利用することが可能です。変数を設定することが出来るのは、「前処理」コンポーネントと「後処理」コンポーネントです。

変数の管理について

変数は、エージェントの[設定] – [変数一覧]のページで管理します。追加、名前の変更、削除が可能ですが、トピック内で利用されている変数は削除することができませんのでご注意下さい。

変数の予約語について

変数名は任意の名前を指定することが可能ですが、以下のリストに示す文字列はシステム内の予約語となっており、使用することができませんのでご注意ください。 予約変数は以下の記法で使用することが可能です。

@sebastien.{予約変数名}

詳しくは前処理・後処理における特殊記法を参照してください。

予約変数名 説明 初期値 読取り専用
topic トピックID
theme テーマ
input ユーザ発話の全文
that 前回発話文
id 前回発話ID
emotion 感情表現ID
total_access 利用回数 0
days_from_last_access 最終利用日後の経過日数 0
days_from_first_access 初回利用後の経過日数 0
intimacy 親密度
season 季節
time_period 時間帯
dialog_status 対話ステータス(JSON文字列)
srai_count srai再帰呼び出し回数 0
language リクエストの言語コード
latitude リクエストの緯度
longitude リクエストの経度
sendTime リクエストの送信日時

親密度(intimacy)の種類について

値(ja-JP) 説明
はじめて 初回利用後の経過日数が0日
知り合い 初回利用後の経過日数が1-6日かつ
利用回数が10回未満。または利用回数が5回未満
友達 初回利用後の経過日数が1-6日かつ
利用回数が10回以上。または利用回数が6~20回
仲良し 利用回数が21~150回
とても仲良し 上記以外

時間帯(season)の値の種類

値(ja-JP) 説明
3月,4月,5月
6月,7月,8月
9月,10月,11月
12月,1月,2月

時間帯(time_period)の値の種類

値(ja-JP) 説明
早朝 4時-5時
6時-10時
11時-15時
夕方 16時-18時
19時-22時
深夜 23時-3時

前処理

前処理とは?

前処理とは、マッチングした発話に対して最初に実行される処理です。前処理では変数に値を代入したり、連携ボットを呼び出したりすることができます。

前処理を作成する

前処理からぶら下がっているプラスアイコンをクリックして作成します。

前処理を設定する

変数名の入力欄をクリックし、変数名を入力し追加します。または、サジェストで表示された登録済みの変数を選択します。

変数と値の組み合わせで前処理は実行されます。 変数は登録済みのものならサジェストされ、未登録のものであればその場で登録もできます。

後処理について

後処理とは?

後処理とは、ルール内で最後に実行される変数の制御処理です。一時的な変数の初期化などにご利用ください。

後処理を作成する

後処理からぶら下がっているプラスアイコンをクリックします。

後処理を設定する

変数名の入力欄をクリックし、変数名を入力し追加します。または、サジェストで表示された登録済みの変数を選択します。

変数と値の組み合わせで後処理は実行されます。 変数は登録済みのものならサジェストされ、未登録のものであればその場で登録もできます。

前処理・後処理における特殊記法

前処理・後処理で変数に代入することができる要素は、テキストだけではなく、いろいろな種類の関数が予め用意されています。

種類 記法 説明
テキスト 任意のテキスト 文字列
基本操作 @clear 変数に入っている値を削除する
変数 #{変数名} 変数の値を代入する
発話抽出 @star(index) ユーザ発話のアスタリスク部分を取り出す
固有表現抽出 @sebastien.namelister(i) 発話から抽出した固有表現のi番目を取得する。種類を問わない。
@sebastien.noun 名詞
発話から抽出した名詞
@sebastien.name 人名
発話から抽出した人名
@sebastien.location 地名
発話から抽出した都道府県や地名
@sebastien.datetime 日付(絶対時刻)
発話から抽出した日付表現をTimestampに変換した値
@sebastien.date 日付
発話から抽出した日付表現
@sebastien.time 時刻
発話から抽出した時刻表現
@sebastien.organization 組織名
発話から抽出した組織名表現
@sebastien.money 金額
発話から抽出した金額表現
@sebastien.percentage 割合
発話から抽出した割合表現
連携ボットの返答 ${ボットID} 呼出し先ボットの応答情報から取得したシステム発話
システム予約変数 @sebastien.topic トピックID
@sebastien.theme テーマ
@sebastien.input ユーザ発話の全文
@sebastien.that 前回発話文
@sebastien.id 前回発話ID
@sebastien.emotion 感情表現ID
@sebastien.total_access 利用回数
@sebastien
.days_from_last_access
最終利用日後の経過日数
@sebastien
.days_from_first_access
初回利用後の経過日数
@sebastien.intimacy 親密度
@sebastien.season 季節
@sebastien.time_period 時間帯
@sebastien.dialog_status 対話ステータス(JSON文字列)
@sebastien.srai_count srai再帰呼び出し回数
@sebastien.language リクエストの言語コード
@sebastien.latitude リクエストの緯度
@sebastien.longitude リクエストの経度
@sebastien.sendTime リクエストの送信日時

条件分岐

条件とは?

ルールに条件を設定することで、ある特定の場合にのみそのルールに処理を分岐させるような処理が出来るようになります。

同じユーザの発話が来た場合にも違うシーケンスに分岐させることで、返答のバリエーションの確保が可能です。より細かく意図した対話を実現することができます。

条件を作成する

条件からぶら下がっている(プラスアイコン)をクリックします。

条件を設定する

変数または外部サービス呼び出し結果と、比較する値の組み合わせを設定します。
ここで、前処理で使用した変数を活用することもできます。組み合わせ次第で記憶をもたせた対話などが可能です。

入力欄をクリックして変数または外部サービスを設定します。

比較する値を設定します。

複数条件の設定について

条件は複数設定することができます。複数条件を設定した場合AND条件となります。

条件における特殊記法

変数と比較するために設定できる要素として、以下の要素を利用することができます。

要素 説明
テキスト 入力されたテキストと比較
#変数 指定された変数の値と比較
$ボット 指定されたボットのレスポンス文と比較
@star 入力文から抽出した要素と比較
@sebastien @sebastienで出力した内容と比較
EXSIT() 比較対象の変数に値が存在する場合
EMPTY() 比較対象がundefinedのと場合
LESS_THAN(x) 引数の数値の値が比較対象より小さい場合
GREATER_THAN(x) xの数値が比較対象より大きい場合
BETWEEN(x,y) 比較対象の数値がxとyの範囲にある場合
REGEX(パターン) パターンに記載した正規表現ルールと比較