保存したデータに有効期限を設定する方法を紹介します。
実装方法
<date>
を使用することで有効期限を設けることができます。以下の例では、有効期限を60秒と設定しており、データ取得の際に、データを保存してから60秒経過していた場合は保存したデータをクリアしています。
xAIML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<category> <pattern>_</pattern> <template> <think> <!-- 保存した日付と現在の日付の差を求める --> <set name="_var_diff"><date_span field="second"><get name="start_date"/></date_span></set> <condition name="_var_diff"> <li value="GREATER_THAN 60"> <!-- 60秒を超過していた場合、保存した値をクリア --> <predstore>!test</predstore> </li> </condition> </think> <srai><get name="input"/></srai> </template> </category> <!-- データをセット --> <category> <pattern>SET</pattern> <template> <think> <!-- 値をセットした日付を保存 --> <set name="start_date"><date/></set> <predstore>test=テストです</predstore> </think> ok </template> </category> <!-- データをゲット --> <category> <pattern>GET</pattern> <template> <think> <!-- 保存していた値を取得 --> <set name="_var_result"><predstore>test</predstore></set> </think> <!-- 値がクリアされているかのチェック --> <condition name="_var_result"> <li value="|undefined"> データがありません。 </li> <li> <get name="_var_result"/> </li> </condition> </template> </category> |
実行結果
1 2 |
user > SET bot > ok |
1 2 |
user > GET(SETしてから60秒以内) bot > テストです |
1 2 |
user > GET(SETしてから60秒を超過) bot > データがありません。 |