変数(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>でのみ使用できます。

ボットプロパティはボット設定であらかじめ登録されている必要があります。