¿What is Topic❓
今回の記事で取り扱うTopicとは、QiChatbotのための会話内容が記述されているものです。
ユーザとPepper間の言葉によるやりとりを定義しています。
TopicにはStatusがある
Qichatbotは複数のTopicでビルドできます。ファウルズの話1についてのTopic、スキージャンプ・ペアの話についてのTopicなどです。
ファウルズの話をしている時はファウルズのTopicにフォーカスが当たっており、スキージャンプ・ペアの話をしている時はスキージャンプ・ペアのTopicにフォーカスが当たっています。フォーカスされているTopicは基本的に、最後の応答を返したTopicです。getFocusで、今フォーカスされているTopicを取得することもできます。
TopicStatusは、そうしたTopicファイルの有効・無効を設定できる値クラスです。
fouls.top
u:(野球) 野球最高!!
ski_jumping_pairs.top
u:(スキージャンプペア) トライアングルできるかな
通常上二つのTopicファイルでQichatbotをビルドしてChatさせると、ユーザが「野球」と言えばPepperは「野球最高!!」と返し、「スキージャンプペア」と言えば「トライアングルできるかな」と返します。
しかしTopicStatusでファウルズのTopicファイルを無効(false)にすると、ユーザが「野球」と言っても「野球最高!!」を返さなくなるのです。
一度無効にしたTopicファイルを有効にしたい時には、setEnabledで有効(true)を設定しましょう。
🎡🧪🎨利用法いろいろ🌈🧫💫
1.QiChatbotをビルドする
TopicファイルからTopicをビルドし、QiChatbotを作成します。
QiChatbotについては前回の記事も参考にしてください。
//Topicを作成
Topic baseballtopic = TopicBuilder.with(qiContext)// QiContextを利用してビルダーを作成
.withResource(R.raw.fouls)//Topicファイルを設定
.build();//Topicをビルド
Topic skiTopic = TopicBuilder.with(qiContext)
.withResource(R.raw.ski_jumping_pairs)
.build();
QiChatbot qiChatbot = QiChatbotBuilder.with(qiContext)
.withTopic(topic)
.build();
2.Topic、Getだぜ🐭⚡️
QiChatbotに含まれる全てのTopicを取得します。
List<Topic> topics = qiChatbot.getTopics();
##3.TopicStatusを管理(≠全展望監視)する
TopicからTopicStatusを作成します。パノプティコンは作りません。
baseballTopicStatus = qiChatbot.topicStatus(baseballtopic);
skiTopicStatus = qiChatbot.topicStatus(skiTopic);
//該当のTopicファイルを無効にする
baseballTopicStatus.setEnabled(false);
//現在のTopicファイルの状態を知りたい時に呼ぶ
Boolean isEnabled = baseballTopicStatus.getEnabled();
baseballTopicStatus.addOnEnabledChangedListener(enabled ->
//Topicファイルの状態が変わった時に呼ばれる
Log.i(TAG, "onEnabledChanged: " + enabled)//UFOの着陸音を流しても可
);
//現在のフォーカスの状態を知りたいときに呼ぶ
Boolean isFocused = baseballTopicStatus.getFocused();
baseballTopicStatus.addOnFocusedChangedListener(focused ->
//フォーカスの状態が変わった時に呼ばれる
Log.i(TAG, "onFocusedChanged: " + focused)//ネッシーの画像を表示しても可
);
上のコードの場合はファウルズのTopicが無効なため、ユーザが「野球」と言ってもPepperは反応しません。
globalRecommendationsでユーザの発話候補を取得すると、ファウルズのTopicから「野球」を取得することはできませんが、スキージャンプ・ペアのTopicから「スキージャンプペア」を取得することはできます。
Recommendationsについては前回を復習してみてくださいね📖🔍
あとがき
今回もPepperSDKforAndroidを参考に書かせていただきました。
さらに詳しくはTopicのAPIリファレンスやTopicStatusのAPIリファレンスを参照してください。
次回はQiChatVariableの回です。Variable Star(変光星)🌟とVariable Wind(変向風)🌬の登場はありません。${\mathbb{See you later alligator ~}}$🐊
-
ここでは円城塔の『オブ・ザ・ベースボール』に登場する、人が降ってくる町の意。バットで落ちてくる人を打ち返します。 ↩