Я пытаюсь создать слабый диалог, запускаемый командой косой черты. Диалоговое окно всплывает правильно, и когда пользователь отправляет данные, слабина достигает конечных точек на моем сервере.
С этого момента возможны два исхода:
- Все хорошо, и я отправляю подтверждение пользователю
- Данные, предоставленные пользователем, не проходят проверку моего приложения, и я должен сообщить об этом пользователю.
Давайте сосредоточимся на # 2 на секунду:
Я получаю response_url
, который кажется действительным (https:\/\/hooks.slack.com\/app\/MY-APP-ID\/433197747012\/kQANkbvc3lIViVyLSJKR695z
)
Для тестирования я хотел бы смоделировать ошибку проверки с одним из моих полей, поэтому я делаю это в моей конечной точке:
$errors = [
'errors' => [
[
'name' => 'vendor_email',
'error' => 'sorry, I do not like this dude'
]
]
];
// define the curl request
$ch = curl_init();
// $decoded->response_url does contain the correct slack URL...
curl_setopt($ch, CURLOPT_URL, $decoded->response_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'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($errors));
// execute curl request
$response = curl_exec($ch);
error_log(" -- response_url response: " . json_encode($response). "\n", 3, './runtime.log');
// close
curl_close($ch);
Ответ, который я получаю от удара по response_url
, таков:
{\"ok\":false,\"error\":\"invalid_request_data\"}
Что я делаю не так?
****** РЕДАКТИРОВАТЬ ************
Даже когда вы не идете по маршруту CURL, а просто делаете это:
return json_encode($errors)
просто закроет диалоговое окно после отправки и не вызовет ошибки проверки.