使用passport-slack和slackbots模块创建交互式按钮机器人

我需要创建一个创建一个新的交互式按钮的机器人 . 我使用passport-slack连接到API并使用slackbots模块发布消息 . 我遇到的问题是使用passport创建OAuth令牌时的范围权限 . slackbots模块使用rtm.start方法here,但此方法要求范围权限为'client'而不是'bot' . 使用'client'范围一切正常但帖子显示为经过身份验证的用户,而不是机器人 . 'bot'权限允许我作为机器人发布但是你可以认为这些模块可能不兼容我需要使用除slackbots之外的其他模块或者这里缺少's something I'm .

passport.use(new SlackStrategy({
        clientID: clientID,
        clientSecret: clientSecret,
        callbackURL: callbackURL,
        scope: 'client',
        passReqToCallback : true
    },
    function(req, token, refreshToken, profile, done) {
...

回答(1)

2 years ago

使用Passport提供的accessToken时,我遇到了范围权限问题 .

对我有用的是将params参数添加到回调并使用 params.bot.bot_access_token 代替 .

希望这可以帮助!

passport.use('slack', new slackStrategy({
    clientID: process.env.SLACK_CLIENT_ID,
    clientSecret: process.env.SLACK_CLIENT_SECRET,
    skipUserProfile: true,
    scope: ['bot']
}, function(accessToken, refreshToken, params, profile, done) {
    # params.bot.bot_access_token is used to authenticate rtm.start
    return done(null, {});
}));