我创建了一个带有传入 webhook 和斜杠命令的 Slack 应用程序。 OAUTH 过程按预期工作,我能够成功部署应用程序、检索和存储应用程序 token 。

我已经通过应用程序的传入 webhook 创建并发送了一条消息(带有交互式按钮)到 Slack。问题是按钮无法操作,并在 Slack channel 内生成错误消息。

在阅读了尽可能多的 Slack 文档后,我注意到向 Slack 发送消息的机器人需要在消息中包含应用程序 token 。但是,我详细阅读了 webhook 文档,但找不到类似的要求。 webhook 指南只提到了所需的 JSON 格式,但没有提到应用程序 token 。我错过了什么吗?该指南明确指出 webhook 消息可以包含交互式按钮,但该按钮不起作用。我正在创建响应如下:

    $actions = [
        [
            "name"  => "save",
            "text"  => "Save",
            "type"  => "button",
            "value" => "save"
        ]
    ];

    $attachments = [
        [
            "fallback"      => "fallback message",
            "title"         => "Attachment 1",
            "text"          => "foobar attachment",
            "color"         => "#0066ff",
            "callback_id"   => "btn_action",
            "actions"       => $actions
        ]
    ];

    $payload = [
        "channel"       => "#test",
        "response_type" => "ephemeral",
        "icon_emoji"    => ":rocket:",
        "username"      => "Test User",
        "attachments"   => $attachments
    ];

    $data = 'payload=' . json_encode($payload);

    $ch = curl_init($webhook);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

希望得到有关如何解决的任何建议!
干杯,
安德鲁。

最佳答案

我遇到了同样的问题,这是由于使用了与我授权我的应用程序时生成的 token 不同的 slack token 。我希望 slack 只能识别该应用程序,如果它具有该应用程序独有的机器人 token 。不幸的是,获得这个新的机器人访问 token 是一个非常重要的过程。我将在下面概述:

  • 选择您的应用程序和“添加 Slack 按钮”中的“机器人”复选框
    https://api.slack.com/docs/slack-button 的部分。
  • 将它在 'a' 元素中生成的 url 粘贴到浏览器中,然后授权自己。
  • 收集它在尝试重定向回您的应用程序时添加到 url 的 code token 。
  • 使用 code token 为您的应用获取 bot_access_token。我已经有一个使用 slack 进行基于誓言登录的 python 应用程序,所以我只是修改了它,但是使用 python slackclient 代码看起来像这样:

    SlackClient("你的 api token ").api_call(
    'oauth.access',
    client_id="您的应用客户端 ID",
    client_secret="您的应用程序客户端密码",
    代码=“代码 token ”)

  • 我认为它是这样工作的,因为 3rd-party 集成只是存储每个团队的 bot_access_token 并在以后使用它。就我而言,我只是想将 bot 访问 token 填充为我的应用程序的环境变量,该变量永远不会出现在公共(public) slack 应用程序目录中。我很想知道一种更简单的方法来获取机器人访问 token ,所以如果你找到了,请告诉我。希望这对你有用,安德鲁。

    关于button - 来自传入 webhook 的消息中的 Slack 交互式按钮失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39931219/

    10-16 19:27