尝试在Slack上启用laravel-botman的事件订阅时如何响应正确的质询值

时间:2018-10-18 11:05:49

标签: php laravel slack-api

这不是我先前的问题here的重复。

我正在使用botman为我的休闲应用程序创建一个机器人。

使用松散的api,我创建了一个我想在laravel应用上连接到botman的机器人。我正在使用ngrok隧道本地主机。我必须先验证我的网址才能将其用于机器人。好吧,我尝试验证网址,但我不断收到此错误。

  

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

检查ngrok终端显示,正在接收来自松弛的请求,状态为200。如果我使用邮递员重现该请求,则返回质询参数的值,如果松弛,我仍然会得到erorr。我使用此代码将松弛驱动程序加载到我的路由文件中。

<?php
use BotMan\BotMan\BotMan;
use BotMan\BotMan\BotManFactory;
use BotMan\Drivers\Slack\SlackDriver;
use BotMan\BotMan\Drivers\DriverManager;

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();
});

我努力尝试像在我的路线文件中一样,用网址中的挑战参数强制响应。

$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驱动程序运行完美。

1 个答案:

答案 0 :(得分:1)

我注意到,松弛的api希望挑战值采用json格式。

简单地做return $payload->get('challenge');。不能解决问题。我将其更改为return response->json( return $payload->get('challenge'));。这已经验证了我的网址。

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