【问题标题】:Trigger ID not found with Slack slash command?使用 Slack 斜杠命令找不到触发器 ID?
【发布时间】:2020-05-25 01:07:48
【问题描述】:

我的目标是能够使用斜杠命令打开对话框并将反馈处理到数据库中。我正在尝试打开对话框,但收到有关斜杠命令的错误,其中显示未找到“trigger_id”。

  • 我的应用设置了 API 和正确的 OAuth。
  • 我使用我的 php 页面 (domain.com/slash.php) 的 url 在我的应用程序中添加了一个斜杠命令
  • 斜杠命令使用以下代码设置。

当我从 slack 运行它时,我得到了

的输出
'{"ok":false,"error":"invalid_arguments","response_metadata":{"messages":["[ERROR] missing required field: trigger_id"]}}'

我尝试了一些调试,将 trigger_id 输出到屏幕,发现 trigger_id 确实为空。我错过了什么才能通过这个?

我承认我是 slack 领域的新手。我已遵循(我认为)来自 slack 网站的有关正确设置应用程序的文档。

我的 Slack 应用程序设置是否遗漏了某些内容,或者我的代码中是否存在导致此错误消息的内容?

提前感谢您的宝贵时间!

<?
$command    = $_POST['command'];
$text       = $_POST['text'];
$token      = $_POST['token'];
$cn         = $_POST['channel_id'];
$user_id    = $_POST['user_id'];
$triggerid  = $_POST['trigger_id'];

// define the dialog for the user (from Slack documentation example)
$dialog = [
    'callback_id' => 'validres-3100',
    'title' => 'Test',
    'submit_label' => 'Submit',
    'elements' => [
        [
            'type' => 'text',
            'label' => 'Test Field 1',
            'name' => 'field_1'
        ],
        [
            'type' => 'text',
            'label' => 'Test Field 2',
            'name' => 'field_2'
        ]
    ]
];

// define POST query parameters
$query = [
        'token' => '<my api auth code>',
        'dialog' => json_encode($dialog),
        'trigger_id' => $triggerid
];

// define the curl request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://slack.com/api/dialog.open');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/x-www-form-urlencoded'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// set the POST query parameters
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query));

// execute curl request
$response = curl_exec($ch);

// close
curl_close($ch);

var_export($response);
?>

【问题讨论】:

  • 我发现了我的问题。我的问题是由于我的 htaccess 重写删除了扩展。一旦我从应用设置中删除了扩展程序,它就可以工作了。

标签: php slack-dialog


【解决方案1】:

要在 slack 中打开对话框,您可以使用此 api "https://slack.com/api/views.open"。 使用 api,您需要发送仅 3 秒有效的触发器 ID。 您的网址将如下所示:https://slack.com/api/views.open?trigger_id=”+“xxxx.xxxxxxxxx.xxxxxxxxxxxx”+“&view=你的数据”。 使用此请求,您需要使用您的 post 请求发送令牌,例如:- (URL,"POST", {"token","xoxb-xxxxxx-xxxxx-xxxxxxx"});

还需要在您的 slack 应用中添加 view.open API 以便使用以下步骤: 使用“机器人用户 OAuth 访问令牌”,在“OAuth 和权限选项卡”中,格式为 xoxb-xxxxx-xxxxx-xxxx。然后添加范围“views:open”并重新安装您的应用程序。然后尝试打开视图对话框。

希望这会有所帮助。

【讨论】:

  • 谢谢。我得到了常规对话,但我很想使用视图。你有视图定义的sn-p吗?
  • 它对我有用。谢谢。不要忘记在你的令牌前添加 Bearer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
相关资源
最近更新 更多