Кик-бот, использующий 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()

Другие вопросы по тегам