PHP code sample for Facebook Messenger Bots

Facebook has produced an excellent getting started guide for their Messenger API, only issue is that it’s written for Node.js. I wanted it for PHP to save the faff of setting up a Node.js sever, but there are no code templates. So I’ve put a sample together. This is a really simple bot that will echo a users responses, where you go from there is up to you.

Note: the code may not be elegant, but it’s functional.

So first follow the instructions in the Facebook guide to setup your page and app token. Once that’s done, put the following code onto a server (that is HTTPS) as your WEBHOOK and continue to work through the Facebook guide.

UPDATE: The code below has been added to a simple PHP class for the facebook messenger bot API you can download over on GitHub

//Code to verify the website
$verify_token = $_GET[‘hub_verify_token’];
if (isset($verify_token)) {
$challenge = $_GET[‘hub_challenge’];
if ($verify_token == “verification_token”) {
print $challenge;
} elseif ($verify_token != “verification_token”) {
print ‘Error, wrong validation token’;
//Code to process requests
$postData = file_get_contents(‘php://input’);
$postData = preg_replace(‘/”id”:(\d+)/’, ‘”id”:”$1"’, $postData); //Important - to prevent ID becoming a float
sendMessage(getSender($postData), “Echo: “.getMessage($postData));
function getMessage($input){
$postdata = json_decode($input);
return $postdata->entry[0]->messaging[0]->message->text;
function getSender($input){
$postdata = json_decode($input);
return $postdata->entry[0]->messaging[0]->sender->id;
function sendMessage($recipient, $textMessage) {
 $json = ‘{
“recipient”:{“id”:”’ . $recipient . ‘”},
“text”:”’ . $textMessage . ‘”
$options = array(
‘http’ => array(
‘method’ => ‘POST’,
‘content’ => $json,
‘header’ => “Content-Type: application/json\r\n” .
“Accept: application/json\r\n”

$url = ‘’ . $token;
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $json;
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.