# Creare un chatbot Messenger tramite PHP

Il mondo della tecnologia si evolve sempre più rapidamente e con esso anche i mezzi che ci permettono di fare marketing.

I chatbot Messenger sono la novità del momento e oggi vedremo come costruirne uno tramite codice.

Lo realizzeremo utilizzando il linguaggio di programmazione **PHP** e avremo bisogno di:

- Una **pagina Facebook** dove collegare il nostro bot.
- Una **piattaforma hosting** con protocollo SSL che supporti il linguaggio di programmazione PHP. (In questa guida utilizzerò **Heroku**).

Sei pronto? Partiamo!

_**Ehy!** Anche tu sei un appassionato sfegatato del Messenger Marketing? Bene, devi assolutamente leggere il libro [Chatbot Marketing di Luciano Zambito](/go/chatbot-marketing-di-luciano-zambito/), un grande professionista del settore.

## 1. Creare una pagina Facebook

Se si vuole usufruire di un chatbot Messenger la prima cosa da fare è [creare una pagina Facebook](https://matteofeduzi.it/creare-una-pagina-facebook/).

Se ne possiedi già una puoi passare al secondo step.

## 2. Creare un app Facebook

Adesso è il momento di creare la tua [app Facebook](https://developers.facebook.com/quickstarts/?platform=web). Inserisci il nome dell'app e seleziona il bottone "Crea una nuova Facebook App ID".

Se non hai un account developer ti verrà richiesto di crearne uno, lo puoi creare gratuitamente.

Una volta completati i passaggi richiesti ti troverai nella dashboard di "Facebook for developers".

## 3. Configurare Heroku e GitHub

Per prima cosa vai su [Heroku](https://signup.heroku.com/) e se non hai già un account effettua la registrazione gratuita.

Ti verrà chiesto fin da subito di creare la tua app, perciò segui i passaggi guidati.

Adesso seleziona la tua app, raggiungi la sezione **deploy** e **connetti GitHub**, quindi assicurati di possedere un [account GitHub](https://github.com/join?source=header-home).

Dopodiché vai su GitHub e crea un progetto con al suo interno un file index.php come nell'immagine qui sotto.

All'interno del file index.php aggiungi il seguente codice di test.

`<?php 
echo 'Questo è un messaggio di test';
?>`

Ora torna su Heroku nella pagina deploy e scorri fino infondo e seleziona il bottone "Enable Automatic Deploys".

Adesso vai nella pagina **Settings** e scorri fino alla sezione **Domains**. Qui troverai l'URL della tua app, selezionalo.

Se è andato tutto correttamente dovresti trovarti davanti il messaggio che abbiamo inserito nell'echo del file index.php.

## 4. Installare il webhook

Il webhook, in questo caso, è un file PHP che Facebook chiamerà con un payload ogni volta che un utente invia un messaggio al bot. 

Il nostro compito sarà quello di analizzare il messaggio ricevuto e inviarne un altro tramite il formato JSON.

Ora copia il codice presente qui sotto, vai su GitHub nel file index.php e incolla lì questo codice sostituendo il codice inserito precedentemente.

`<?php

// parametri
$token_accesso_pagina = 'TOKEN_ACCESSO';
$token_verifica = 'fb_bot';

// Convalida il token di verifica necessario per configurare il webhook
if (isset($_GET['hub_verify_token'])) {
    if ($_GET['hub_verify_token'] === '$token_verifica') {
        echo $_GET['hub_challenge'];
        return;
    } else {
        echo 'Token di verifica non valido.';
        return;
    }
}

// Ricevi e invia messaggi
$input = json_decode(file_get_contents('php://input'), true);
if (isset($input['entry'][0]['messaging'][0]['sender']['id'])) {

    // Invia l'ID della pagina Facebook
    $sender = $input['entry'][0]['messaging'][0]['sender']['id'];
    // Messaggio inviato dall'utente
    $message = $input['entry'][0]['messaging'][0]['message']['text'];

    $url = 'https://graph.facebook.com/v2.6/me/messages?access_token=$token_accesso_pagina';

    // Inizializza curl
    $ch = curl_init($url);
    /* Prepara risposta
    $jsonData = '{
    "recipient":{
        "id":"' . $sender . '"
        },
        "message":{
            "text":"Hai scritto:, ' . $message . '"
        }
    }';

    // Impostazioni curl per inviare i dati di un post JSON
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    if (!empty($message)) {
        // L'utente riceve il messaggio dal bot
        $result = curl_exec($ch);
    }
}

?>`

## 5. Configurare l'app di Facebook

Adesso torna nella dashboard di Facebook for developers, scorri fino ad arrivare ad **aggiungi un prodotto** e seleziona il bottone configura di Messenger.

Una volta fatto ciò Messenger verrà aggiunto nella barra laterale a sinistra sotto **prodotti**. Seleziona Messenger, poi impostazioni e dovresti raggiungere la schermata qui sotto.

Seleziona il bottone Aggiungi o rimuovi pagine_ presente nella sezione **Token d'accesso** e collega la pagina in cui vuoi attivare il bot.

Una volta collegata la pagina genera il token di accesso per quest'ultima.

Ora inserisci il token generato al posto di _TOKEN_ACCESSO_ nel file index.php.

Prima di procedere alla sezione webhooks e aggiungere un URL di callback assicurati di aver aggiunto e abilitato **pages_messaging** alla sezione **analisi dell'app per Messenger**. Questo abiliterà la ricezione e l'invio di messaggi.

Ti consiglio di aggiungere anche le altre richieste. Una volta aggiunte e inviate le richieste l'analisi richiederà all'incirca un'ora.

_

Adesso spostiamoci nella sezione Webhooks_, sempre all'interno di impostazioni di Messenger, e aggiungiamo un **URL di callback**.

Su **URL di callback** inserisci l'URL presente nella sezione _Settings_ > _Domains_ di Heroku.

Mentre su **Token di verifica** inserisci il valore presente sul parametro $hubVerifyToken del file index.php.

Il parametro $hubVerifyToken potrebbe anche essere fb_bot_app. L'importante è che il token di verifica sia uguale sia su Facebook che nel file index.php.

_

Una volta inseriti questi due valori **verifica e salva**. Verrà così collegata la tua pagina Facebook.

Prima di procedere e testare il nostro bot rimane solo una cosa da fare: aggiungere gli eventi webhooks che ci servono. Per farlo seleziona il bottone **aggiungi iscrizioni** e inserisci la spunta su **messages**.

Nel caso ti servano anche altri webhooks potrai aggiungerli in qualsiasi momento. Seleziona la voce scopri di più per sapere cosa permette di fare ogni evento.

**Ora sei pronto a testare il tuo chat bot.** Vai sulla pagina Facebook collegata, invia un messaggio e riceverai la seguente risposta: "Hai scritto: (messaggio inviato)".

Conclusioni

Per ora abbiamo visto come creare un chat bot Messenger di base tramite PHP.

Vuoi ampliare il tuo bot? Ti consiglio di esaminare la [libreria ufficiale di Facebook](https://developers.facebook.com/docs/messenger-platform/introduction) riguardo alla piattaforma Messenger.

Tieni in considerazione che nella libreria viene utilizzato il codice Node.js e non il PHP.

Hai bisogno di aiuto? Contattami gratuitamente tramite la chat in basso a destra.

Come svilupperai il tuo chatbot? Fammelo sapere nei commenti!_