LoopMasterは繰り返し処理や、<srai>
と組み合わせて制限回数の設定などに使用することができます。
また、LoopMasterが管理する情報はボット間で共有されるため、複数ボットを連携する際に役立ちます。
使用方法
操作手順
- Githubに公開されているLoopMasterのシナリオをダウンロードしてください。
ダウンロードするシナリオについてはこちらをご覧ください。 - ダウンロードしたシナリオを登録してください。
詳細はこちらをご覧ください。
関数一覧
利用できる関数の一覧です。関数をクリックすると、関数の詳細へジャンプします。
関数 | 概要 |
---|---|
#new name limit |
ループインスタンスを作成します。 |
#new name limit continue break |
ループの継続と終了の文字列を指定してループインスタンスを作成します。 |
#loop name |
ループ処理を行います。 |
#delete name |
ループインスタンスを削除します。 |
関数詳細
#new name limit continue break
ループの継続と終了の文字列を指定してループインスタンスを作成します。
パラメータ
name
ループインスタンスの名称。limit
ループ回数。continue
ループ継続時に返す文字列。break
ループ終了時に返す文字列。
戻り値
- 作成したループインスタンスの名称。
#loop name
ループ処理を行います。
関数の呼び出し時点のループ回数がlimit
未満の場合はcontinue
を返し、それ以外の場合はbreak
を返します。
continue
とbreak
の値は、インスタンス作成時に指定することができます。
パラメータ
name
ループするインスタンスの名称。
戻り値
continue
またはbreak
インスタンス作成時に値を指定した場合は、その値を返します。
#delete name
ループインスタンスを削除します。
パラメータ
name
削除したいループインスタンスの名称。
戻り値
OK
使用例
クイズの回答回数の制限に、LoopMasterを使用した例です。
ユーザが3回間違えるとゲームオーバーになります。
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
<?xml version="1.0" encoding="UTF-8"?> <aiml version="2.5.0" xmlns="http://www.nttdocomo.com/aiml/schema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nttdocomo.com/aiml/schema/AIML.xsd"> <category> <pattern>クイズ</pattern> <template> パンはパンでも、食べられないパンは? <think> <!-- ループインスタンスを作成 --> <sraix botid="LoopMaster">#new quiz 2 retry gameover</sraix> <!-- TOPICを変更 --> <set name="topic">quiz</set> </think> </template> </category> <topic name="quiz"> <!-- 答えが正解の場合 --> <category> <pattern partial="true" level="surface">フライパン</pattern> <pattern partial="true" level="surface">ジーパン</pattern> <template> 正解! <think> <!-- ループインスタンスを削除 --> <sraix botid="LoopMaster">#delete quiz</sraix> <!-- TOPICを削除 --> <set name="topic"/> </think> </template> </category> <!-- 答えが不正解の場合 --> <category> <pattern>*</pattern> <template> 違うよ! <!-- 回答回数によって発話を変更 --> <srai><sraix botid="LoopMaster">#loop quiz</sraix></srai> </template> </category> <!-- まだ回答可能な場合 --> <category> <pattern>retry</pattern> <template> もう一度、考えてみよう! </template> </category> <!-- もう回答できない場合 --> <category> <pattern>gameover</pattern> <template> ゲームオーバー!また挑戦してね! <think> <!-- ループインスタンスを削除 --> <sraix botid="LoopMaster">#delete quiz</sraix> <!-- TOPICを削除 --> <set name="topic"/> </think> </template> </category> </topic> </aiml> |
実行結果
1回目で正解した場合
1 2 3 4 5 6 7 8 |
user > クイズ bot > パンはパンでも、食べられないパンは? user > フライパン bot > 正解! |
3回間違えた場合
1 2 3 4 5 6 7 8 |
user > クイズ bot > パンはパンでも、食べられないパンは? user > フランスパン bot > 違うよ!もう一度、考えてみよう! user > コッペパン bot > 違うよ!もう一度、考えてみよう! user > クロワッサン bot > 違うよ!ゲームオーバー!また挑戦してね! |
#new name limit
ループインスタンスを作成します。
パラメータ
name
ループインスタンスの名称。limit
ループ回数。戻り値
ループインスタンスを作成する例です。
xAIML
実行結果