この記事は、Pepabo Advent Calendar 2015の3日目の記事です。 昨日は私のプロンプトにランダムに絵文字を表示すると楽しい 😄 でした。
現在、 2015年12月3日の25時です!!!
hubot-slackでAttachmentsを使う方法を共有します!
Attachmentsとは?
Attachmentsとは何か? SlackのIntegrationで見られるリッチな表示になっているメッセージです。 例えば、↓のような表示です。
通常、hubot-slackで msg.send
すると簡単なテキストしか送信できませんが、
Attachmentsを使うことで↑のようなリッチなテキストを送信することができます!
対象のバージョン
hubot-slackのv2系では使えていたようなのですが、v3系になってこの機能は削除されたようです。。 しかし、沢山の要望があったのかv3.3.0から復活しています。
書き方
msg.send
の代わりに robot.emit
を使います。
robot.emit 'slack.attachment', # msg.messageは必須 message: msg.message content: [{ # see https://api.slack.com/docs/attachments text: "Attachment text" fallback: "Attachment fallback" fields: [{ title: "Field title" value: "Field value" }] }, { pretext: "[Pretext] *bold text* _italic text_ `fixed-width text`" color: "#439FE0" mrkdwn_in: ["text", "pretext", "fields"] text: """ ・ *bold test* ・ _italic text_ ・ `fixed-witdh text` > block quote ``` #include <iostream> using namespace std%3B void main() { cout << \"hello world\" << endl%3B } ``` """ fields: [{ title: "Field 1" value: "*bold text* _italic text_ `fixed-witdh text`" short: 1 },{ title: "Field 2" value: "*bold text* _italic text_ `fixed-witdh text`" short: 1 }] },
使用できるパラメータはSlackのドキュメントに詳しく書かれています。 Attachments | Slack
他アダプター時のフォールバック
msg.send
していた部分はそのまま robot.emit
に書き換えてしまうと、
hubot-slackアダプタ以外で動作しているときにエラーとなってしまいます。
(例えば、CLIで実行した時とか)
そこで以下のようにAdapterがhubot-slackの時のみ robot.emit
を使うようにすると良いと思います。
unless robot.adapter instanceof slack.SlackBot # hubot-slack以外の場合はmsg.send msg.send "hoghoge" else # hubot-slackの時はattachmentsを使う robot.emit 'slack.attachment', message: msg.message -- -- snip -- --
まとめ
Attachmentsを使うとリッチなテキストをbotから送信できるようになります。 単純なテキストだとどうしても味気ない感じになってしまいますが、 Attachmentsを使うことで見栄えを良くすることができると思います!
Let's enjoy !