LoginSignup
0
0

More than 3 years have passed since last update.

Pepper SDK入門(26) BookmarkとBookmarkStatusでTopicファイルに目印をおく👀🚩

Last updated at Posted at 2021-03-11

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(ロケットエンジン)の出番はありません🚀
それではまた次回〜🛸

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0