我创建了一个带有传入 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 是一个非常重要的过程。我将在下面概述:
https://api.slack.com/docs/slack-button 的部分。
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/