#BookmarkとBookmarkStatusでTopicファイルに印をつけよう🐩🔯
BookmarkとはTopic中のタグのようなものです。Topicファイル内の好きなところにBookmarkをつけられます。
対してBookmarkStatusはBookmarkの状態を取り扱うクラスです。Bookmarkの機能の有効・無効を切り替えたり、各種イベントリスナーの設定が可能です。
#手引き🍀👐
Topicファイルは以下のとおりです。
topic: ~mimic_taxi()
proposal: %mimic_proposal サンタクロースと銀河鉄道、どちらを呼びますか
u1: (サンタクロース) プレゼントを待っている靴下を探しましょう %bell_mimic
u1: (銀河鉄道) カムパネルラに会いにいきましょう %chime_mimic^endDiscuss(taxi)
##Bookmarkを取ってくる🥏🐶
Topicファイルに含まれる全てのBookmarkを取得します。
Topic topic = TopicBuilder.with(qiContext)
.withResource(R.raw.mimic_taxi)
.build();
Map<String, Bookmark> bookmarks = topic.getBookmarks();
##BookmarkとBookmarkStatusは1対1対応♊️🌱
各Bookmarkに対応するBookmarkStatusを作成します。
Bookmark bellBookmark = bookmarks.get("bell_mimic");
Bookmark chimeBookmark = bookmarks.get("chime_mimic");
//qiChatbot.bookmarkStatus(bookmark)が呼ばれるとBookmarkStatusのインスタンスを返す
bellBookmarkStatus = qiChatbot.bookmarkStatus(bellBookmark);
chimeBookmarkStatus = qiChatbot.bookmarkStatus(chimeBookmark);
bellBookmarkStatus.addOnReachedListener(() -> {
//会話がTopic内の%bell_mimicに到達したときに呼ばれる
});
chimeBookmarkStatus.addOnReachedListener(() -> {
//会話がTopic内の%chime_mimicに到達したときに呼ばれる
});
##リスナーをポイする🗑
BookmarkStatusでリスナーを削除するためには、それらのBookmarkStatusを変数に保持しておいてリスナーを削除する際に再びコールすることが必要です。
//各BookmarkStatusでリスナーを削除
bellbookmarkStatus.removeAllOnReachedListeners();
chimebookmarkStatus.removeAllOnReachedListeners();
Bookmarkについては、GitのMastering Bookmarkで手軽に体験ができます。以下⬇️でサンプルアプリを一部変更したものの挙動を視聴できますので、よろしければご覧ください。
#あとがき
今回もPepperSDKforAndroidを参考に書かせていただきました。
さらに詳しい情報はBookmarkのAPIリファレンス、BookmarkStatusのAPIリファレンスを参照してみてください。
次回はBaseQiChatExecutorについて書きます。Executor(ロケットエンジン)の出番はありません🚀
それではまた次回〜🛸