今日もSlack Botについてのpostです。
表題の件ですが、APIドキュメントを見てみると分かるように、reply_broadcastオプションがありません。
アプリ上では出来ることが確認できるのですが。
現状、Slack API経由では出来ないんですね。悲しい。
##Workaround
毎度おなじみになりつつある @seratch さんに助けを求めてみた所、現状の実装としては
- ファイルアップする
- ファイルのURLを取得する
- ファイルアップしたpostを消す
- Chat.messageAPIを使ってpostし直す
という流れになるようです。
参考コードはこちらです
fileupload_reply_broadcast.py
import os
from slack_sdk import WebClient
client = WebClient(token=os.environ.get("SLACK_BOT_TOKEN"))
# 親メッセージ
new_message = client.chat_postMessage(channel="#random", text="Hi")
channel_id, ts = new_message["channel"], new_message["message"]["ts"]
# ファイルを一旦アップロード
f = client.files_upload(content="this is a test", channels=channel_id, thread_ts=ts)
file_url = f["file"]["permalink"]
# ファイル共有のために投稿したメッセージを消し込み
file_upload_message_ts = f["file"]["shares"]["public"][channel_id][0]["ts"]
deletion = client.chat_delete(channel=channel_id, ts=file_upload_message_ts)
# ファイルを引用するメッセージを投稿
reply = client.chat_postMessage(
channel=channel_id,
thread_ts=ts,
reply_broadcast=True,
text=f"Here is your file: {file_url}",
)