尝试为slack上的laravel-Botman启用事件订阅时,如何使用正确的质询值进行响应
这不是我上一个问题的重复here。
我正在使用botman为我的Slak应用程序创建机器人。
使用Slak API,我已经创建了一个机器人,我想在我的laravel应用程序上连接到Botman。我正在使用ngrok通过隧道连接本地主机。我必须让我的网址首先得到验证,以便使用它的机器人。我尝试验证URL,但一直收到此错误。
检查ngrok终端显示正在接收来自SLACK的请求,状态为200。如果我使用POSTMAN重现请求,则返回挑战参数的值,在SLACK上我仍然得到错误。我使用此代码在我的路径文件中加载松弛驱动程序。您的请求URL未使用正确的质询值响应。更新您的URL以接收新请求和值。
<?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松弛驱动程序的问题,我没有发现其他人也有同样的问题。
相关文章