見出し画像

daab SDK 最新 (2023-07-30) 版のお知らせ

はじめに

daab SDK を更新しました.各パッケージのバージョンは以下の通りです.

パッケージごとの変更詳細は GitHub リポジトリの Release をご覧ください.

今回のリリースで入った変更のうち主なものは以下の通りです.

  • メンションが付いたメッセージの送受信

  • オリジナルスタンプの送受信

  • 内部で利用するロガーの変更

メンションが付いたメッセージの送受信

direct ではメッセージにメンションを付けられます.

これと同じものを daab からも送信できるようになりました.

robot.respond(/メンションの実験$/, (res) => {
  const mention = robot.direct.mention;

  const at = mention.markup;
  const user = robot.brain.userForName('徳島 太郎');
  res.send(`${at(user)} こんにちは!`);
});

また,daab が受信したメッセージにメンションが付けられていた場合,その情報を取得することもできます.

robot.hear('yesno', (res) => {
  const all = res.message.mentionAll;
  const me = res.message.mentionMe;
  const mentions = res.message.mentions;

  // メンションの ID 情報を使ってユーザーを特定する
  const users = mentions.map((m) => robot.brain.userForId(m.user.id));
  // ...
});

トークメンバー全員にメンションする方法や各プロパティの詳細については  daab デベロッパーのドキュメントをご確認ください.

オリジナルスタンプの送受信

direct ではデフォルトスタンプセットの他に,組織固有のスタンプセットを追加することができます.

https://direct4b.com/ja/feature/talk/original_stamp.html

これまで daab ではデフォルトスタンプしか扱えませんでしたが,今回のリリースでオリジナルスタンプの送受信に対応しました.

送信方法は以下の通りです.

res.send({
  stampset_id: '1234567_8901234',
  stamp_id: '1234567_8901234',
  text: 'こんにちは' // (optional) テキスト付きにしたい場合に指定する
});

受信方法は以下の通りです.

robot.respond('original_stamp', (res) => {
  const { stampset_id, stamp_id } = res.json;
  res.send(`${stampset_id} - ${stamp_id}`);
});

送信時に指定する stampset_id と stamp_id の値は,実際にオリジナルスタンプを受信すると簡単にわかります.

なお,デフォルトスタンプを送受信する場合のフィールド名とは異なりますので,その点はご注意ください.

内部で利用するロガーの変更

フォーク元の hubot で内部のロガーが log から pino に変更されました.これに伴い lisb-hubot でも内部のロガーを pino に変更しています.

この変更により,daab が出力するログのフォーマットは JSON 形式になりました.

{"level":30,"time":1690882897457,"pid":43121,"hostname":"example.local","name":"direct-js","p1":"WebSocket opened.","p2":"","p3":"","p4":"","p5":""}
{"level":30,"time":1690882898500,"pid":43121,"hostname":"example.local","name":"Hubot","msg":"hubot-redis-brain: Discovered redis from REDIS_URL environment variable"}

ログの name フィールドには,lisb-hubot の出力するログだと "Hubot" が,direct-js の出力するログだと "direct-js" がそれぞれ入ります.

またこれまで direct-js が内部的に出力していたログ情報については,p1 ~ p5 のフィールドへ機械的にマッピングされた上で出力されます.

その他  pino 自体の仕様については公式のドキュメントをご確認ください.

おわりに

最近のリリースで daab SDK に入った変更内容について紹介させていただきました.

メンションを使って daab からのメッセージを強調したり,オリジナルスタンプをトリガーに daab で特定の処理を実行したり,といったことが可能になります.

また,ログフォーマットが JSON 形式になったことで以前よりもログ収集がやりやすくなったのではないか,とも考えています.

L is B では今後も daab 開発の一助となる改良を続けていきます.