web-dev-qa-db-ja.com

着信Webhookを介してメッセージを送信中にchannel_not_found例外が発生しました

着信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例外が発生します。

何がうまくいかなかったのか教えてください。

8

「他の誰かのチャネルID」とは、他の誰かがメンバーになっている(ただしあなたはメンバーではない)プライベートチャネルのIDを意味すると仮定すると、これは通常のSlackの動作です。

(着信Webhookを作成したユーザーとして)自分がメンバーではないプライベートチャネルにメッセージを送信することはできません。実際、あなたがメンバーではないすべてのプライベートチャネルはあなたには見えず、その動作は着信WebhookとSlackAPIで同じです。

私が使用したこの機能の回避策は、特別な管理者ユーザー( "Slack Admin"など)で着信Webhookを作成し、関連するすべてのプライベートチャネルに招待されていることを確認することです。

4
Erik Kalkoken

これと同じ問題が発生し、ヘッダータイプを指定する必要がありました。ユーザーとしてチャネルにアクセスできるようにボットを設定した後、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);
    });
}
1
Justin Rice