高度なシナリオの設定
ここでは、基本的なシナリオ設定の考え方を理解した上で理解した上で、より柔軟で賢いエージェントを作成するための機能を解説していきます。
変数設定
エージェントは対話の中で得られた情報や、内部的なフラグなどを変数として保持することができます。設定した変数は、メッセージや後述する条件分岐で利用することが可能です。
変数を設定することが出来るのは、以下のコンポーネントです。
・マッチング条件
・前処理
・ルール(条件、メッセージ、コマンド、後処理)
特殊文字「#」に続いて変数名を選択することで変数を呼び出すことができます。
※「#」に続く文字列が変数名以外の場合はそのまま「#」を含めた文字列として処理されます。
変数の管理について
変数は、エージェントの[設定] – [変数一覧]のページで管理します。追加、名前の変更、削除が可能ですが、トピック内で利用されている変数は削除することができませんのでご注意下さい。
変数の予約語について
変数名は任意の名前を指定することが可能ですが、以下のリストに示す文字列はシステム内の予約語となっており、使用することができませんのでご注意ください。 予約変数は以下の記法で使用することが可能です。
@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(パターン) | パターンに記載した正規表現ルールと比較 |