着信Webhookを使用してメッセージを送信していますが、次のようなものを使用して、channelIDをオーバーライドして特定のチャネルに送信しています(ここで説明: https://api.slack.com/incoming-webhooks )
{
"channel": "#my_channel",
"text": "This message will appear in #other-channel"
}
ChannelIDを指定するとメッセージをスラックに受信できますが、他の誰かにchannelID(有効なチャネルID)を指定すると、channel_not_found例外が発生します。
何がうまくいかなかったのか教えてください。
「他の誰かのチャネルID」とは、他の誰かがメンバーになっている(ただしあなたはメンバーではない)プライベートチャネルのIDを意味すると仮定すると、これは通常のSlackの動作です。
(着信Webhookを作成したユーザーとして)自分がメンバーではないプライベートチャネルにメッセージを送信することはできません。実際、あなたがメンバーではないすべてのプライベートチャネルはあなたには見えず、その動作は着信WebhookとSlackAPIで同じです。
私が使用したこの機能の回避策は、特別な管理者ユーザー( "Slack Admin"など)で着信Webhookを作成し、関連するすべてのプライベートチャネルに招待されていることを確認することです。
これと同じ問題が発生し、ヘッダータイプを指定する必要がありました。ユーザーとしてチャネルにアクセスできるようにボットを設定した後、Content-Type
をJSONにベイクする必要がありました(リクエストのデフォルトヘッダーがJSONであるため、少しイライラします)。
const sendAPIresp = (obj) => {
var options = {
method: 'POST',
url: 'https://slack.com/api/chat.postMessage',
headers:
{
Authorization: 'Bearer NOMNOMNOM',
'Content-Type': 'application/json'
},
body:
{
channel: 'THECOOLKIDSCLUB',
text: 'Hello from the world',
},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
}