【问题标题】:Getting Username from Slack API从 Slack API 获取用户名
【发布时间】:2016-06-04 02:28:31
【问题描述】:

我正在构建一个 slackbot,它需要侦听环境关键字,但会检查以确保特定用户编写了该关键字。我现在正在尝试使用以下命令测试该命令:

controller.hears(['texas'], 'ambient', function(bot, message) {
  username = users.info.name;
  bot.reply(message, username);
});

最后,我想运行条件逻辑以确保用户名与我希望机器人响应的用户匹配。但这不起作用;我是否使用错误的 API?如何检索用户名,以及如何检查以确保它是正确的用户?

【问题讨论】:

    标签: node.js slack-api botkit


    【解决方案1】:

    你会这样做:

    controller.hears(['texas'], 'ambient', function(bot, message) {
      bot.api.users.info({user: message.user}, function(err, info){
        //check if it's the right user using info.user.name or info.user.id
        bot.reply(message, info.user.name)
      })
    })
    

    【讨论】:

    • 为什么投反对票?这回答了如何使用 Botkit 获取用户名
    • 我投了赞成票。看起来是正确的答案,尤其是考虑到原始海报使用的是 BotKit 语法。
    【解决方案2】:

    users.list 此方法返回团队中所有用户的列表。这包括已删除/停用的用户。该方法的网址为https://slack.com/api/users.list

    更多关于Bot Users的信息

    【讨论】:

    【解决方案3】:

    以下帮助我获取给定用户标识的用户名,您可以从主调用方法中获取带有 message.user 的用户标识

     getUserName(userID).then((output) => { username = output.user.name });
    
    
    function getUserName(userid){
        return new Promise((resolve, reject) => {
        //get token from https://api.slack.com/methods/users.info
            options.uri = "https://slack.com/api/users.info?token=********&userid=" +userid+ "&pretty=";
             rp(options).then(function (body) {
                resolve(body);
                console.log('Retrieved Info slack --- ' + JSON.stringify(body));
           })
           .catch(function (err) {
                 resolve(err);
                 console.log('aborted - slack ' + JSON.stringify(err));
           });
       });
    }
    

    参考链接:https://github.com/hassifow/Slack.API-User.info/blob/master/LambdaFunction.js

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 2017-07-28
      • 2020-07-25
      • 2019-04-07
      • 2016-07-08
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多