6. template要素内の子要素¶
- addtriple: RDFナレッジベースへのエレメント追加要素
- authorise: ユーザロールによりAIML要素の実行権の切り替え要素
- bot: bot固有のプロパティの取得要素
- button: ボタン押下を促す要素
- card: 画像、ボタン、タイトル、サブタイトルを1つにまとめる要素
- carousel: カード要素をまとめる要素
- condition: 条件分岐して処理を行う要素
- date: 日付、時刻取得要素
- delay: 遅延要求設定要素
- deletetriple: RDFナレッジベースからのエレメント削除要素
- denormalize: 単語から文字列への変換要素
- eval: 変数値の文字列化要素(learn/learnfで利用)
- explode: 文字分割要素
- first: 先頭単語取得要素
- extension:拡張機能要素
- formal: 先頭文字大文字化要素
- gender: 三人称代名詞の性別変換要素
- get: 変数内容取得要素
- id: クライアント名取得要素
- image: 画像情報指定要素
- implode: 文字列結合要素
- input: pattern文取得要素
- interval: 時刻差分計算要素
- json: JSON要素
- learn: ユーザ固有category登録要素
- learnf: ユーザ固有category登録要素
- li: 分岐条件記述要素
- link: URL情報指定要素
- list: リスト形式情報指定要素
- log: ログ出力要素
- lowercase: 英文字小文字化要素
- map: 辞書利用の変換要素
- nluintent: NLUインテント取得要素
- nluslot: NLUスロット取得要素
- normalize: 文字列から単語への変換要素
- oob: Out of Band要素
- olist: オーダーリスト形式指定要素
- person: 一・二人称代名詞変換要素
- person2: 一・二人称代名詞と三人称代名詞の変換要素
- program: プログラムバージョン取得要素
- random: ランダム分岐指定要素
- reply: ユーザへの提示内容指定要素
- request: 入力履歴取得要素
- resetlearn: learn情報リセット要素
- resetlearnf: learnf情報リセット要素
- response: 出力履歴取得要素
- rest: 先頭単語以外の取得要素
- set: 変数設定要素
- select: RDFナレッジベースの検索要素
- sentence: 英文整形要素
- size: カテゴリ数取得要素
- space: 半角スペース挿入要素
- split: 文章分割要素
- sr: sraiとstarの省略要素
- srai: パターンマッチ再実行要素
- sraix: REST API呼び出し要素
- star: ワイルドカード取得要素
- system: システムコール実行要素
- that: 過去応答文取得要素
- thatstar: 過去応答文内ワイルドカード取得要素
- think: 内部処理記述要素
- topicstar: topic内ワイルドカード取得要素
- uniq: RDFナレッジベースの検索要素
- uppercase: 英文字大文字化要素
- video: ビデオ情報指定要素
- vocabulary: シナリオ単語数取得要素
- word: 単語ノードを示す定義
- xml: 未定義XMLノードの定義
以下の要素は処理結果が空文字の為、単体で使用した場合にはアンマッチと同じ結果になります。他の要素や任意の文字列と併せて使用することを推奨します。
- addtriple
- deletetriple
- json (取得の場合を除く)
- learn
- learnf
- resetlearn
- resetlearnf
- think
6.1. 詳細¶
6.1.1. addtriple¶
[2.0]
addtriple要素は、RDFナレッジベースにエレメント(知識)を追加します。 エレメントの構成要素には、subject (主語)、predicate (述語)、object (目的語)の3つのアイテムがあります。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
subj | string | Yes | subject (主語)の値 |
pred | string | Yes | predicate (述語)の値 |
obj | string | Yes | object (目的語)の値 |
以下の使用例では、ユーザの発話文「私はカレーが好きだ」に対して、subject=’私’、pred=’好き’, object=’カレー’ のアイテムで構成されるエレメント(知識)をRDFナレッジベースに登録します。
- 使用例
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>* は * が 好き #</pattern>
<template>
<addtriple>
<subj><star /></subj>
<pred>好き</pred>
<obj><star index="2"/></obj>
</addtriple>
好みを登録しました
</template>
</category>
</aiml>
登録を行った結果の確認方法は、uniq, select を参照してください。
関連項目: deletetriple, select, uniq, RDFサポート
6.1.2. authorise¶
[1.0]
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
role | string | Yes | ロール名。ユーザグループファイル で規定 |
denied_srai | string | No | 認証失敗時のsrai用発話文 |
ユーザグループファイル で規定されていない”ロール名”を指定した場合、全ユーザが権限なしとして扱われます。
- 使用例
この使用例では、ユーザの権限に”root”がある場合のみ、vocabularyの内容を返せます。 ユーザに権限がない場合、コンフィグレーションで定義された、denied_srai(又は、denied_text)が実行されます。
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>ボキャブラリリスト数</pattern>
<template>
<authorise role="root">
<vocabulary />
</authorise>
</template>
</category>
</aiml>
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="2.0">
<category>
<pattern>ボキャブラリリスト数</pattern>
<template>
<authorise role="root" denied_srai="ACCESS_DENIED">
<vocabulary />
</authorise>
</template>
</category>
</aiml>
関連項目: 承認
6.1.3. bot¶
[1.0]
bot要素は、bot固有のプロパティを取得します。この要素は読み込み専用です。 プロパティは、propertiesファイル で規定することで、任意の情報を固定値として登録することができます。
- 属性 (子要素での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | string | Yes | propertiesファイルで規定した、プロパティ名を指定 |
- 使用例
プロパティとして、name、birthdate、app_version、grammar_versionが登録されている前提です。
<category>
<pattern>あなたは誰?</pattern>
<template>
私の名前は<bot name="name" />です。
<bot name="birthdate" />生まれです。
アプリケーションバージョンは<bot name="app_version" />です。
グラマーバージョンは<bot name="grammar_version" />です。
</template>
</category>
name属性に、登録されてないプロパティ名を指定した場合、シナリオ展開時に異常を検出し、該当シナリオは無効になります。
botの子要素としてnameを利用することで、name属性と同じ内容を記載することができます。
<category>
<pattern>あなたは誰ですか?</pattern>
<template>
私の名前は<bot><name>name</name></bot>です。
<bot><name>birthdate</name></bot>生まれです。
アプリケーションバージョンは<bot><name>app_version</name></bot>です。
グラマーバージョンは<bot><name>grammar_version</name></bot>です。
</template>
</category>
子要素のnameに、登録されてないプロパティ名を指定した場合、実行時に取得失敗となり、コンフィグレーション定義の default-property の定義値が返ります。 (default-propertyが定義されていない場合、default-getの定義値が返ります。)
properties_jsonエンティティ
に、以下のJSONファイルを ‘test_json.json’ として配置した場合、{
"key1": "value1",
"key2":
{
"key2_1": "value2_1"
}
}
<bot name="test_json" />
で取得される値は、以下に様に編集された文字列になります。
{"key1": "value1", "key2": {"key2_1": "value2_1"}}
関連項目: ファイル管理:properties
6.1.4. button¶
[2.1]
button要素は、会話中にユーザにタップを促す用途で利用されるリッチメディア要素です。 子要素として、buttonの表記に使用するテキスト、Botに対するpostback、ボタン押下時のURLを記載できます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素 (属性での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
text | string | Yes | ボタンに表示するテキストを記載します。(空文字を許容します。) |
postback | string | No | ボタン押下時の動作を記載します。ユーザにはこのメッセージは見せず、Botに対するレスポンスやアプリケーションで処理を行う場合に利用します。 |
url | string | No | ボタン押下時のURLを記載します。 |
- 使用例
<category>
<pattern>乗り換え</pattern>
<template>
<button>
<text>乗り換え検索しますか?</text>
<postback>乗り換え案内</postback>
</button>
</template>
</category>
<category>
<pattern>検索</pattern>
<template>
<button>
<text>検索しますか?</text>
<url>https://searchsite.com</url>
</button>
</template>
</category>
6.1.5. card¶
[2.1]
card要素はリッチメディア要素で、画像、ボタン、タイトル、サブタイトルなど、いくつかの他の要素を使用し1つのカードとします。 これらのリッチメディア要素すべてを含むメニューが表示されます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素 (属性での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
title | string | Yes | カードのタイトルを記載します。(空文字を許容します。) |
subtitle | string | No | カードに対する追加情報を記載します。 |
image | string | Yes | カード用の画像URL等を記載します。(空文字を許容します。) |
button | string | Yes | カード用のボタン情報を記載します。 |
- 使用例
<category>
<pattern>検索</pattern>
<template>
<card>
<title>カードメニュー</title>
<subtitle>カードメニュー詳細情報</subtitle>
<image>https://searchsite.com/image.png</image>
<button>
<text>検索しますか?</text>
<url>https://searchsite.com</url>
</button>
</card>
</template>
</category>
6.1.6. carousel¶
[2.1]
carousel要素はリッチメディア要素で、カード要素を複数利用しタップスルーメニューを表示します。 これらのリッチメディア要素すべてを含むメニューが表示されます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
card | string | Yes | 複数のカードを指定します。一度にカードを1つ表示、タップスルーで別のカードを表示します。 |
- 使用例
<category>
<pattern>レストラン検索</pattern>
<template>
<carousel>
<card>
<title>イタリアン</title>
<subtitle>イタリア料理店の検索</subtitle>
<image>https://searchsite.com?q=italian</image>
<button>イタリアン検索</button>
</card>
<card>
<title>フレンチ</title>
<subtitle>フランス料理店の検索</subtitle>
<image>https://searchsite.com?q=french</image>
<button>フレンチ検索</button>
</card>
</carousel>
</template>
</category>
6.1.7. condition¶
[1.0]
li
子要素を使用することで複数の条件を列記することができます。- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | 変数名 | No | 分岐条件とするグローバル変数(name)名を指定します。 |
var | 変数名 | No | 分岐条件とするローカル変数(var)名を指定します。 |
data | 変数名 | No | 分岐条件とするグローバル変数(data)名を指定します。 |
bot | プロパティ名 | No | 分岐条件とするBot固有情報(プロパティ)名を指定します。 |
value | 判定値 | No | 分岐条件となる値を指定します。(大文字・小文字、全角・半角を区別します) |
regex | 判定値 | No | 分岐条件となる値を正規表現で指定します。判定は完全一致(大文字・小文字は同一視)で行います。 |
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
li | string | No | 指定した変数に対する分岐条件を記載します。 |
属性の各パラメータも子要素として指定できます。
condition要素には、変数と判定値の記載方法により、次の3つの処理方式があります。
- 単一判定:
li
子要素を使用せずに、1つの変数と判定値の組み合わせを指定します。- 条件分岐: condition として対象とする1つの変数を規定し、
li
子要素毎に判定値を指定することで、複数の条件に対応します。- 複数条件での分岐:
li
子要素毎に変数と判定値の組み合わせを指定することで、複数の条件に対応します。
以下に、各方式でのconditionの記載方法を説明します。
6.1.7.1. 単一判定¶
- 使用例
<condition name="ペット" value="犬">私も犬派です</condition>
<condition name="ペット"><value>犬</value>私も犬派です</condition>
<condition value="犬"><name>ペット</name>私も犬派です</condition>
<condition><name>ペット</name><value>犬</value>私も犬派です</condition>
name変数:”ペット”の値が”犬”であった場合、”私も犬派です”を返します。
6.1.7.2. 条件分岐¶
li
子要素で対象となる値に対する分岐を記述します。分岐方法はswitch-caseに似ています。li
子要素の判定値と比較し、trueになった条件の内容を返します。li
子要素の内容を返します。判定値が指定されていない li
子要素がない場合は、何も返しません。以下の使用例では、name変数:”ペット”の値を評価します。評価の優先順序は記載順になります。
- 使用例
<condition name="ペット">
<li value="犬">私も犬派です</li>
<li value="猫">猫が一番好きです</li>
<li>ペットは飼ってないです</li>
</condition>
<condition>
<name>ペット</name>
<li value="犬">私も犬派です</li>
<li value="猫">猫が一番好きです</li>
<li>ペットは飼ってないです</li>
</condition>
6.1.7.3. 複数条件での分岐¶
li
子要素毎に条件分岐を指定する場合の記載方法で、分岐方法はif文の集合体に似ています。li
子要素で定義された各条件が順次チェックされます。各``li`` 子要素では異なる変数、判定値を持つことができます。li
子要素の内容を返します。以下の使用例では、name変数:”ペット”と、name変数:”飲み物”の値を評価します。評価の優先順序は記載順になります。
- 使用例
<condition>
<li name="ペット" value="犬">私も犬派です</li>
<li value="猫"><name>ペット</name>猫が一番好きです</li>
<li name="飲み物"><value>コーヒー</value>マンデリンがいいです</li>
<li><name>飲み物</name><value>紅茶</value>アールグレイが好きです</li>
<li>好きなものはありますか</li>
</condition>
6.1.7.4. ループ処理¶
<loop />
を li
の子要素として記載します。max_search_condition
までとなります。以下の使用例では、変数”話題”を評価して返す内容を決定しますが、分岐条件に一致しなかった場合、”話題”に”雑談”を設定して<condition>の再評価を行い、”雑談”としてループを抜けます。
- 使用例
<condition var="話題">
<li value="花">花は何が好きですか</li>
<li value="飲み物">コーヒーはどうですか</li>
<li value="雑談">何かいいことありました?</li>
<li><think><set var="話題">雑談</set></think><loop /></li>
</condition>
6.1.8. date¶
[1.0]
date要素は、日付と時刻の文字列を取得します。基準値はシステムの現在日時ですが、対話API で、locale/timeが指定されている場合、返す内容は次の様に変化します。
- localeを指定: 国コードを元に、該当する地域の日時への換算を行います。(国コードに対して地域が確定できない場合は変換を行いません。)
- timeを指定: 指定された日時を基準値として処理します。
日付・時刻の出力形式の指定には、Pythonの日時文字列の書式を使用します。 詳細は Pythonのマニュアル(datetime)を参照してください。
- 属性 (子要素での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
format | string | No | 出力形式指定。未指定時は ‘%c’ |
formatの指定が不正な場合には、結果にはformatで指定された文字列がそのまま返ります。
- 使用例
<category>
<pattern>今日は何日ですか</pattern>
<template>
今日は<date format="%Y/%m/%d" />です。
</template>
</category>
<category>
<pattern>今日は何日ですか</pattern>
<template>
今日は<date><format>%Y/%m/%d</format></date>です。
</template>
</category>
関連項目: interval
6.1.9. delay¶
[2.1]
delay要素はリッチメディア要素で、遅延を行う要素です。 音声合成の再生中などの待ち時間の定義を行ったり、ユーザに対するBotの返答遅延を指定したりするために利用します。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素 (属性での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
seconds | string(数値) | Yes | 遅延秒数を指定。 |
secondsに数値以外を指定した場合、属性指定では該当シナリオが無効になり、子要素指定の場合は “0” が設定されます。
- 使用例
<category>
<pattern>* 秒待って</pattern>
<template>
<delay>
<seconds><star/></seconds>
</delay>
</template>
</category>
6.1.10. deletetriple¶
[2.0]
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
subj | string | Yes | 削除対象のsubject (主語)の値 |
pred | string | No | 削除対象のpredicate (述語)の値 |
obj | string | No | 削除対象のobject (目的語)の値 |
- 使用例
<category>
<pattern>* は * を削除</pattern>
<template>
<deletetriple>
<subj><star /></subj>
<pred>は</pred>
<obj><star index="2"/></obj>
</deletetriple>
削除しました
</template>
</category>
6.1.11. denormalize¶
[1.0]
- 使用例
<category>
<pattern>URLは * です。</pattern>
<template>
<think>
<set var="url"><normalize><star /></normalize></set>
</think>
<denormalize><get var="url" /></denormalize>を復元します。
</template>
</category>
<denormalize />は<denormalize><star /></denormalize>と同義です。
- 使用例
<category>
<pattern>URLは *です。</pattern>
<template>
<denormalize />に変換します。
</template>
</category>
関連項目: ファイル管理:denormal, normalize
6.1.12. eval¶
[1.0]
eval要素は、learn、learnf 要素の一部として利用されます。 eval要素は、内容をテキスト化した値を返します。
eval要素の内容にget要素等を記載してその値の取得に失敗した場合、default-get の値が設定されます。
次の例では、eval指定により、name型変数’name’の値:’マロン’と、name型変数’animal’の値:’犬’が文字列として設定されたcategoryが生成されます。 その後このlearnfノードに合致する、’マロンは誰ですか’という入力を行うと、’あなたのペットの犬です。’と返します。
- 使用例
<category>
<pattern>私のペットは * の * です。</pattern>
<template>
あなたのペットは、<star />の<star index="2" />ですね。
<think>
<set name="animal"><star /></set>
<set name="name"><star index="2" /></set>
</think>
<learnf>
<category>
<pattern>
<eval>
<get name="name"/>
</eval>
は誰ですか。
</pattern>
<template>
あなたのペットの
<eval>
<get name="animal"/>
</eval>
です。
</template>
</category>
</learnf>
</template>
</category>
6.1.13. explode¶
[1.0]
explode要素は、対象文字列を1文字単位に分割し、半角スペースで区切ります。 ’coffee’と入力した場合、explodeを有効にすると、’c o f f e e’に変換します。
- 使用例
<category>
<pattern>EXPLODE *</pattern>
<template>
<explode><star /></explode>
</template>
</category>
<explode />は、<explode><star /></explode>と同義です。書き換えると以下の様になります。
<category>
<pattern>EXPLODE *</pattern>
<template>
<explode />
</template>
</category>
関連項目: implode
6.1.14. image¶
[2.1]
image要素はリッチメディア要素で、画像の情報を返すことができます。 内容に、画像URLやファイル名を指定します。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
<category>
<pattern>画像表示</pattern>
<template>
<image>https://url.for.image</image>
</template>
</category>
6.1.15. first¶
[1.0]
- 使用例
<category>
<pattern>私の名前は * です </pattern>
<template>
あなたの名前は <first><star /></first> さんですね。
</template>
</category>
関連項目: rest
6.1.16. extension¶
[custom]
programy.extensions.base.Extension
インタフェースを実装するPythonモジュールクラスへのフルパスを指定します。詳細は、 Extensions を参照してください。
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
path | string | Yes | extension処理クラスのパス名 |
- 使用例
<category>
<pattern>
GEOCODE *
</pattern>
<template>
<extension path="programy.extensions.goecode.geocode.GeoCodeExtension">
<star />
</extension>
</template>
</category>
関連項目: Extensions
6.1.17. formal¶
[1.0]
- 使用例
<category>
<pattern>私の名前は * * </pattern>
<template>
<formal><star /></formal> <formal><star index="2"/></formal>さん、こんにちは
</template>
</category>
<formal />は<formal><star /></formal> と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>私の名前は * * </pattern>
<template>
<formal /><formal><star index="2"/></formal>さん、こんにちは
</template>
</category>
6.1.18. gender¶
[1.0]
- 使用例
<category>
<pattern>* に会いましたか?</pattern>
<template>
いえ、 <gender><star/></gender> に会いました。
</template>
</category>
関連項目: ファイル管理:gender
6.1.19. get¶
[1.0]
- ローカル変数(var)
- 継続保持グローバル変数(name)
- 指定範囲保持グローバル変数(data)
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | 変数名 | No | グローバル変数(name)名を指定 |
var | 変数名 | No | ローカル変数(var)名を指定 |
data | 変数名 | No | グローバル変数(data)名を指定 |
tuple
を指定することで、RDFナレッジベースのエレメントも取得できます。詳細は、RDFサポート を参照してください。- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | 変数名 | No | グローバル変数(name)名を指定 |
var | 変数名 | No | ローカル変数(var)名を指定 |
data | 変数名 | No | グローバル変数(data)名を指定 |
tuple | 子要素 | No | RDFナレッジベースのエレメントを処理する場合に指定 |
var
, name
, data
, tuple
のいずれかが設定されている必要があります。- 使用例
<!-- Access Global Variable -->
<category>
<pattern>今日は * です</pattern>
<template>
<think><set name="weather"><star/></set></think>
今日の天気は、<get name="weather" />です。
</template>
</category>
<!-- Access Local Variable -->
<category>
<pattern>明日は * です</pattern>
<template>
<think><set var="weather"><star/></set></think>
今日の天気は<get name="weather" />,明日の天気は<get var="weather"/>です。
</template>
</category>
<category>
<pattern>天気は?</pattern>
<template>
今日の天気は<get name="weather" />,明日の天気は<get var="weather"/>です。
</template>
</category>
コンフィグレーションの dynamic で variables
が定義されている場合、グローバル変数(name)名として dynamic
の定義が優先されます。
関連項目: set, ファイル管理:properties
6.1.20. id¶
[1.0]
- 使用例
<category>
<pattern>あなたの名前は?</pattern>
<template>
<id />
</template>
</category>
6.1.21. implode¶
[custom]
- 使用例
<category>
<pattern>Implode *</pattern>
<template>
<implode><star /></implode>
</template>
</category>
<implode />は、<implode><star /></implode>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>Implode *</pattern>
<template>
<implode />
</template>
</category>
関連項目: explode
6.1.22. input¶
[1.0]
<star/>
とは異なり、発話文全体の範囲を返します。- 使用例
<category>
<pattern>質問はなんですか?</pattern>
<template>
あなたの質問は、"<input />"です。
</template>
</category>
6.1.23. interval¶
[1.0]
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
format | string | No | 日時データの書式。省略値は ‘%c’ |
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
format | string | No | 日時データの書式。省略値は ‘%c’ |
from | string | Yes | 計算を行う始端日時をformatの書式で指定 |
to | string | Yes | 計算を行う終端開始日時をformatの書式で指定 |
style | string | No | 出力する単位を指定。省略値は ‘days’ |
style
で指定する形式には、以下の種類があります。
- 日時の単位指定: ‘years’, ‘months’, ‘weeks’, ‘days’, ‘hours’, ‘minutes’, ‘seconds’, ‘microseconds’
- 複合単位指定: ‘ymd’, ‘hms’, ‘ymdhms’
from
, to
で指定されたデータが format
の書式と異なる場合や、不正な形式の場合、実行時に例外が発生します。style
が変数等で指定され、実行時に対象外の値が使用された場合、結果として空文字が返ります。- 使用例
<category>
<pattern>あなたは何歳ですか?</pattern>
<template>
<interval format="%B %d, %Y">
<style>years</style>
<from><bot name="birthdate"/></from>
<to><date format="%B %d, %Y" /></to>
</interval>
歳です。
</template>
</category>
関連項目: date
6.1.24. json¶
[custom]
- 属性
パラメータ | タイプ | 指定値 | 必須 | 説明 |
---|---|---|---|---|
name | JSON変数名 | No | グローバル変数(name)名を指定します。キー名を付加することを推奨します。 | |
var | JSON変数名 | No | ローカル変数(var)名を指定します。キー名を付加することを推奨します。 | |
data | JSON変数名 | No | グローバル変数(data)名を指定します。キー名を付加することを推奨します。 | |
function | len | No | 対象のJSONプロパティが配列の場合、配列長を取得します。対象がJSONオブジェクトの場合、JSONオブジェクトの要素数を取得します。 | |
delete | No | 対象プロパティを削除します。配列の場合でindexを指定していると対象となる要素を削除します。 | ||
insert | No | JSON配列に対する値の追加を指定します。配列番号(index)とともに指定します。 | ||
index | インデックス | No | JSONデータを取得する場合のインデックスを指定します。対象が配列の場合、配列番号を指します。JSONオブジェクトではキーを先頭から順に数えたオブジェクトを指します。JSONデータを設定・変更する場合、配列のみに指定できます。 | |
item | key | No | JSONデータからキーを取得する場合に使用します。この属性を指定すると値ではなくキーを取得します。 | |
key | キー指定 | No | JSONデータを操作するキーを指定します。 | |
type | string | No | 数値・論理値・null値を文字列として処理することを指定します。 |
json要素として、var
, name
, data
のいずれかが設定されている必要があります。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
function | 関数名 | No | JSONに対する処理オプションを指定します。内容については属性のfunctionを参照。 |
index | インデックス | No | JSONデータを取得する場合、JSONオブジェクト、配列に対して指定でき、配列では配列番号を差し、JSONオブジェクトではキーを先頭から順に数えたオブジェクトを指します。JSONデータを設定・変更する場合、配列のみに指定できます。 |
item | キー名取得 | No | JSONデータからキーを取得する場合に使用します。この属性を指定すると値ではなくキーを取得します。 |
key | キー指定 | No | JSONデータを操作するキーを指定します。 |
- 使用例
key
で指定する方法があります。{
"transportation":{
"station":{
"departure":"東京",
"arrival":"京都"
},
"time":{
"departure":"2018/11/1 11:00",
"arrival":"2018/11/1 13:30"
}
}
}
上記例の様に、transportation.station.departureを返却する場合、
<category>
<pattern>東京から京都に行きたい。</pattern>
<template>
<json var="__SUBAGENT__.transit.transportation.station.departure"/>出発ですね。
</template>
</category>
6.1.25. learn¶
[2.0]
max_categories
で制限されており、learn要素での登録も制限されます。learnfはファイル保持なので、bot再起動でも状態を保持しますが、learnはbot再起動時に初期化されます。
- 使用例
<category>
<pattern>私のペットは * の * です。</pattern>
<template>
あなたのペットは、<star />の<star index="2" />ですね。
<think>
<set name="animal"><star /></set>
<set name="name"><star index="2" /></set>
</think>
<learn>
<category>
<pattern>
<eval>
<get name="name"/>
</eval>
は誰ですか。
</pattern>
<template>
あなたのペットの
<eval>
<get name="animal"/>
</eval>
です。
</template>
</category>
</learn>
</template>
</category>
関連項目; eval, learnf, restlearn, resetlearnf
6.1.26. learnf¶
[2.0]
max_categories
で制限されており、learn要素での登録も制限されます。learnfはファイル保持なので、botの再起動時に再ロードされます。
- 使用例
<category>
<pattern>私のペットは * の * です</pattern>
<template>
あなたのペットは、<star />の<star index="2" />ですね。
<think>
<set name="animal"><star /></set>
<set name="name"><star index="2" /></set>
</think>
<learnf>
<category>
<pattern>
<eval>
<get name="name"/>
</eval>
は誰ですか。
</pattern>
<template>
あなたのペットの
<eval>
<get name="animal"/>
</eval>
です。
</template>
</category>
</learnf>
</template>
</category>
関連項目: eval, learn, restlearn, resetlearnf
6.1.27. li¶
[1.0]
li要素は、condition要素での分岐条件の指定と、random要素での選択要素を指定する子要素として使用します。
condition要素の子要素として使用する場合には、以下の子要素(属性)が指定できます。 詳細な利用方法は、condition を参照してください。
- 子要素(’loop’以外は属性でも指定可能。)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | 変数名 | No | 分岐条件とするグローバル変数(name)名を指定します。 |
var | 変数名 | No | 分岐条件とするローカル変数(var)名を指定します。 |
data | 変数名 | No | 分岐条件とするグローバル変数(data)名を指定します。 |
bot | プロパティ名 | No | 分岐条件とするBot固有情報(プロパティ)名を指定します。 |
value | 判定値 | No | 分岐条件となる値を指定します。(大文字・小文字、全角・半角を区別します) |
regex | 判定値 | No | 分岐条件となる値を正規表現で指定します。判定は完全一致(大文字・小文字は同一視)で行います。 |
loop | string | No | condition要素内でのループ処理を指定します。 |
random要素の子要素として使用する場合には、属性や子要素の規定はありません。 詳細な利用方法は、random を参照してください。
6.1.28. link¶
[2.1]
link要素は、会話中にユーザに表示するURLなどの用途で利用されるリッチメディア要素です。 子要素として、表示や読み上げに使用するテキスト、遷移先のurlを記載できます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素 (属性での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
text | string | Yes | ボタンへの表示テキストを記載します。(空文字を許容します。) |
url | string | No | ボタン押下時のURLを記載します。 |
<category>
<pattern>検索</pattern>
<template>
<link>
<text>検索サイト</text>
<url>searchsite.com</url>
</link>
</template>
</category>
6.1.29. list¶
[2.1]
list要素は、itemに記載した要素をリスト形式で返すリッチメディア要素です。 子要素のitemにリストの内容を記載することができます。また、itemにlistを記載し入れ子にすることもできます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
item | string | Yes | リストの内容を記載します。 |
item
には、テキスト以外に、button や、image 等のリッチメディア要素を配置することができます。
<category>
<pattern>リスト</pattern>
<template>
<list>
<item>
<list>
<item>リストアイテム 1.1</item>
<item>リストアイテム 1.2</item>
</list>
</item>
<item>リストアイテム 2.1</item>
<item>リストアイテム 3.1</item>
</list>
</template>
</category>
6.1.30. log¶
[custom]
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
level | 変数名 | No | ‘error’, ‘warning’, ‘debug’, ‘info’ のいずれかを指定します。省略時は’info’で出力されます。 |
詳細は、 ログ設定 を参照してください。
- 使用例
<category>
<pattern>こんにちは</pattern>
<template>
こんにちは
<log>挨拶</log>
</template>
</category>
<category>
<pattern>さよなら</pattern>
<template>
さよなら
<log level="error">挨拶</log>
</template>
</category>
関連項目: ログ設定
6.1.31. lowercase¶
[1.0]
lowercase要素は、対象となる文字列内の半角英字を小文字にします。 英字以外に、大文字・小文字が存在するギリシャ文字等にも対応します。
- 使用例
<category>
<pattern>こんにちは * です</pattern>
<template>
こんにちは <lowercase><star /></lowercase>さん
</template>
</category>
<lowercase />は、<lowercase><star /></lowercase>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>こんにちは * です</pattern>
<template>
こんにちは <lowercase />さん
</template>
</category>
関連項目: uppercase
6.1.32. map¶
[1.0]
変換対象文字列のリストに一致するものが無い場合、コンフィグレーション定義の default-map の定義値が返ります。 (default-mapが定義されていない場合、空文字が返ります。)
- 属性 (子要素での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | map名 | Yes | mapsファイル名から拡張子を除いた文字列を指定します。 |
- 使用例
<category>
<pattern>* の県庁所在地は?</pattern>
<template>
<map name="prefectural_office"><star/></map>です。
</template>
</category>
コンフィグレーションの dynamic で maps
が定義されている場合、mapsファイル名として dynamic
の定義が優先されます。
関連項目: ファイル管理:maps
6.1.33. nluintent¶
[custom]
- patternに nluタグ を指定したcategoryにマッチした場合に、ローカル変数(var):
__SYSTEM_NLUDATA__
を対象に処理します。 - templateの sraixタグ でNLU通信を行った場合に、ローカル変数(var):
__SUBAGENT_NLU__.エイリアス名
を対象に処理します。 - NLU結果を代入した変数を対象に処理します。
詳細は、 NLU を参照してください。
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | インテント名 | Yes | 取得するインテント名を指定します。 * でワイルドカード扱いになります。ワイルドカード指定時はindexで取得対象を指定します。 |
item | 取得アイテム名 | Yes | 指定したインテントの情報を取得します。intent 、 score および count を指定できます。
intent指定時はインテント名を取得することができます。score指定時は確信度(0.0〜1.0)を取得します。countはインテント名の数を返します。 |
index | インデックス | No | 取得するインテントのインデックス番号を指定します。nameで指定したインテント名がマッチしたリスト中のインデックス番号を指定します。 |
target | 対象変数名 | No | 任意の変数を対象とする場合に、その変数名を指定します(省略値は、 __SYSTEM_NLUDATA__ )。sraixでのNLU通信結果を対象とする場合には、__SUBAGENT_NLU__.エイリアス名 を指定します。 |
type | 変数種別 | No | target の指定時に有効で、変数の種別:’name’, ‘data’, ‘var’ のいずれかを指定します(省略値は、’var’)。 |
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | インテント名 | Yes | 取得するインテント名を指定します。 内容については属性のnameを参照。 |
item | 取得アイテム名 | Yes | 指定したインテントの情報を取得します。内容については属性のitemを参照。 |
index | インデックス | No | 取得するインテントのインデックス番号を指定します。内容については属性のindexを参照。 |
- 使用例
NLUの処理結果のインテント情報を取得します。 以下例のNLU処理結果からインテントを取得する場合を説明します。
{
"intents": [
{"intent": "restaurantsearch", "score": 0.9 },
{"intent": "aroundsearch", "score": 0.4 }
],
"slots": [
{"slot": "genre", "entity": "イタリアン", "score": 0.95, "startOffset": 0, "endOffset": 5 },
{"slot": "genre", "entity": "フレンチ", "score": 0.86, "startOffset": 7, "endOffset": 10 },
{"slot": "genre", "entity": "中華", "score": 0.75, "startOffset": 12, "endOffset": 14 }
]
}
NLUで処理したインテントを取得する場合、以下のように記述します。
<category>
<pattern>
<nlu intent="restaurantsearch"/>
</pattern>
<template>
<nluintent name="restaurantsearch" item="score" />
</template>
</category>
<category>
<pattern>
NLU通信 *
</pattern>
<template>
<think>
<sraix nlu="sameNlu"><star /></sraix>
<thimk>
<nluintent name="restaurantsearch" item="score" target="__SUBAGENT_NLU__.someNlu" />
</template>
</category>
関連項目: NLU 、 NLUインテントの取得
6.1.34. nluslot¶
[custom]
- patternに nluタグ を指定したcategoryにマッチした場合に、ローカル変数(var):
__SYSTEM_NLUDATA__
を対象に処理します。 - templateの sraixタグ でNLU通信を行った場合に、ローカル変数(var):
__SUBAGENT_NLU__.エイリアス名
を対象に処理します。 - NLU結果を代入した変数を対象に処理します。
詳細は、 NLU を参照してください。
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | スロット名 | Yes | 取得するスロット名を指定します。 * でワイルドカード扱いになります。ワイルドカード指定時はindexで取得対象を指定します。 |
item | 取得アイテム名 | Yes | 指定したスロットの情報を取得します。slot 、 entity 、 score 、startOffset 、endOffset および count を指定できます。
slot指定時はスロット名を取得することができます。entity指定時はスロットの抽出文字列、score指定時は確信度(0.0〜1.0)、startOffset指定時は抽出文字列の開始文字位置、endOffset指定時は抽出文字列の終端文字位置を取得します。
countは同一スロット名の数を返します。 |
index | インデックス | No | 取得するスロットのインデックス番号を指定します。nameで指定したスロット名がマッチしたリスト中のインデックス番号を指定します。 |
target | 対象変数名 | No | 任意の変数を対象とする場合に、その変数名を指定します(省略値は、 __SYSTEM_NLUDATA__ )。sraixでのNLU通信結果を対象とする場合には、__SUBAGENT_NLU__.エイリアス名 を指定します。 |
type | 変数種別 | No | target の指定時に有効で、変数の種別:’name’, ‘data’, ‘var’ のいずれかを指定します(省略値は、’var’)。 |
AIMLの変数を値として指定する場合に属性では指定できないため、子要素としても指定できるようにしています。 動作は属性と同じ動作になります。同じ属性名、子要素名を指定した場合子要素の設定が優先されます。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | スロット名 | Yes | 取得するスロット名を指定します。 内容については属性のnameを参照。 |
item | 取得アイテム名 | Yes | 指定したスロットの情報を取得します。内容については属性のitemを参照。 |
index | インデックス | No | 取得するスロットのインデックス番号を指定します。内容については属性のindexを参照。 |
- 使用例
NLUの処理結果のスロット情報を取得します。 以下例のNLU処理結果からスロットを取得する場合を説明します。
{
"intents": [
{"intent": "restaurantsearch", "score": 0.9 },
{"intent": "aroundsearch", "score": 0.4 }
],
"slots": [
{"slot": "genre", "entity": "イタリアン", "score": 0.95, "startOffset": 0, "endOffset": 5 },
{"slot": "genre", "entity": "フレンチ", "score": 0.86, "startOffset": 7, "endOffset": 10 },
{"slot": "genre", "entity": "中華", "score": 0.75, "startOffset": 12, "endOffset": 14 }
]
}
NLUで処理したスロットを取得する場合、以下のように記述します。
<category>
<pattern>
<nlu intent="restaurantsearch"/>
</pattern>
<template>
<nluslot name="genre" item="count" />
<nluslot name="genre" item="entity" index="0" />
<nluslot name="genre" item="entity" index="1" />
<nluslot name="genre" item="entity" index="2" />
</template>
</category>
<category>
<pattern>
NLU通信 *
</pattern>
<template>
<think>
<sraix nlu="sameNlu"><star /></sraix>
<think>
<nluslot name="genre" item="count" target="__SUBAGENT_NLU__.someNlu" />
<nluslot name="genre" item="entity" index="0" target="__SUBAGENT_NLU__.someNlu" />
<nluslot name="genre" item="entity" index="1" target="__SUBAGENT_NLU__.someNlu" />
<nluslot name="genre" item="entity" index="2" target="__SUBAGENT_NLU__.someNlu" />
</template>
</category>
関連項目: NLU 、 NLUスロットの取得
6.1.35. normalize¶
[1.0]
- 使用例
<category>
<pattern>URLは *</pattern>
<template>
<normalize><star /></normalize>を表示します。
</template>
</category>
<normalize />は、<normalize><star /></normalize>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>URLは *</pattern>
<template>
<normalize />を表示します。
</template>
</category>
関連項目: ファイル管理:normal , denormalize
6.1.36. olist¶
[2.1]
olist(ordered list)要素は、子要素の item に記載した要素をリスト形式で返すリッチメディア要素です。 子要素のitemにはリストの内容を記載することができます。また、itemにlistを記載し入れ子にすることもできます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
item | string | Yes | リストの内容を記載します。 |
- 使用例
<category>
<pattern>リストを表示して</pattern>
<template>
<olist>
<item>
<card>
<image>https://searchsite.com/image0.png</image>
<title>Image No.1</title>
<subtitle>Tag olist No.1</subtitle>
<button>
<text>Yes</text>
<url>https://searchsite.com:?q=yes</url>
</button>
</card>
</item>
<item>
<card>
<image>https://searchsite.com/image1.png</image>
<title>Image No.2</title>
<subtitle>Tag olist No.2</subtitle>
<button>
<text>No</text>
<url>https://searchsite.com:?q=no</url>
</button>
</card>
</item>
</olist>
</template>
</category>
6.1.37. oob¶
[1.0]
- 使用例
<category>
<pattern>DIAL *</pattern>
<template>
<oob><dial><star /></dial></oob>
</template>
</category>
6.1.38. person¶
[1.0]
- 使用例
<category>
<pattern>私は * を待っています。</pattern>
<template>
あなたは <person><star /></person> を待っているんですね。
</template>
</category>
<person />は、<person><star /></person>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>私は * を待っています。</pattern>
<template>
あなたは <person /> を待っているんですね。
</template>
</category>
関連項目: ファイル管理:person , person2
6.1.39. person2¶
[1.0]
- 使用例
<category>
<pattern>* に * を教えてください。</pattern>
<template>
<person2><star/></person2> の <star index="2" /> はこれです。
</template>
</category>
<person2 />は、<person2><star /></person2>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>* に * を教えてください。</pattern>
<template>
<person2 /> の <star index="2" /> はこれです。
</template>
</category>
関連項目: ファイル管理:person2 , person
6.1.40. program¶
[1.0]
propertiesファイルのversionに ‘v1,0’ を指定した場合には、以下の様になります。
- 使用例
<category>
<pattern>version</pattern>
<template>
<program />
</template>
</category>
関連項目: ファイル管理:properties
6.1.41. random¶
[1.0]
random要素は、列記された li 子要素の中からランダムに1個を選び、その結果を返します。
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
li | string | Yes | ランダムで出力する結果を指定します。 |
- 使用例
<category>
<pattern>こんにちは</pattern>
<template>
<random>
<li>こんにちは</li>
<li>今日の調子はどうですか?</li>
<li>今日の予定を調べましょうか?</li>
</random>
</template>
</category>
関連項目: li
6.1.42. reply¶
[2.1]
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 子要素 (属性での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
text | string | Yes | 読み上げテキストを記載します。(空文字を許容します。) |
postback | string | No | 動作を記載します。ユーザにはこのメッセージは見せずBotに対するレスポンスやアプリケーションで処理を行う場合に利用します。 |
- 使用例
<category>
<pattern>乗り換え</pattern>
<template>
<reply>
<text>乗り換え検索しますか?</text>
<postback>乗り換え案内</postback>
</reply>
</template>
</category>
関連項目: button
6.1.43. request¶
[1.0]
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | 履歴番号を整数値で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>なんて言ったっけ?</pattern>
<template>
<request index="2" />、
<request index="1" />、
<request index="0" />、
と言いました。
</template>
</category>
<request />は、<request index=”1” />と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>なんて言ったっけ?</pattern>
<template>
<request />、と言いました。
</template>
</category>
関連項目: response
6.1.44. resetlearn¶
[2.x]
- 使用例
<category>
<pattern>私の言ったことを忘れて。</pattern>
<template>
<think><resetlearn /></think>
わかりました。残念ですが忘れます。
</template>
</category>
関連項目: learn, learnf, resetlearnf
6.1.45. resetlearnf¶
[2.x]
- 使用例
<category>
<pattern>私の言ったことを忘れて。</pattern>
<template>
<think><resetlearnf /></think>
わかりました。残念ですが忘れます。
</template>
</category>
関連項目: learn, learnf, resetlearn
6.1.46. response¶
[1.0]
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | 履歴番号を ‘0’ 以外の整数値で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>君はなんて言ったっけ?</pattern>
<template>
<response index="2" />、
<response index="1" />、
と言いました。
</template>
</category>
<response />は、<response index=”1” />と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>君はなんて言ったっけ?</pattern>
<template>
<response /> 、と言いました。
</template>
</category>
関連項目: request
6.1.47. rest¶
[2.0]
- 使用例
<category>
<pattern>私の名前は * です</pattern>
<template>
あなたの名前は<rest><star /></rest>さんですね
</template>
</category>
- 使用例
<category>
<pattern>単語展開 *</pattern>
<template>
<think>
<set var="WORDS"><star /></set>
</think>
<condition var="WORDS">
<li value="unknown" />
<li>
"<first><get var="WORDS" /></first>"
<think>
<set var="WORDS"><rest><get var="WORDS" /></rest></set>
</think>
<loop />
</li>
</condition>
</template>
</category>
関連項目: first
6.1.48. set¶
[1.0]
max_properties
で制限されます。deleteVariable
指定で削除することもできます。)- 属性 (子要素での指定も可能)
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
name | 変数名 | No | グローバル変数(name)名を指定 |
var | 変数名 | No | ローカル変数(var)名を指定 |
data | 変数名 | No | グローバル変数(data)名を指定 |
var
, name
, data
のいずれかが設定されている必要があります。- 使用例
<!-- グローバル変数 -->
<category>
<pattern>MY NAME IS *</pattern>
<template>
<set name="myname"><star /></set>
</template>
</category>
<!-- ローカル変数 -->
<category>
<pattern>MY NAME IS *</pattern>
<template>
<set var="myname"><star /></set>
</template>
</category>
関連項目: get
6.1.49. select¶
[2.0]
- 子要素
パラメータ | タイプ | 必須 | 説明 | |
---|---|---|---|---|
vars | 変数名リスト | No | 利用する検索用変数名を空白区切りで列記 | |
q | No | 肯定検索をするクエリの指定 | ||
subj | string | No | 検索対象のsubject (主語)の値、又は、検索用変数名を指定 | |
pred | string | No | 検索対象のpredicate (述語)の値、又は、検索用変数名を指定 | |
obj | string | No | 検索対象のobject (目的語)の値、又は、検索用変数名を指定 | |
notq | No | 否定検索をするクエリの指定。子要素指定に対して AND条件で処理します。 | ||
subj | string | No | 検索対象外のsubject (主語)の値、又は、検索用変数名を指定 | |
pred | string | No | 検索対象外のpredicate (述語)の値、又は、検索用変数名を指定 | |
obj | string | No | 検索対象外のobject (目的語)の値、又は、検索用変数名を指定 |
q
、又は、notq
が1つは必要です。又、クエリ間で変数を共有する場合、vars
子要素も必須になります。subj
、pred
、obj
のいずれか1つが最低限必要です。同一子要素が複数指定された場合、最後の指定が有効になります。- 使用例
<category>
<pattern>* 本足の動物は?</pattern>
<template>
<select>
<vars>?name</vars>
<q><subj>?name</subj><pred>legs</pred><obj><star/></obj></q>
</select>
</template>
</category>
<category>
<pattern>動物の足は?</pattern>
<template>
<select>
<vars>?name ?number</vars>
<q><subj>?name</subj><pred>legs</pred><obj>?number</obj></q>
</select>
</template>
</category>
任意の変数名を利用せずに検索対象項目に ‘?’ のみを指定した場合、変数名として、”?subj”, “?pred”, “?obj” が出力されます。
関連項目: addtriple, deletetriple, uniq, RDFサポート
6.1.50. sentence¶
[1.0]
sentence要素は、英文に対する整形を目的として、文章の最初の単語を大文字にし、他のすべての単語を小文字に設定します。 英字以外に、大文字・小文字が存在するギリシャ文字等にも対応します。
- 使用例
<category>
<pattern>Create a sentence with the word *</pattern>
<template>
<sentence>HAVE you Heard ABouT <star/></sentence>
</template>
</category>
<sentence />は<sentence><star /></sentence>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>CORRECT THIS *</pattern>
<template>
<sentence />
</template>
</category>
6.1.51. size¶
[1.0]
size要素は、利用可能なカテゴリ数を返します。 カテゴリ数には、初期登録されたcategoryに加え、learn/learnfで登録されたcategoryを含む為、ユーザ毎で数値が変わる場合があります。
- 使用例
<category>
<pattern>理解できるカテゴリ数は?</pattern>
<template>
<size />です。
</template>
</category>
6.1.52. space¶
[custom]
<category>
<pattern>おはようございます。</pattern>
<template>
<think>
<set var="french">フレンチ</set>
<set var="italian">イタリアン</set>
<set var="chinese">中華</set>
</think>
<get var="french"/><get var="italian"/><get var="chinese"/>を検索。
<get var="french"/><space/><get var="italian"/><space/><get var="chinese"/>を検索。
</template>
</category>
関連項目: sraix
6.1.53. split¶
[2.1]
split要素はリッチメディア要素で、XML内の文章を分割するために使用します。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
<category>
<pattern>おはようございます。</pattern>
<template>
今日はいい天気ですね。
<split/>
明日も晴れるといいですね。
</template>
</category>
6.1.54. sr¶
[1.0]
<srai><star /></srai>
の省略形です。- 使用例
<category>
<pattern>私の質問は * です</pattern>
<template>
<sr />
</template>
</category>
<sr />は、<srai><star/></srai>と同義です。
<category>
<pattern>私の質問は * です</pattern>
<template>
<srai><star/></srai>
</template>
</category>
6.1.55. srai¶
[1.0]
max_search_srai
で制限しています。以下の例は、”HI”に対応したcategoryで共通する処理を定義し、その他の入力文に対応したcategoryで利用しています。
- 使用例
<category>
<pattern>こんにちは</pattern>
<template><srai>HI</srai></template>
</category>
<category>
<pattern>Hello</pattern>
<template><srai>HI</srai></template>
</category>
<category>
<pattern>Hola</pattern>
<template><srai>HI</srai></template>
</category>
<category>
<pattern>HI</pattern>
<template>こんにちは</template>
</category>
6.1.56. sraix¶
[2.0]
サブエージェントが提供するサービスと連携する方法には、以下の4種類があり、それぞれで設定される結果や受信データの取得方法が異なります。
sraix要素で指定する属性・子要素は以下になります。詳細は SubAgent を参照してください。
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
service | string | No | カスタム外部サービスのサービス名。 |
botName | string | No | botサービス連携のbotエイリアス名。 |
nlu | string | No | NLUサービス連携のNLUエイリアス名。 |
template | string | No | 汎用RESTサービス連携用の雛形名。 |
default | string | No | 通信異常発生時の結果文字列。 |
timeout | string | No | 通信タイムアウト時間(秒単位)を ‘1’ 以上の整数で指定。未指定時は ‘10’。 |
- 子要素
- 使用例
<category>
<pattern>*から*までの乗り換え案内</pattern>
<template>
<sraix service="myService">
<star/>
<space />
<star index="2"/>
</sraix>
</template>
</category>
6.1.57. star¶
[1.0]
*
, _
、もしくは、0以上の文字列を指定する ^
, #
に該当する文字列を意味し、pattern要素の set
、iset
、regex
、bot
要素に該当する文字列も対象になります。star要素で取得する結果はパターンマッチング時の値が対象となるため、以下の様になります。
- ワイルドカードの結果: 英数記号:半角、カタカナ:全角に変換されたマッチ文字列。
- set要素の結果: マッチした 単語リスト(sets)ファイル の定義文字列。
- iset要素の結果: マッチした isetの のwords定義文字列。
- regex要素の結果: 正規表現としてマッチした、英数記号:半角、カタカナ:全角に変換された文字列。
- bot要素の結果: マッチした propertiesファイル の定義文字列。
- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | star識別番号を ‘1’ 以上の整数で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>私は * と * が好きです。</pattern>
<template>
あなたは、 <star /> と <star index="2" /> が好きなのですね。
</template>
</category>
6.1.58. system¶
[1.0]
allow_system_aiml
に ‘true’ を設定する必要があります。- 使用例
<category>
<pattern>LIST ALL AIML FILES</pattern>
<template>
<system>ls -l *.aiml</system>
</template>
</category>
6.1.59. that¶
[1.0]
category
の子要素としても定義があり、直前の応答文との一致判定に利用されますが、templateの要素としての that
は、過去の応答文を取得する要素として使用します。- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | 履歴番号を ‘0’ 以外の整数値で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>こんにちわ</pattern>
<template>
こんにちは
</template>
</category>
<category>
<pattern>すみません</pattern>
<template>
<that />ですね
</template>
</category>
関連項目: that(pattern), thatstar
6.1.60. thatstar¶
[1.0]
that
で指定したワイルドカードに対応する文字列を取得します。- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | star識別番号を ‘1’ 以上の整数で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>...</pattern>
<template>
コーヒーが好きですか?
</template>
</category>
<category>
<pattern>はい</pattern>
<that> * が好きですか?</that>
<template>
私も<thatstar />が好きです。
</template>
</category>
関連項目: that(pattern), that, star, topicstar
6.1.61. think¶
[1.0]
think要素は、内容の処理結果を応答文に反映せずに、Bot内での処理を実施する要素です。結果は常に空文字になります。
- 使用例
<category>
<pattern>私の名前は * です</pattern>
<template>
<think>
<set name="name"><star /></set>
</think>
あなたの名前を覚えました。
</template>
</category>
6.1.62. topicstar¶
[1.0]
topic
で指定したワイルドカードに対応する文字列を取得します。- 属性
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
index | string | No | star識別番号を ‘1’ 以上の整数で指定。未指定時は ‘1’。 |
- 使用例
<category>
<pattern>私はコーヒーが好きです。</pattern>
<template>
<think><set name="topic">beverages コーヒー</set></think>
わかりました。
</template>
</category>
<topic name="beverages *">
<category>
<pattern>私の好きな飲み物は?</pattern>
<template><topicstar/>です。</template>
</category>
</topic>
関連項目: topic(pattern), star, thatstar
6.1.63. uniq¶
[2.0]
- 子要素
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
subj | string | No | 検索対象のsubject (主語)の値、又は、’?’ |
pred | string | No | 検索対象のpredicate (述語)の値、又は、’?’ |
obj | string | No | 検索対象のobject (目的語)の値、又は、’?’ |
subj
、pred
、obj
のいずれか1つが最低限必要です。同一子要素が複数指定された場合、最後の指定が有効になります。<category>
<pattern>subject list</pattern>
<template>
<uniq>
<subj>?</subj>
</uniq>
</template>
</category>
以下の例では、結果的に、RDFナレッジベースに対して、predicate=”は”, object=”バラ科” を指定した検索を行って、’subject’の一覧を取得しています。
- 使用例
<category>
<pattern>* は *</pattern>
<template>
<addtriple>
<subj><star /></subj>
<pred>は</pred>
<obj><star index="2"/></obj>
</addtriple>
登録しました
</template>
</category>
<category>
<pattern>探して * * *</pattern>
<template>
<uniq>
<subj><star /></subj>
<pred><star index="2"/></pred>
<obj><star index="3"/></obj>
</uniq>
</template>
</category>
関連項目: addtriple, deletetriple, select, RDFサポート
6.1.64. uppercase¶
[1.0]
uppercase要素は、対象となる文字列内の半角英字を大文字にします。英字以外に、大文字・小文字が存在するギリシャ文字等にも対応します。
- 使用例
<category>
<pattern>こんにちは * です</pattern>
<template>
こんにちは<uppercase><star /></uppercase>さん
</template>
</category>
<uppercase />は、<uppercase><star /></uppercase>と同義です。書き換えると以下の様になります。
- 使用例
<category>
<pattern>こんにちは * さん</pattern>
<template>
こんにちは<uppercase />さん
</template>
</category>
関連項目: lowercase
6.1.65. vocabulary¶
[1.0]
vocabulary要素は、Botの単語数として起動時に展開された以下の項目の合計数を返します。
- pattern要素 で記述された単語の総数(ワイルドカードや、iset等の子要素内の単語を除く)。
- 全ての 単語リスト(sets)ファイル に記載されたリスト数の合計値。
- 使用例
<category>
<pattern>知っている単語数は?</pattern>
<template>
<vocabulary />です。
</template>
</category>
関連項目: size
6.1.66. video¶
[2.1]
video要素は、リッチメディア要素で、ビデオの情報を返すことができます。 ビデオのURLやファイル名を指定することができます。
対話エンジンでは、リッチメディア要素に対して、XML形式の結果を返します。 実際の画面描画等は、コンフィグレーション定義のclientの renderer で指定した処理クラスの制御に依存します。
- 使用例
<category>
<pattern>ビデオ表示</pattern>
<template>
<video>https://url.for.video</video>
</template>
</category>
6.1.67. word¶
[1.0]
word要素は内部処理で生成する要素で、template内に記述されているテキスト部分(子要素内を含む)が展開されます。
- 使用例
<category>
<pattern>HELLO</pattern>
<template>Hi there!</template>
</category>
この使用例の場合、’Hi there!’ がword要素として展開されます。
6.1.68. xml¶
[1.0]
xmlという要素は存在しませんが、対話エンジンで使用可能な要素以外がXML形式で指定されている場合、XML形式のままで結果に反映します。 これにより、templateの応答の一部として、XML形式の要素を記載することができます。
- 使用例
<category>
<pattern> * をボールド表示</pattern>
<template>
<bold><star /></bold>
</template>
</category>