QiChat MANIAX(2) ヘッダのキーワードを網羅する🕸🔓


はじめに

今回は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なしの場合、選択肢の中身は順番に選択されていきます。

$\tiny{アマビエローフ}$

後出しできる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です。

それでは!