【发布时间】:2017-05-01 19:56:31
【问题描述】:
我正在开发一个包含机器人用户的 Node.js 松弛应用程序。但我不知道如何用丰富的消息作为机器人回应用户。
示例:
使用此代码,我可以毫无问题地回复简单的消息:
import * as SlackClient from '@slack/client';
slackBot = new SlackClient.RtmClient(bot_access_token)
slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => {
slackBot.sendMessage('Hello', message.channel);
});
slackBot.start();
但 RTM API 不支持富消息:
RTM API 仅支持发布使用我们默认消息格式化模式格式化的简单消息。它不支持附件或其他邮件格式模式。要以用户身份发布更复杂的消息,客户端可以调用 chat.postMessage Web API 方法,并将 as_user 设置为 true。
所以我尝试使用 web 客户端来响应丰富的消息并移至此代码:
import * as SlackClient from '@slack/client';
slackWebClient = new SlackClient.WebClient(access_token);
slackBot = new SlackClient.RtmClient(bot_access_token)
slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => {
slackWebClient.chat.postMessage(message.channel, 'Hello', { attachments: myAttachments });
});
slackBot.start();
当我使用我的帐户测试机器人时,这种方法很有效。但是,如果其他团队用户将 DM 写入机器人,slackWebClient.chat.postMessage 将失败并出现错误 error: channel_not_found。 (我还尝试添加一个参数 as_user: true - 但行为是相同的,除了消息是用我的名字而不是机器人名称签名的)。
【问题讨论】: