cf7 Telegram: ошибка 400 при отправке сообщения
Симптомы: При отправке сообщения из контактной формы, сообщение не отправляется в бота, а в логах появляется ошибка вида:
1 |
Request has failed with error 400: Bad Request |
Изучив чуть плагин, нашел непосредственную функцию отправки сообщения, и чуть её дополнил:
1 2 3 4 |
private function request( $url, $args ) { .... elseif ( $http_code == 400 ) : error_log($response['body']); |
Ошибка стала чуть вняетнее:
{«ok»:false,»error_code»:400,»description»:»Bad Request: can’t parse entities: Can’t find end of the entity starting at byte offset 289″}
Но ни сколько не понятнее… Стал рыть дальше. Отправка в wordpress осуществляется функцией:
1 |
wp_remote_post($url,$args) |
Проверив аргументы, выяснил, что попадает внутрь именно то что нужно. Видимо портит данные, что-то глубже внутри функционала wordpress. Проверил концепцию заменив вызов этой функции своим велосипедом:
1 2 3 4 5 6 7 8 9 10 |
$params=["chat_id"=>$args["body"]["chat_id"],"text"=>$args["body"]["text"],]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, ($params)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); error_log($result); curl_close($ch); |
И оно заработало.. Ну так и оставил..