## 背景 `chat.postMessage`のAPIを利用して <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://api.slack.com/img/logos/favicon.ico" /> <span class="link-card-v2-site-name">api.slack.com</span> </div> <div class="link-card-v2-title"> chat.postMessage method | Slack Developer Docs </div> <div class="link-card-v2-content"> Sends a message to a channel. </div> <a href="https://api.slack.com/methods/chat.postMessage#formatting"></a> </div> 以下の記述がある `reply_broadcast` が使ってみた。 > **reply_broadcast** boolean ·Optional > Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false. 期待通りの挙動をしたが、唯一投稿者だけが期待通りでなかった。 ![[Pasted image 20240505145911.png|frame]] *実際の投稿* これがどうにかなるのかを調査する。 ## この挙動は仕様か? 明確に記載されたドキュメントを見つけることはできなかった。 ただ、[[Slack]]のアプリを見てみたところ、メッセージ投稿には同じ`chat.postMessage` APIを利用しており、`reply_broadcast = true`を指定しているところまで一緒だった。未確認だが、一番怪しいと思ったのは指定されたトークンの種類。公式アプリは[[クライアントトークン (Slack)|クライアントトークン]]を使っており、[[ユーザートークン (Slack)|ユーザートークン]]との挙動の違いが出ている可能性が高い。 ## 同様の機能を実現するには? 正攻法では厳しそうなので発想を転換する。以下の2stepで投稿するようにする。 1. 普通に投稿する 2. **1のリンクをもつ投稿をchannelにする** レスポンスで必要な部分は以下。 ```json { "ok": true, "channel": "AAAAAAAAAAA", "message": { "ts": "1714890492.885529", "thread_ts": "1714886751.105239", } } ``` 以下のルールでarchiveを参照する。 ``` https://<ドメイン固有のslug>.slack.com/archives/{channel}/p{tsから.を消した値}?thread_ts={thread_ts}&cid={channel} ```