SlackのスレッドのメッセージをSlack API取得するには、 conversations.replies
(https://slack.com/api/conversations.replies) メソッドを利用します。
このメソッドを利用することで、親メッセージに関連するスレッド内の子メッセージを取得することや、子メッセージに対応する親メッセージのメッセージID( thread_ts
)を取得することができます。
また、指定されたメッセージがスレッドの親であるのか、子であるのか、あるいはスレッドではない独立したメッセージあるのかを判断することができます。今回は、そのメッセージがスレッドであるか・スレッドではないかと、スレッドの親メッセージであるか・スレッドの子メッセージではないかをSlack APIで判別できるか確認してみました。
スレッドではない(単一メッセージ)の場合
当該メッセージのメッセージID( ts
)をクエリ引数にセットすることで、結果を取得することができます。
この場合、スレッドではないため thread_ts
は出力されません。
スレッドの親メッセージの場合
スレッドの親メッセージのメッセージID( ts
)をクエリ引数にセットすることで、結果を取得することができます。
親メッセージもスレッドの一部であるため、スレッド親メッセージにthread_ts
が出力されます。また、 thread_ts
と ts
の値は同一となりますので、これによりスレッドの親メッセージあることを判別することができます。
また、スレッドの子メッセージもあわせて取得されます。
スレッドの子メッセージの場合
スレッドの子メッセージのメッセージID( ts
)をクエリ引数にセットすることで、結果を取得することができます。
親メッセージのメッセージIDは、 thread_ts
として出力されます。また、親メッセージとは異なり thread_ts
と ts
は一致しませんので、これによりスレッドの子メッセージであることを判別することができます。