概要
自分がSlackアプリで開発する時によく参照するものをまとめました。
メッセージ
改行
https://api.slack.com/reference/surfaces/formatting#line-breaks
コード
こんにちは\nご機嫌いかが
結果
こんにちは ご機嫌いかが
チャンネルへのリンク
https://api.slack.com/reference/surfaces/formatting#linking-channels
コード
フォーマットは<#{チャンネルID}>
です。
こんにちは、<#C123ABC456>に来てください。
チャンネルIDの確認方法
結果
ユーザーへのメンション
https://api.slack.com/reference/surfaces/formatting#mentioning-users
コード
フォーマットは<@{メンバーID}>
です。
こんにちは、<@U012AB3CD>さん
※前後に半角スペースは無くてもOKでした
メンバーIDの確認方法
結果
グループへのメンション
https://api.slack.com/reference/surfaces/formatting#mentioning-groups
コード
フォーマットは<!subteam^{グループID}>
です。
こんにちは、<!subteam^SAZ94GDB8>チームさん
※前後に半角スペースは無くてもOKでした
グループIDの確認方法
結果
@here, @channel
https://api.slack.com/reference/surfaces/formatting#special-mentions
コード
こんにちは、<!here> こんにちは、<!channel>
※前後に半角スペースは無くてもOKでした
結果
Attachments
AttachmentsはSlackメッセージをよりインタラクティブで視覚的に魅力的にするための機能です。
https://api.slack.com/reference/surfaces/formatting#when-to-use-attachments
しかし現在ではDeprecatedなので、もう使わないことが推奨されます。
ただし左にカラーバー(色の付いた縦棒)が使えるのは現状attachmentsだけです。
{ "text": "", "blocks": [], "attachments": [ { "color": "#00FF00", "blocks": [] } ] }
There is one exception, and that's the
color
parameter, which currently does not have a block alternative. If you are strongly attached (🎺) to thecolor
bar, use theblocks
parameter within an attachment.
ref: https://api.slack.com/messaging/attachments-to-blocks#direct_equivalents
ちなみに後述のBlocksとは共存できます。
Blocks
BlocksはAttachmentsの後に生まれたSlackのメッセージをより柔軟に構築できるように設計されたUIフレームワークです。
テキスト、画像、ボタン、セレクターなどさまざまなタイプのブロックを組み合わせて、よりリッチでインタラクティブなメッセージを作成することができます。
https://app.slack.com/block-kit-builder/
で試せます。
Goで次のように組み立てることができます。
func main() { client := NewClient(slack.New(token)) opts := []slack.MsgOption{ slack.MsgOptionUsername("テストボット"), slack.MsgOptionBlocks( slack.SectionBlock{ Type: slack.MBTSection, Text: &slack.TextBlockObject{ Type: slack.MarkdownType, Text: fmt.Sprintf("こんにちは、<@%s>さん", userID), }, }, slack.SectionBlock{ Type: slack.MBTSection, Text: &slack.TextBlockObject{ Type: slack.MarkdownType, Text: "これはテストです", }, }, ), } resp, _, err := client.cli.PostMessage(channelID, opts...) if err != nil { log.Fatal(err) } log.Printf("Message sent: %v", resp) }
※前述のメンションやリンクは、Goならslack.MarkdownType
じゃないといけません。
アイコン
別記事にまとめました。
アプリをチャンネルから消したい
アプリはチャンネル詳細のメンバーに載っておらず、そこから消すことはできず地味に削除方法に困ったりしますが、
/remove アプリ名
で簡単に消せます。
まとめ
自分がSlackアプリを開発する際によく参照するものをまとめました。
都度追加すると思います。