変数(Predicate)

xAIMLでは、一般的なプログラミング言語に近いレベルの変数(Predicate)を使用できます。
変数はチャットボットの開発に最適化されており、用途に応じて後述の4つの種別を使い分けます。

ここで説明する変数の他に、システムPredicateや、以下のプレフィックスを持つ予約済みのPredicateがあります。
これらのPredicateはシステムによって管理されるため、一部を除き参照のみ可能となっています。
詳細は各リンク先をご覧ください。

種別一覧

種別 アクセス スコープ ライフサイクル 使用方法
ローカル変数 参照/更新 ボット(ユーザ別) 対話セッション <set name="_var_xxx">yyy</set>
ボット変数 参照/更新 ボット(ユーザ別) 永続※1 <set name="xxx">yyy</set>
グローバル変数 参照/更新 プロジェクト(ユーザ別) 永続※1 <predstore>xxx=yyy</predstore>
ボットプロパティ 参照のみ ボット(ユーザ共通) 永続※1 <bot name="xxx"/>

※1 ボットを削除するか、明示的に初期化するまで変数を保持します。

種別詳細

Predicate(変数)における種別の詳細とサンプルです。

ローカル変数

ボット内に限り、ユーザとの対話セッション内で参照/更新できる変数です。

対話セッションとはサーバが「ユーザ発話を受信してからシステム発話を返すまで」の期間を指し、ローカル変数はこのセッション内でのみ参照/更新できます。
また、ローカル変数はセッション終了後に自動的に破棄されます。

ローカル変数はユーザ(厳密にはアプリID)別に値を保持しているため、他のユーザに影響することはありません。

使用方法

ローカル変数は、<set>でPredicate名の先頭に_var_を付加することで作成/更新できます。
また、<get><condition>等でPredicate名の先頭に_var_を付加することで参照できます。

ボット変数

ボット内に限り、複数の対話セッションで参照/更新できる変数です。

対話セッションとはサーバが「ユーザ発話を受信してからシステム発話を返すまで」の期間を指し、ボット変数は複数のセッションで参照/更新できます。
また、ボット変数はセッション終了後も内容を保持し続けるため、次の対話セッションで引き続きボット変数を参照/更新できます。

ボット変数はユーザ(厳密にはアプリID)別に値を保持しているため、他のユーザに影響することはありません。

ご注意

ボット変数は複数の対話セッションで使用でき、バリエーション豊富なシナリオの作成に役立つ反面、思いもよらぬ動作を引き起こす場合があります。
これらを防止するためには、必要に応じてボット変数を初期化するか、ローカル変数の使用をご検討ください。

ボット変数の初期化方法

使用方法

ボット変数は<get><set><condition>等で使用できます。

グローバル変数

プロジェクト内のすべてのボット/対話セッションで参照/更新できる変数です。

プロジェクトとは、ボットの管理などを行う一番大きな単位を指します。
また、グローバル変数はプロジェクト単位で変数を保持するため、ボットや対話セッションに依存せずに変数を参照/更新できます。

グローバル変数はユーザ(厳密にはアプリID)別に値を保持しているため、他のユーザに影響することはありません。

ご注意

グローバル変数はプロジェクト内のすべてのボット/対話セッションで使用でき、ボット同士の連携などに役立つ反面、思いもよらぬ動作を引き起こす場合があります。
これらを防止するためには、必要に応じてグローバル変数を初期化するか、ローカル変数ボット変数の使用をご検討ください。

グローバル変数の初期化方法

使用方法

グローバル変数は<predstore>でのみ使用できます。

<get><condition>で利用する場合は、ボット変数ローカル変数に設定してから使用してください。

ボットプロパティ

ボットプロパティは、ボット内で対話セッション/ユーザの区別なく参照できる定数です。

値の設定は設計ツールからのみ可能であり、xAIMLからは参照のみ行えます。

使用方法

<bot>でのみ使用できます。

ボットプロパティは設計ツールであらかじめ登録されている必要があります。(登録方法はこちらをご覧ください)