Creare un Bot per Telegram in PHP su Heroku con Dropbox #2/2

Terminiamo la guida scrivendo l’applicazione in PHP che andrà a gestire il nostro bot su Telegram. Utilizzeremo un pacchetto già fatto che andremo poi a personalizzare.

telegram bot banner

Prima di proseguire con la lettura di quest’articolo, se non l’avete già fatto, vi consiglio di dare un occhio alla prima parte, giusto per essere sicuri di non tralasciare nulla.

Creare un Bot per Telegram in PHP su Heroku con Dropbox #1/2

Dopo mille peripezie perditempo sono finalmente arrivato a capire come creare un bot di Telegram utilizzando servizi gratuiti, e senza usare server casalinghi.

In quest’articolo eseguiremo il deploy di un’applicazione da Dropbox a Heroku, che ci servirà per gestire il nostro Bot su Telegram chiamato creanuovobot.

Leghiamo Heroku e Dropbox

Dopo aver eseguito l’accesso ad Heroku, accediamo alla dashboard (http://dashboard.heroku.com) andiamo nell’area Peronal apps e scegliamo la nostra app creanuovobot, successivamente entriamo nell’area Deploy scendiamo fino all’area Deployment method, dove andremo a scegliere Dropbox come metodo di deploy.

connessione heroku con dropbox

Clicchiamo su Connect to Dropbox per veder aprire una finestra popup che ci chiederà prima le credenziali del nostro account Dropbox, e poi ci chiederà il permesso per poter gestire l’account. Inseriamo le credenziali e accettiamo.

Vedremo comparire nel nostro account Dropbox la struttura delle cartelle relativa alle nostre applicazioni e,  precisamente nel percorso Dropbox > Applicazioni > Heroku, troveremo le cartelle di tutte le applicazioni che abbiamo su Heroku, con lo stesso nome delle applicazioni stesse.

heroku app su dropbox

Nella cartella creanuovobot andremo a mettere i file che comporranno la nostra applicazione.

Scarichiamo l’applicativo e personalizziamolo

Scarichiamo questo repository da GitHub (cliccando su Download ZIP), estraiamo il contenuto ed inseriamolo nella cartella della nostra applicaizone, su Dropbox, in modo da avere una situazione come questa

telegram bot creanuovobot installazione

Apriamo il file index.php ed apportiamo le modifiche e le personalizzazioni necessarie per far rispondere il nostro bot ai nostri comandi. Inseriamo quindi alla seguente riga il token di comando del nostro bot

$client = new Zelenin\Telegram\Bot\Api('213258505:AAHUc6EPCFq7kZZFhqYVIWM4jq2j9_5LNrE'); // Set your access token

dopodiché non dobbiamo far altro che modificare ogni blocco personalizzando i vari blocchi con i comandi che preferiamo

if($update->message->text == '/salutami') {
	$response = $client->sendChatAction(['chat_id' => $update->message->chat->id, 'action' => 'typing']);
	$response = $client->sendMessage(['chat_id' => $update->message->chat->id,
			'text' => "Ciao, come stai?"
	]);
}

Questo codice, per esempio, alla ricezione del comando /salutami vi risponderà con un “Ciao, come stai?”. Ovviamente potete inserire tutti i comandi che volete e farlo rispondere come più preferite.

Quando abbiamo inserito la gestione di tutti i nostri comandi dobbiamo salvare il file index.php e attendere che venga sincronizzato con Dropbox.

Eseguiamo il deploy dell’applicativo da Dropbox a Heroku

Ritorniamo sulla dashboard di Heroku, nell’area Personal Apps > Deploy, e cliccare sul comando Deploy in blu come mostrato in figura.

deploy su heroku da dropbox

Appena terminerà il procedimento di deploy vi dirà se ci sono stati errori oppure il deploy è andato a buon fine.

Se tutto è andato bene, abbiamo terminato con Heroku e Dropbox, e possiamo chiudere tutto tornando su Telegram, anche dallo smartphone.

Impostiamo i comandi principali del nostro bot su Telegram

Per terminare, dobbiamo impostare i comandi disponibili nel bot di Telegram. Non che sia necessario, ma impostandoli si da la possibilità agli utenti che lo utilizzano di sapere già quali sono tutti i comandi disponibili, ancor prima di utilizzarlo la prima volta.

Apriamo una conversazione con BotFather, utilizziamo il comando /setcommands e selezionando il bot per la quale volete settare i comandi, avrete la possibilità di settare tutti i comandi che avete inserito nell’applicazione, in questo modo

telegram bot creanuovobot setcommands

Abbiamo finito!

Lo sviluppo del nostro bot è terminato. Lo lascerò online, magari migliorandolo con qualche linea guida, e sarà possibile aggiungerlo a Telegram cliccando qui, così da poterlo provare

@creanuovobot

@creanuovobot

  • Michele

    D’accordo… sarò fiero di leggerla e di fare pubblicità a questo blog sulla mia pagina Fb. 😉 attendiamo con ansia!!!

  • Michele

    Ciao Francesco, ottima guida! Gradirei conoscere il modo per realizzare le inline keyboard. Sei l’unico sul web così chiaro e preciso, vedrai che avrai molti follower se posti anche questa! Grazie aspetto tue, contattami in privato se ti va.

    • Ciao Michele. Ho ricevuto tante richieste per quella guida, purtroppo però ho il computer personale in panne e con quello del lavoro non ci posso smanettare. Appena risolvo questo problema più grosso scrivo la guida che mi hai chiesto. Se ti iscrivi a questi commenti ti rispondo qui quando la pubblico, così ti arriva la notifica. Oppure continua a seguire il blog 🙂

      Grazie per il complimento, mi fa piacere che il mio lavoro sia gradito. Spero di entrare tra i vostri siti preferiti. Ciao

    • Per il momento ho inserito la custom keyboard, se può interessare.

      http://blog.selectallfromdual.com/2102

      Grazie

  • Andrea

    Ciao, complimenti per la guida, davvero utile.
    Vorrei chiederti:
    a cosa serve la riga “$url = ”; // URL RSS feed”?
    Serve per ricevere il log delle richieste che arrivano al bot?
    Come si usa?

    • Ciao Andrea. Serve per inserire l’url di un rss da cui deve attingere alcune risposte. Nel template dello script trovi anche preimpostato il comando che ti restituisce gli ultimi “n” articoli scritti per esempio su un blog. Quello è l’url feed di quel blog.

      Fammi sapere se sono stato chiaro. Grazie mille.

    • Andrea

      Chiarissimo, grazie.

      Se invece volessi ricevere il log delle richieste che arrivano al bot, cioè i messaggi che riceve, cosa dovrei fare? Potresti spiegarmelo?

    • Scusa per il ritardo della risposta.

      Il Log delle richieste viene memorizzato da Telegram fino a che non imposti un webhook. Appena lo hai impostato, non ottieni più nessun log da Telegram, quindi se tu lo volessi avere, dovresti scrivere tu una funzione, nell’index.php che gestisce le sue richieste, per poterlo memorizzare.

  • Manuel

    Ciao, ottima guida, ho una domanda, come faccio ad usare una tastiera personalizzata? Come quelle in questa pagina: https://irazasyed.github.io/telegram-bot-sdk/usage/keyboards/