首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Slack RTM api发布消息

使用Slack RTM api发布消息
EN

Stack Overflow用户
提问于 2017-03-10 13:29:18
回答 3查看 1K关注 0票数 3

我正在学习这里的教程,https://slackapi.github.io/node-slack-sdk/bots#posting-a-message,我很困惑为什么我不能让这部分教程代码工作。我复制并粘贴了这一部分的代码,如下所示

代码语言:javascript
复制
var RtmClient = require('@slack/client').RtmClient;
var RTM_CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS.RTM;

var bot_token = process.env.SLACK_BOT_TOKEN || ''; //I know the problem is not here.

var rtm = new RtmClient(bot_token);
rtm.start();

var channel = "#general"; //could also be a channel, group, DM, or user ID (C1234), or a username (@don)

// you need to wait for the client to fully connect before you can send messages
rtm.on(RTM_CLIENT_EVENTS.RTM_CONNECTION_OPENED, function () {
  rtm.sendMessage("Hello!", channel);
});

由于教程代码的第一部分工作正常,因此问题肯定来自最后3行代码。大概这是这次活动的一个问题。我的错误消息是

代码语言:javascript
复制
Unhandled rejection Error
    at RTMClient.handleMessageAck [as _handleMessageAck] (/Users/mg/projects/slack_projects/games/s
lack_connect_four/node_modules/@slack/client/lib/clients/rtm/client.js:496:40)
    at RTMClient._handleWsMessageViaEventHandler (/Users/mg/projects/slack_projects/games/slack_con
nect_four/node_modules/@slack/client/lib/clients/rtm/client.js:459:12)
    at RTMClient.handleWsMessage (/Users/mg/projects/slack_projects/games/slack_connect_four/node_m
odules/@slack/client/lib/clients/rtm/client.js:419:10)
    at WebSocket.wrapper (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/l
odash/lodash.js:4968:19)
    at emitTwo (events.js:106:13)
    at WebSocket.emit (events.js:191:7)
    at Receiver.ontext (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/
lib/WebSocket.js:841:10)
    at /Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/lib/Receiver.js:5
36:18
    at Receiver.applyExtensions (/Users/mg/projects/slack_projects/games/slack_connect_four/node_mo
dules/ws/lib/Receiver.js:371:5)
    at /Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/lib/Receiver.js:5
08:14
    at Receiver.flush (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/l
ib/Receiver.js:347:3) at Receiver.finish (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/
lib/Receiver.js:541:12)
    at Receiver.expectHandler (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modu
les/ws/lib/Receiver.js:499:31)
    at Receiver.add (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modules/ws/lib
/Receiver.js:103:24)
    at TLSSocket.realHandler (/Users/mg/projects/slack_projects/games/slack_connect_four/node_modul
es/ws/lib/WebSocket.js:825:20)
    at emitOne (events.js:96:13)

我真的很感谢任何人的帮助。

EN

回答 3

Stack Overflow用户

发布于 2017-08-08 18:26:38

可能你的机器人还没有加入#general频道。先把他请到频道上去。

票数 0
EN

Stack Overflow用户

发布于 2017-10-10 15:01:10

这篇文章可能已经过时了,但我想分享我在这个错误中的经验。我也在测试这段代码,并且我使用了一个私有通道。即使机器人已经是通道的成员,它也会抛出此错误。然后我试着使用一个公共频道,然后它通过了。我希望这能帮到你。

票数 0
EN

Stack Overflow用户

发布于 2018-09-13 00:04:19

您不能使用频道名称、用户名或用户ids。请改用通道/组/DM ids。

更改:

代码语言:javascript
复制
var channel = "#general";

至:

代码语言:javascript
复制
var channel = "C--------";

您可以从您的频道的URL中获取此频道ID:

代码语言:javascript
复制
https://yourworkspace.slack.com/messages/C-------/details/

并且你的机器人必须被添加到目标通道中,如下所示:

  • 在你的应用程序设置页面上,单击导航菜单中的OAuth和权限设置项。
  • 在作用域部分,添加聊天:写入权限范围,然后单击保存更改。
  • 现在你已经更改了你的应用程序的作用域,你需要重新安装它-你应该会在屏幕顶部看到一个黄色横幅,告诉你单击此处重新安装你的应用程序。单击它,然后按照权限授权页面进行操作。
  • 您将被重定向回OAuth & permissions页面,您可以在该页面的顶部看到您的工作区令牌-存储此令牌以供稍后使用。

SLACK API REFERENCE

此代码将按预期工作:

代码语言:javascript
复制
var RtmClient = require('@slack/client').RtmClient;
var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;

var rtm = new RtmClient('.....'); // your token
rtm.start();

let channel = 'C--------' ; //your channel

rtm.on(CLIENT_EVENTS.RTM.RTM_CONNECTION_OPENED, function () {
  rtm.sendMessage("Hello stack!", channel);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42710920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档