#はじめに
今回はQiChat MANIAXの続編です!ヘッダのキーワードについて、詳しく見ていきましょう👁🗨👁🗨
#conceptで同類を定義する🍌🍫🍬
conceptは、リストの単語とフレーズを定義するものです。下記のように使います↓
concept:(name) [word1 word2 "word3 word4"]
- word1とword2は個々に独立した単語
- word3とword4は複数の単語によるフレーズ。間に合うスペースのある単語を一つのフレーズとして扱う場合は、ダブルコーテーション(")でくくってください
- nameはリストにつけるコンセプト名。コンセプトを使用するときに使います
⚠️注意
フレーズとは文章ではなく単語の集まりであり、句読点は自動的に排除されます。
コンセプトはどの単語でもglobalであり、異なるTopicでも使用可能です🌍
以下は使用例と実行例です。
topic: ~introduction ()
concept:(greetings) ^rand[おはよう スラマッパギ "許して ヒヤシンス"]
concept:(phoenix) [銅の 金の] 鳳凰
concept:(food) [リバイアサン アマビエ ~phoenix]
u:(~greetings) ~greetings
u:(_~food が食べたい) $1 は調理済みです
u:(お腹すいたな) ~food 捌いてきましょうか
ちなみに^randは、選択をランダムにしてくれます🎲
^randなしの場合、選択肢の中身は順番に選択されていきます。
#後出しできるdynamic
topic: ~dynamic()
dynamic:mp3
u:({そうだな}_~mp3 ["かけて お願い" 聴きたい] ) $1 再生します。ぷわーん
QiChatbot qiChatbot = ...;
EditablePhraseSet editablePhraseSet = qiChatbot.dynamicConcept("mp3");
List<Phrase> phrases = new ArrayList<>();
phrases.add(new Phrase("マリークレールアラン"));
phrases.add(new Phrase("グレングールド"));
phrases.add(new Phrase("エンリコピエラヌンツィ"));
editablePhraseSet.addPhrases(phrases);
基本的にはstaticを使う方が良いですが、GitのMastering dynamic conceptで体験できるように後から単語を追加することができます➕
⚠️注意
dynamicのコンセプトにあまり多くの単語やフレーズを追加すると、読み込み時間に影響します。例えば数千の単語やフレーズを含むdynamicのコンセプトは、読み込みに数分を要するでしょう🕐🐦
それぞれの単語やフレーズを読み込むためにPepperはリスニングの機能を停止するので、多すぎる単語やフレーズの読み込みはユーザー体験の質を劣化させてしまうのです。
#descriptionで話を思い出す🗯
descriptionに記述した内容は、$Dialog/FocusDescriptionで呼び出すことができます。使用例は以下の通りです↓
description: イルミネーション
u:(天の川を航海できたら星が採れるのに) 月には海がありますよ
u:(淡水魚いるかな) それを言うなら海水魚だと思います
u:(何の話だっけ) $Dialog/FocusDescription の話です
#topicでネーミングセンスを試される📛
Topicの名前を決定します。nameの部分です↓
topic: ~name ()
名前は一つしか持てないため、ポチやタマなどいい加減な命名は避けましょう。
$\tiny{ストレルカとベルカに憧れるポチと、音楽性の違いからブレーメンの音楽隊を脱退してギタリストになったタマ}$
#あとがき
今回もPepperSDKforAndroidを参考に書かせていただきました。
次回のQiChat MANIAXはルール編です。下の画像は網の目を潜る(物理)Pepperです。
それでは!