向机器人传达用户的消息不知道

时间:2016-06-08 10:57:31

标签: node.js slack-api rtm

我正在使用Slack RTM node client并且对DM有一些问题。假设用户加入之前从未使用过DM机器人的通道,用户在机器人通常将响应的通道中键入命令,并且默认情况下机器人以私人消息响应给用户。但是,机器人无法执行此操作,因为dataStore不包含此用户的任何DM数据。下面的代码示例......

rtm.on(RTM_EVENTS.MESSAGE, function (message) {
  user = rtm.getUserById(message.user);
  console.log(user); // It gets the user object fine
  dm = rtm.getDMByName(user.name);
  console.log(dm); // This is always undefined unless the user has DM'ed the bot previously
});

有解决方法吗?我似乎无法在文档或代码中找到任何可能存在的内容。

1 个答案:

答案 0 :(得分:1)

您可以使用网络API的im.open方法。这里大概是你用@ slack / client做的事情(未经测试,提前道歉!):

var webClient = new WebClient(token);
...
rtm.on(RTM_EVENTS.MESSAGE, function (message) {
  var dm = rtm.getDMById(message.user);
  if (dm) {
    console.log(`Already open IM: ${dm}`);
    // send a message or whatever you want to do here
  } else {
    webClient.im.open(message.user, function (err, result) {
      var dm = result.channel.id;
      console.log(`Newly opened IM: ${dm}`);
      // send a message or whatever you want to do here
    });
  }
});