我创建了一个带有传入webhook和斜杠命令的Slack应用程序。 OAUTH流程按预期工作,我能够成功部署应用程序,检索并存储应用程序令牌。
我已经通过应用程序的传入webhook创建并向Slack发送了一条消息(带有交互式按钮)。问题是按钮不运行,并在Slack通道内生成错误消息。
我已经阅读了尽可能多的Slack文档,我注意到向Slack发送消息的机器人需要在消息中包含app令牌。我详细阅读了webhook文档但无法找到类似的要求。 webhook指南只提到了所需的JSON格式,但没有任何内容是应用程序令牌。我错过了什么吗?该指南明确指出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);
会喜欢有关如何解决的任何建议! 干杯, 安德鲁。
答案 0 :(得分:4)
我遇到了同样的问题,这是因为使用的松弛令牌与我授权应用时生成的令牌不同。我希望松弛只能识别应用程序,如果它具有该应用程序独有的机器人令牌。不幸的是,获得这个新的机器人访问令牌是一个非常重要的过程。我将在下面概述:
选择您的应用和“机器人”。 "添加松弛按钮"中的复选框 https://api.slack.com/docs/slack-button的一部分。
将其生成的网址粘贴到' a'元素进入浏览器,然后自行授权。
在尝试重定向到您的应用程序时,收集它添加到网址的code
令牌。
使用code
令牌获取您应用的bot_access_token
。我已经有一个python应用程序使用slack进行基于誓言的登录,所以我只修改了它,但是使用python slackclient代码看起来像这样:
SlackClient("你的api令牌")。api_call( ' oauth.access&#39 ;, client_id ="您的应用客户端ID", client_secret ="您的应用客户端密码", code ="代码令牌")
我认为它的工作方式是这样的,因为第三方集成只是为每个团队存储bot_access_token并在以后使用它。在我的情况下,我只想填充机器人访问令牌为我的应用程序的环境变量,它永远不会在公共slack app目录中。我很想知道更简单的获取机器人访问令牌的方法,所以如果您找到了令牌,请告诉我。希望这对你有用,安德鲁。