API ∋ search.messages

ワークスペース内のあらゆる事について検索できる API です。この API はtokenを除くとqueryフィールドが必須です。

query

一番重要な引数で、ここに置いたテキストでワークスペース内を検索します。スペースなどを挟んで複数のワードを置いた場合or検索(どちらかが含まれてればマッチ)します。
また、幾つかの特殊なプレフィックスが用意されており、それらを組み合わせることで効率良く結果を絞り込むことができます。

in:<channel-name>in:<group-name>in:@<user-id>のようにin:の後ろにチャンネル名やユーザー名などを続けることで、検索対象をそれら指定したチャンネル内や DM 内に絞り込めます。

他にfrom:があります。これをfrom:@<user-name>from:<bot-name>のように使う事で、その人の発言だけに絞り込めます。

ボット名での絞り込みの注意点

Slack ではボット名は割と適当に決めてchat.postMessageから投稿できてしまいます。例えば、jun というアプリから john というボット名で投稿するといった具合です。
そのメッセージはfrom:Johnでちゃんと検索できます。しかし、その後のワークスペースの管理の方法によってはfrom:johnでの検索で引っかからなくなる恐れがあります。

それはjohnというアプリをインストールした場合です。その環境になると jun アプリのアクセストークンでfrom:johnと検索してもメッセージは引っかかりません。 その環境でどうしても検索したいのであれば、john アプリで Bot Access Token を作り、それを使ってsearch.messageをリクエストするしかなくなります。

count

結果1ページ辺りのメッセージ数です。

page

何ページ目の結果を返すかどうかです。

highlight

trueを指定するとマッチした箇所のテキストが\ue000\ue001で挟まれて返されます。