Бот отвечает отлично, но перестает работать после отображения шаблонов generic / list. Для других сообщений, таких как быстрые ответы, кнопки и текстовые сообщения, он работает нормально. Мое приложение было в режиме разработки, и я изменил его на общедоступный, но не работал. Я приложил свой код и скриншот с этим.
Что не так в моем коде?
Версия API: v2.10
Страница на фэйсбуке: https://www.facebook.com/yesira.net
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class BotController extends Controller
{
public function bot(Request $request)
{
$data = $request->all();
//get the user’s id
$id = $data["entry"][0]["messaging"][0]["sender"]["id"];
$senderMessage = $data["entry"][0]["messaging"][0]["message"];
$messageText = $data["entry"][0]["messaging"][0]["message"]["text"];
if(!empty($senderMessage) && $messageText == "hi"){
$this->sendTextMessage($id, "Hi buddy");
}
else if($messageText == "blog") {
$answer = ["attachment"=>[
"type"=>"template",
"payload"=>[
"template_type"=>"generic",
"elements"=>[
[
"title"=>"Migrate your symfony application",
"item_url"=>"https://www.cloudways.com/blog/migrate-symfony-from-cpanel-to-cloud-hosting/",
"image_url"=>"https://www.cloudways.com/blog/wp-content/uploads/Migrating-Your-Symfony-Website-To-Cloudways-Banner.jpg",
"subtitle"=>"Migrate your symfony application from Cpanel to Cloud.",
"buttons"=>[
[
"type"=>"web_url",
"url"=>"www.cloudways.com",
"title"=>"View Website"],
[
"type"=>"postback",
"title"=>"Start Chatting",
"payload"=>"Even want some more? say me!"]
]
]
]
]
]];
$response = [
'recipient' => [ 'id' => $id ],
'message' => $answer
];
$this->reply($response);
}
else{
$this->sendTextMessage($id, "Hello world!");
}
}
private function reply($jsonData)
{
$ch = curl_init('https://graph.facebook.com/v2.6/me/messages?access_token=' . env("PAGE_ACCESS_TOKEN"));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($jsonData));curl_exec($ch);
curl_close($ch);
}
private function sendTextMessage($recepientId, $messageText)
{
$messageData = [
"recipient" => [
"id" => $recepientId,
],
"message" => [
"text" => $messageText,
]
];
$ch = curl_init('https://graph.facebook.com/v2.6/me/messages?access_token=' . env("PAGE_ACCESS_TOKEN"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($messageData));
curl_exec($ch);
curl_close($ch);
}
}
Возможно, вы не получаете новые события, потому что Платформа продолжает повторять попытки. Вы должны ответить на событие webhook с 200OK.
Других решений пока нет …