【问题标题】:Respond with a rich message as a Slack bot作为 Slack 机器人回复丰富的消息
【发布时间】: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 - 但行为是相同的,除了消息是用我的名字而不是机器人名称签名的)。

【问题讨论】:

    标签: node.js slack-api slack


    【解决方案1】:

    已解决:我使用 Bot User OAuth Access Token 而不是 OAuth Access Token 创建了一个 SlackClient.WebClient 实例(也将 as_user 设置为 true)和现在它按预期工作。我不知道 Bot User OAuth Access Token 也可以用作 Web API 客户端的令牌。

    工作代码:

    import * as SlackClient from '@slack/client';
    
    slackWebClient = new SlackClient.WebClient(bot_access_token);
    slackBot = new SlackClient.RtmClient(bot_access_token)
    slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => {
        slackWebClient.chat.postMessage(message.channel, 'Hello', { attachments: myAttachments, as_user: true });
    });
    slackBot.start();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多