DokuWikiBot: un framework per creare Bot Telegram
DokuWikiBot è un framework Open Source che permette di creare un Bot Telegram in pochissimo tempo, prelevando i dati dal CMS DokuWiki.
Cos’è DokuWiki
DokuWiki è un CMS Open Source, rilasciato sotto GPL2. Questo cms è stato realizzato per creare siti di documentazione come enciclopedie, manuali e guide, il nome deriva dalla filosofia Wiki che è stata d’ispirazione anche per Wikipedia.
Il Codice Sorgente
L’intero Framework è sviluppato in con il linguaggio di programmazione PHP OOP, ed è rilasciato sotto GPL3.
Come creare un Bot telegram con DokuWikiBot
Il Codice è suddiviso in 4 file e per funzionare deve essere inserito nello stesso hosting di un installazione di DokuWiki.
Dopo l’inserimento basta semplicemente modificare il file config.php e il bot è pronto per essere utilizzato.
Il Bot ricerca nelle pagine di DokuWiki le tabelle e realizza delle ricerche personalizzate su di esse. Vediamo il procedimento nel dettaglio:
1° passo
Creare il bot telegram da https://web.telegram.org/BotFather
Dopo aver inserito il nome del Bot e il Nick vi verrà inviato un messaggio con su scritto:
Use this token to access the HTTP API: <token-bot>
2° Passo
Prendere i 4 file e trasferiteli nel vostro Host.
Due cose importanti:
- l’host deve utilizzare il protocollo sicuro per lo scambio di dati: SSL;
- sullo stesso host deve risiedere l’istallazione di DokuWiki.
3° Passo
Connettersi all’indirizzo:
https://api.telegram.org/bot<token-bot>/setwebhook?url=<directory_file>/telegram.php
sostituendo <directory_file> con l’indirizzo dove risiedono i file di dokuwikibot e <token-bot> con il token ricavato all’inizio.
Da questo momento il bot appena creato si interfaccerà direttamente con i file appena caricati sul host.
4° Passo
Modificare config.php:
define(‘BOT_TOKEN’, ‘Qua inserisci il tuo token ricavato all’inizio‘);
define(‘API_URL’, ‘https://api.telegram.org/bot’.BOT_TOKEN.’/’);
define(‘dir_doku’, ‘qua la posizione del tuo wiki‘);
define(‘doku_data’, dir_doku.’data/pages/’);
define(‘type_error_message’, “messaggio di errore quando non viene riconosciuto un comando“);
define(‘welcome_message’, “il tuo messaggio di benvenuto“);
define(‘help_message’, “il messaggio di aiuto“);
Di seguito tutti i messaggi di errore:
define(‘unknown_request’,”richiesta sconosciuta”);
define(‘unknown_page’,”pagina inesistente”);
define(‘unknown_column’,”colonna inesistente”);
define(‘data_null’,”nessun valore da cercare”);
define(‘search_null’,”nessun valore trovato”);
Ora il bot è pubblicato e utilizzabile.
Funzioni presenti
Oltre a /start e /help son presenti altre funzioni:
page: l’elenco delle pagine presenti in DokuWiki;
<nome-pagina>: inserendo il nome di una pagina di dirà tutte le colonne con cui sarà possibile interagire;
<pagina-colonna:dato>: inserendo il nome di una pagina, di una colonna e il dato che deve essere ricercato, il bot ti restituisce tutte le righe dove quel valore è presente. Facciamo un esempio: abbiamo la pagina ricette, in cui è contenuta una tabella con le seguenti colonne: titolo, procedimento, tipo e ingredienti, digitando “ricette-tipo:antipasti” verrà inviato su telegram tutto l’elenco delle ricette che hanno “antipasti” come tipo.
Una nota
il bot cercherà sempre la classica struttura tabellare di DokuWiki, ovvero:
^titolo 1^titolo 2^titolo 3^
|riga 1 colonna 1|riga 1 colonna 2|riga 1 colonna 3|
|riga 2 colonna 1|riga 2 colonna 2|riga 2 colonna 3|
I link utili:
- Link del progetto su GitHub: Link
- Link del Cms DokuWiki: link
- Tutti i miei Bot Telegram: i miei bot telegram
In versione Plugin DokuWiki per Telegram (beta):
- Link del progetto su GitHub: Link