2016-04-15 2 views
2

Я пытаюсь создать тестовый мессенджер бота в PHP. Мой веб-крючок настраивается отлично, и даже подписка на страницы выполняется правильно. Однако мой бот не отвечает на какой-либо текст в мессенджере. Я попытался изменить идентификаторы приложений, идентификаторы страниц, чтобы убедиться, что есть какие-либо проблемы с этим. Я также пробовал различные методы, в том числе основной ротор, как описано здесь: Facebook Chat bot (PHP webhook) sending multiple repliesMessenger Bot в PHP: No Response Назад

и пытался 2 различные библиотеки PHP: https://github.com/Fritak/messenger-platform https://github.com/pimax/fb-messenger-php

Я не получаю PHP ошибки, проблема по-прежнему успешны в конце Facebook. Мой SSL-сертификат в порядке, но я не могу получить ответ бота.

Любая помощь по этому вопросу будет принята с благодарностью.

+0

Этот ответ помогает мне в вашей ситуации ... http://stackoverflow.com/a/36616229/2990234 – Anfuca

+0

Может быть глупый вопрос, но счет Ваш разговор с ботом через ... ты добавлен к приложению в качестве администратора/тестера? –

ответ

1

Убедитесь, что CURL правильно установлен. Попробуйте этот простой GIST, https://gist.github.com/visitdigital/58c71acb123870d1ac2ec714d7536587

$challenge = $_REQUEST['hub_challenge']; 
$verify_token = $_REQUEST['hub_verify_token']; 

// Set this Verify Token Value on your Facebook App 
if ($verify_token === 'YOURVERIFYTOKEN') { 
    echo $challenge; 
} 

$input = json_decode(file_get_contents('php://input'), true); 

// Get the Senders Graph ID 
$sender = $input['entry'][0]['messaging'][0]['sender']['id']; 

// Get the returned message 
$message = $input['entry'][0]['messaging'][0]['message']['text']; 

//API Url and Access Token, generate this token value on your Facebook App Page 

$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=ACCESSTOKEN'; 
//Initiate cURL. 
$ch = curl_init($url); 
//The JSON data. 
$jsonData = '{ 
    "recipient":{ 
     "id":"' . $sender . '" 
    }, 
    "message":{ 
     "text":"The message you want to return" 
    } 
}'; 

//Tell cURL that we want to send a POST request. 
curl_setopt($ch, CURLOPT_POST, 1); 

//Attach our encoded JSON string to the POST fields. 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); 

//Set the content type to application/json 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

//Execute the request but first check if the message is not empty. 
if(!empty($input['entry'][0]['messaging'][0]['message'])){ 
    $result = curl_exec($ch); 
} 
+0

когда я использую свой код, я получил следующее сообщение об ошибке 'Примечание:. Undefined индекс: hub_challenge в C: \ XAMPP \ HTDOCS \ webhook.php на линии

Примечание : Неопределенный индекс: hub_verify_token в C: \ xampp \ htdocs \ webhook.php on line
' Пожалуйста, помогите мне, как я могу его решить. – Cloud

0

Вам необходимо отправить ответ самостоятельно, когда вы отправляете сообщения (см. documentation).

Я не как вы, что для Pimax API, извините, но my API вы можете сделать это следующим образом:

// Messenger is calling your URL, someone is sending a message... 
$messages = $bot->getMessagesReceived(); 

// Now you need an ID 
$userToSendMessage = $messages[0]->messaging[0]->sender->id; 

// Send answer 
$bot->sendMessage($userToSendMessage, 'Hi!'); 
+0

Привет, Фритак, Спасибо за ваш ответ. Я использую index.php как есть, только изменяя токены. У вашего скрипта уже есть код sendMessage, но по какой-то причине он не срабатывает. –

+0

У кого-то есть какие-либо данные по этому поводу. Я буквально все сделал. Измененные страницы, приложения, серверы. Все еще не происходит. –

+0

Подключились к странице? Без подписки вы ничего не получите. – fritak

0

Вы можете проверить следующие вещи.

  1. Вы являетесь администратором этой страницы, и вы отправляете сообщение только из учетной записи администратора.
  2. Получаете ли вы сообщения, отправленные вами на скрипт, регистрируете эти сообщения в каком-либо файле для проверки?
  3. В вашей учетной записи страницы fb дает вам предупреждение, так как ваша страница не получает сообщений. Если нет, то сообщение успешно отправлено вам, проблема заключается в вашем ответе.
  4. Убедитесь, что маркер, который вы создали при создании веб-камеры, находится правильно.
  5. Вы скопировали сгенерированный токен.

Также PLZ отправьте свой код.

0

У меня была такая же проблема, ответ был тот, что мой веб-сервер перенаправлял запрос (добавлял косую черту в конец URL-адреса).

0

1-проверьте, что cURL правильно установлен на вашем компьютере.
2-попробуйте отправить его вручную, используя этот код ниже в вашем терминале, не забудьте поставить токен доступа и идентификатор получателя. У меня была такая же проблема, как у вас. Хотя я установил cURL на моем компьютере (windows), он не отправил запрос. Когда я перешел на linux, он работал нормально.
Попробуйте.

curl -X POST -H "Content-Type: application/json" -d '{ 
    "recipient": { 
    "id": "USER_ID" 
    }, 
    "message": { 
    "text": "hello, world!" 
    } 
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"