Slack API 提醒。添加不适用于机器人令牌:not_allowed_token_type

问题描述 投票:0回答:2

我已经设置了一个 Slack Bot,它正在与 AWS Lambda 交互,运行良好。从 lambda 中,返回一条文本消息并在适当的通道或线程中相应地打印。到目前为止,一切都很好。现在我希望 lambda 添加提醒,因此我给了它提醒:写入和提醒:读取(可选)范围。

但是,lambda(请使用 link 重现错误)和 Slack API 测试器(用于测试)都返回:

not_allowed_token_type
,尽管我使用的是
xoxb-XXXX-XXXX-XXXX
令牌。

最后的提醒应该相当于:

/remind #bot-testing "@EC2Handler Stop EC2 Instance" in 30 seconds

EC2Handler 是我的 Slack 应用程序机器人。

知道为什么我会收到此错误吗?

aws-lambda slack-api
2个回答
0
投票

我也在我的代码和网络测试器中遇到了这个错误。我还没有在我的 oauth 中设置这些权限,但预计会出现权限错误而不是令牌类型。能够使用许多其他 slack api 方法


0
投票

答案:经过进一步的工作,我发现了两件事:

  1. xoxb
    不是正确的密钥类型,而是
    xoxp
    ,这是用户 oauth-token。
  2. reminders.add
    方法无法直接从 lambda 添加机器人提醒。请参阅此线程

作为解决方法,我让 lambda 设置一个一般提醒,而不是针对我自制的机器人。按照这种方法,slack-bot(slack 自带的,不是我自制的机器人)会将提醒打印到频道中。发布的消息会触发我的第一个 lambda 函数(第一个函数响应 200 HTTP 并将事件转发给第二个 lambda)。在第一个 lambda 函数中,我过滤所有发布的消息(例如用户 ID 或触发器类型),以便只有重要的消息才会在第二个 lambda 中实际处理,从而导致设置新的提醒。 这是我的 lambda 中创建提醒的 python 函数:

def set_slack_reminder(event, text, time):
    SLACK_ADD_REMINDER_URL = "https://slack.com/api/reminders.add"
    channel = event.get("channel")
    token = "xoxp-482390518102-512900236624-6417578916384-359738ad2ab19b62c8d77d6507755647"
    
    # Get list of reminders
    reminder_list = get_slack_reminders(token)
    print(f"Reminder list:\n {reminder_list}\n")
    if reminder_list is not None:
        # Delete old reminders in the channel with the EC2Handler-Bot
        delete_reminders(token, reminder_list, channel)
    
    
    reminder_data = {
        "token": token,
        "channel": channel,
        "text": text,
        "time": time,
    }

    # Make the request to add the reminder
    add_reminder_request = urllib.request.Request(SLACK_ADD_REMINDER_URL, data=urllib.parse.urlencode(reminder_data).encode("ascii"), method="POST")
    add_reminder_request.add_header("Content-Type", "application/x-www-form-urlencoded")

    print('Fire off the reminder request!')
    add_reminder_response = urllib.request.urlopen(add_reminder_request).read()
    print(add_reminder_response)
© www.soinside.com 2019 - 2024. All rights reserved.