文脈のある対話を実現するため直前のシステム発話を設定します。<that>
タグに設定した値は、ボットの直前の応答文とマッチングされ、<pattern>
タグのマッチングと合わせて<category>
タグが選ばれる条件として評価されます。<that>
タグはワイルドカードを含む<pattern>
タグと同じ要素を扱うことが可能です。また、1つの<category>
タグに複数の<that>
タグを並べて記述できます。
1 2 3 4 5 6 7 8 9 10 |
<category> <pattern>こんにちは</pattern> <template>こんにちは!</template> </category> <category> <pattern>今日もいい天気ですね</pattern> <that>こんにちは!</that> <template>そうですね!</template> </category> |
前回システム発話情報には有効期限があります。
次のユーザ発話入力が、対話タイムアウトの設定時間を過ぎてから行われた場合は、前回システム発話情報が初期化された後に対話処理が行われます。
時間計算はシナリオ対話APIのappSendTime
とappRecvTime
の差を参照して行います。その値が対話タイムアウトの設定を越えている場合に前回システム発話情報が初期化されます。
また、シナリオ対話APIのリクエストパラメータinitTalkingFlag
の値がtrue
である場合も初期化されます。
属性
名称 | 型 | 必須 | デフォルト | 説明 |
---|---|---|---|---|
partial 独自拡張 |
boolean |
– | false |
partial="true" の場合に前回システム発話文の部分一致マッチングを有効にします。 |
id 独自拡張 |
string |
– | – | マッチングさせたい前回システム発話IDを指定します。 |
emotion 独自拡張 |
string |
– | – | マッチングさせたい前回システム発話のemotion を指定します。 |
partial
true
を設定した場合に前回システム発話文の部分一致マッチングを有効にします。
xAIML
1 2 3 4 5 6 7 8 9 10 |
<category> <pattern>こんにちは</pattern> <template>こんにちは!</template> </category> <category> <pattern>今日もいい天気ですね</pattern> <that partial="true">!</that> <template>そうですね!</template> </category> |
実行結果
1 2 3 4 |
user > こんにちは bot > こんにちは! user > 今日もいい天気ですね bot > そうですね! |
id
id
属性を指定すると、前回のシステム発話の特定に<that>
タグの内容ではなく発話IDでマッチングを行います。
発話IDの情報は前回のシステム発話がされてAPIのレスポンスを返す際に更新されます。
そのため、<template>
タグのid
属性にIDを指定していたとしても、そのまま<srai>
タグで<that>
タグを持つ<category>
に入力を渡すことはできません。
強制的に現時点での前回システム発話IDを変更するには、predicate
のid
の値を変更することで行えます。
指定する値には命名規則があり、文頭にid:
を付けなければ有効になりません。(具体例は後述をご覧ください)
発話IDで前回発話マッチングを行う例です。
xAIML
1 2 3 4 5 6 7 8 9 10 |
<category> <pattern>こんにちは</pattern> <template id="001">こんにちは!</template> </category> <category> <pattern>今日もいい天気ですね</pattern> <that id="001" /> <template>そうですね!</template> </category> |
実行結果
1 2 3 4 |
user > こんにちは bot > こんにちは! user > 今日もいい天気ですね bot > そうですね! |
<srai>
の再帰処理で<that>
の絞り込みを行う例です。
xAIML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<category> <pattern>最近の興味</pattern> <template> <think> <set name="id">id:talk-01</set> </think> <srai>好きな動物</srai> </template> </category> <category> <pattern>好きな動物</pattern> <that id="talk-01" /> <template id="talk-02"> インコが好きですね! </template> </category> |
実行結果
1 2 |
user > 最近の興味 bot > インコが好きですね! |
emotion
マッチングさせたい前回システム発話のemotion
を指定します。
emotion
には以下のいずれかを1つ以上指定できます。
glad
angry
sad
happy
複数指定する際は、パイプ区切りで指定するか、<that>
を複数記述してください。
以下の記述はどちらも同じemotion
にマッチします。
1 |
<that emotion="happy|sad">*</that> |
1 2 |
<that emotion="happy"/> <that emotion="sad" /> |
子要素
<pattern>
タグと同様です。