2024年4月11日木曜日

Python で Slack に Attachments を送信する方法

Python で Slack に Attachments を送信する方法

概要

Attachments はセカンダリメッセージ用のフォーマットで引用などに使われます
今回は Python sdk で Attachments を送信するサンプルを紹介します

環境

  • macOS 11.7.10
  • Python 3.11.6
  • slack-sdk 3.27.1

サンプルコード

トークンは Bot トークンを使います
Attachments は辞書情報として渡します
指定可能なオプションの説明はコード内のコメントに記載しています

from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError

client = WebClient(token="xoxb-xxxxxxxx")

try:
    response = client.chat_postMessage(
        channel="#private",
        text="Hello world!",
        # ここからAttachmentsの定義
        attachments=[
            {
                # Attachmentsが表示されない場合の代替テキストを指定
                "fallback": "Plain-text summary of the attachment.",
                # 左のバーのカラーを指定
                "color": "#2eb886",
                # Attachmentsの上部のタイトル情報
                "pretext": "Optional text that appears above the attachment block",
                # Attachmentsの投稿者の名前
                "author_name": "Bobby Tables",
                # Attachmentsの投稿者のリンク先URL
                "author_link": "http://flickr.com/bobby/",
                # Attachmentsの投稿者のアイコンのURL
                "author_icon": "http://flickr.com/icons/bobby.jpg",
                # Attachments内に表示するタイトル
                "title": "Slack API Documentation",
                # Attachments内に表示するタイトルのURL
                "title_link": "https://api.slack.com/",
                # Attachments内に表示する本文
                "text": "Optional text that appears within the attachment",
                # 優先度情報
                "fields": [
                    {
                        "title": "Priority",
                        "value": "High",
                        "short": False,
                    }
                ],
                # フッター情報に掲載する画像情報とサムネイル情報
                "image_url": "https://picsum.photos/200/300",
                # image_urlとthumb_urlは一緒に使用できない、thumb_urlは500kb以下でなければならない
                # "thumb_url": "https://picsum.photos/200",
                # フッター情報
                "footer": "Slack API",
                "footer_icon": "https://platform.slack-edge.com/img/default_application_icon.png",
                # フッターに表示するタイムスタンプ情報
                "ts": 1503435956.000247,
            }
        ],
    )
except SlackApiError as e:
    print(e)

動作確認

サンプルコードの Attachments の場合以下のような表示になります

最後に

Slack Python SDK で Attachments を送信してみました
その他にも blocks という形式でも送信できるようです
ボタンや画像、動画などを送ることができます

参考サイト

0 件のコメント:

コメントを投稿