Кик-бот, использующий cURL и php - нет ответа
У меня проблемы с получением ответа от моего бота Kik. Конфигурация webhook кажется правильной, так как я могу успешно HTTP "Получить" webhook, и он получает сообщения (когда я отправляю боту сообщение в Kik, я получаю "S", "D", "R", отправлено, доставлено)., получил, обновления). Тем не менее, я никогда не получаю сообщение обратно. Я использую php и cURL и webhook не работает локально.
Я нашел в Интернете несколько фрагментов cURL и php, но ничего, что указывало бы на необходимость каких-либо специальных заголовков и как именно нужно отправлять учетные данные Kik Auth. Я пробовал несколько способов, в том числе то, что предлагается в официальной документации Kik, но безуспешно.
Код ниже с заменой идентификаторов бота и API. Ценю любую помощь.
<?php
// ID and token
$botID = 'mybot';
$authToken = 'longAPIvaluefromKik';
$newToken=$botID.':'.$authToken;
$update = file_get_contents("php://input");
$data = json_decode($update, true);
foreach ($data['messages'] as $message) {
$chatId = $message['chatId'];
$to = $message['from'];
// The data to send to the API
$postData = array(
'messages' => array('body' => 'Hello', 'to' => $to, 'type' => 'text', 'chatId' => $chatId )
);
$headers = array(
'Content-Type:application/json'
);
$user_data = json_encode($postData);
$request_url = 'https://api.kik.com/v1/message';
// cURL
$curlD = curl_init();
curl_setopt($curlD, CURLOPT_URL, $request_url);
curl_setopt($curlD, CURLOPT_POST, 1); // Do a regular HTTP POST
curl_setopt($curlD, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlD, CURLOPT_USERPWD, $newToken);
curl_setopt($curlD, CURLOPT_POSTFIELDS, $user_data); // Set POST data
curl_setopt($curlD, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($curlD);
curl_close($curlD);
}
?>
2 ответа
Хотя у Kik нет примеров PHP, примеры JSON должны помочь вам разобраться с вашим ботом. https://dev.kik.com/
Curl (командная строка) версия отправки сообщения будет выглядеть так:
curl \
-u "<username>:<api_key>" \
-H "Content-Type: application/json" \
-X "POST" \
-d '{"messages": [{"body": "bar", "to": "laura", "type": "text", "chatId": "b3be3bc15dbe59931666c06290abd944aaa769bb2ecaaf859bfb65678880afab"}]}'\
https://api.kik.com/v1/message
Извините за поздний ответ, я использую тот же код и в чем моя проблема была ssl сертификат. добавил следующее:curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
и это сработало как очарование!
//РЕДАКТИРОВАТЬ
о, и кое-что я забыл, хотя я не рекомендую это посылать это:
$user_data = '{
"messages" : [
{
"body" : "hey!",
"to" : "' . $to . '",
"type" : "text",
"chatId" : "' . $chatId . '"
}
]
}';
а не результат JSON_encode()