Slack API chat.postMessage で channel_not_found となる場合の対策

SlackAPI の chat.postMessage を使って、CurlコマンドなどからユーザーにDMを送ろうとした場合に、以下のようなエラーが発生する場合があります。

{“ok”:false,”error”:”channel_not_found”}

今回は、この場合の原因と対策です。

 

前提知識

チャンネルに投稿したい場合は  “channel”:”#チャンネル名”を指定するが、この”channel”にユーザーを指定するとDMが送信できる。パーミッションなどもDMだからといって特別なものを指定する必要はなく、BOTのchat:writ の権限さえアレば良い。

原因

Channelにユーザーを指定する際に、ユーザー名や表示名を指定していた。正しくはユーザーIDを指定しなければいけなかった。

対策

ChannelにはユーザーIDを指定するように変更する。メンバーIDはプロフィール画像から「プロフィール」→「その他」→メンバーIDをコピー で確認できます。

CURLコマンドはこんなかんじ。

curl https://slack.com/api/chat.postMessage -X POST -H ‘Authorization: Bearer xoxb-あなたのアプリのトークン’ -H ‘Content-type: application/json;charset=UTF-8’ –data ‘{“channel”:”@XXXXXXXXX”,”text”:”Hello”}’

参考リンク

## lambdaからslackにメッセージ送信してみる – tweet blog
https://encr.jp/blog/posts/20200311_morning/

## 【最新版slackアプリ開発】久しぶりにslackアプリを作った時にslackbotライブラリでは使えなかったのでBoltに移行した – Sassyブログ
https://www.sassy-blog.com/entry/20211105/1636086081#Slack%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99

## Slackアプリ制作超入門:最初のBotメッセージを送信するまで 
https://a-records.info/slack-app-send-message-curl/

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です