通过传入webhook发送消息时发生channel_not_found异常

时间:2017-01-08 09:10:27

标签: slack

使用传入的webhooks来发送消息,但是通过使用类似的东西覆盖channelID以发送到特定频道(如此处所述:https://api.slack.com/incoming-webhooks

   {
"channel": "#my_channel",
"text": "This message will appear in #other-channel"
  } 

当我提供我的channelID时能够接收到松弛的消息,但是当我给别人发送channelID(有效的频道ID)时,我得到了channel_not_found异常。

请告诉我可能出现的问题。

3 个答案:

答案 0 :(得分:4)

假设你的意思是"其他人通道ID"其他人所属的私人频道的ID(但你不是)这是正常的Slack行为。

您无法向私人频道发送消息(因为创建传入webhook的用户)不是其成员。实际上,您不是其中一员的所有私有渠道对您来说都是不可见的,并且对于传入的webhook和Slack API,这种行为是相同的。

我使用的这个功能的解决方法是使用特殊的管理员用户创建传入的webhook(例如" Slack Admin")并确保他被邀请进入所有相关的私人频道

答案 1 :(得分:2)

如果您正在使用新的Slack Bot令牌范围,请确保您也在使用Bot User OAuth Access Token,而不是基于用户的旧版OAuth Access TokenOAuth Access Token不会立即失败,但是将始终受到请求安装应用程序的用户的权限的限制。

这会导致机器人用户和其他工作区用户之间的IM不可见,如Erik所述。

答案 2 :(得分:0)

我遇到了同样的问题,必须指定标题类型。设置漫游器以用户身份访问通道后,我需要将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);
    });
}