Facebook chatbot — Messenger Bot на PHP: нет ответа Назад

Я пытаюсь построить тестового мессенджера бота на PHP. Мой веб-хук отлично настроен, и даже подписка на страницы выполнена правильно. Тем не менее, мой бот не отвечает ни на один текст в мессенджере. Я пытался изменить идентификаторы приложений, идентификаторы страниц, просто чтобы убедиться, что есть какие-либо проблемы с этим. Я также попробовал различные методы, включая базовый завиток, как описано здесь:
Facebook Chat Bot (PHP webhook) отправляет несколько ответов

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

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

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

2

Решение

Убедитесь, что 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);
}
1

Другие решения

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

Я не знаю, как вы это делаете для API pimax, извините, но для мой 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

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

0

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

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

Также, пожалуйста, отправьте ваш код.

0

1-убедитесь, что cURL правильно установлен на вашем компьютере
2 — попробуйте отправить его вручную, используя указанный ниже код в своем терминале, не забудьте указать свой токен доступа и идентификатор получателя.
У меня та же проблема, что и у вас. Хотя на моем компьютере (Windows) был установлен cURL, он не отправлял запрос. Когда я перешел на 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"
0
По вопросам рекламы [email protected]