尝试为slack上的laravel-Botman启用事件订阅时,如何使用正确的质询值进行响应

2022-08-27 00:00:00 slack-api php laravel

这不是我上一个问题的重复here。

我正在使用botman为我的Slak应用程序创建机器人。

使用Slak API,我已经创建了一个机器人,我想在我的laravel应用程序上连接到Botman。我正在使用ngrok通过隧道连接本地主机。我必须让我的网址首先得到验证,以便使用它的机器人。我尝试验证URL,但一直收到此错误。

您的请求URL未使用正确的质询值响应。更新您的URL以接收新请求和值。

检查ngrok终端显示正在接收来自SLACK的请求,状态为200。如果我使用POSTMAN重现请求,则返回挑战参数的值,在SLACK上我仍然得到错误。我使用此代码在我的路径文件中加载松弛驱动程序。

<?php
use BotManBotManBotMan;
use BotManBotManBotManFactory;
use BotManDriversSlackSlackDriver;
use BotManBotManDriversDriverManager;

Route::match(['get', 'post'],'botman', function () {

    DriverManager::loadDriver(SlackDriver::class);

    // Create BotMan instance
    $config = [
            'slack' => [
                'token' => '***slack Token***' //slack token
                ]
            ];
    $botman = BotManFactory::create($config);

    // give the bot something to listen for.
    $botman->hears('hello', function (BotMan $bot) {
        $bot->reply('Hello yourself.');
    });

    // start listening
    $botman->listen();
});

我尝试使用url中的质询参数强制响应,就像在我的路由文件中一样。

$payload = $request->json();

if ($payload->get('type') === 'url_verification') {
    return $payload->get('challenge');
}

SlackBot::hears('keyword', function (Bot $bot) {
    $bot->respond('lets begin');
});

这仍然不起作用,我仍然收到URL didn’t respond with the correct challenge value...错误。

我错过了什么?或者,我应该如何使用松弛驱动程序来使其使用正确的参数进行响应?Web驱动程序工作正常。


解决方案

我注意到slack接口期待json格式的挑战值。

简单地做return $payload->get('challenge');。不会起作用的。我将其更改为return response->json( return $payload->get('challenge'));。这已验证了我的URL。

我不确定这是否是整个Botman松弛驱动程序的问题,我没有发现其他人也有同样的问题。

相关文章