Telegram mezularitza aplikazioa aspaldian egin zen ezaguna. Askok WhatsAppekin alderatzen badute ere, Telegram tresna ahaltsuagoa dugu. Telegramen, taldeak egiteko aukeraz gain, bot-ak eta difusio kanalak egin ditzakegu. Gainera, Euskaraz erabiltzeko aukera dugu aspalditik Gisa elkarteko, Gaueko Koop., Bitarlan eta Librezaleko lagunei esker.
Telegram zerbitzua zerbitzari pribatuetan dago, baina bezeroak libreak dira eta API irekia du. Honek bot-ak egiteko aukera ematen digu.
Gaurkoan @etziBot egingo dugu:
Hasteko bot-aren interfazea sortuko dugu. Oraingoz ez du erantzunik emango.
Bot-a sortzeko mugikorra hartu eta Telegram aplikazioa @Botfather bilatuko dugu:
Bot kudeatzailea da hau. Ematen dituen aukerak ikusteko idatzi /help:
/newbot idatziko dugu gure bot berria sortzeko. Jarraibideei kasu egin eta izena idatzi:
eta horrela frontend-a sortu dugu. Adi, momentu honetan Api tokena jasoko dugu:
Token hori ondoren erabiliko dugu zerbitzaria konfiguratzeko, <zure_api_tokena> deituko diogu.
Interfazea konfiguratzen bukatzeko beste hainbat komando ditugu @BotFather-en. Kasu honetan, profil irudia sartuko diogu.
/setuserpic idatzi eta profil irudia sartu bot-ari:
Bot-ari mezua bidaltzen zaion zerbitzariak bakoitzean /new-message api dei bezala jasotzen du. Beraz, zerbitzariak mezu horri erantzun egin beharko dio.
Zerbitzaria sortzen hasteko fitxategi bat sortuko dugu proiektuarentzat:
$ mkdir etzi-bot
Proiektua jarriko dugun fitxategira sartu:
$ cd etzi-bot
Npm instalatu eta proiektua hasieratu:
$ sudo apt-get install npm $ npm init
Exekutatzeko behar ditugun dependentziak instalatu:
$ npm install --save express axios body-parser
$ sudo nano index.js
index.js dokumentuan hau sartuko dugu:
var express = require('express'); var app = express(); var bodyParser = require('body-parser'); const axios = require('axios') app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded //This is the route the API will call app.post('/new-message', function(req, res) { const {message} = req.body if (!message) { // Mezurik ez badago, bukatu. return res.end() } // kaixo jasotzen badu Ph´nglui mglw´nafh Cthulhu R´lyeh wgah´nagl fhtagn erantzungo du if (message.text.toLowerCase().indexOf('kaixo') >=0) { axios.post('https://api.telegram.org/bot<zure_api_tokena>/sendMessage', { chat_id: message.chat.id, text: 'Ph\´nglui mglw\´nafh Cthulhu R\´lyeh wgah\´nagl fhtagn' }).then(response => { // Mezua ondo bidali da console.log('Mezua bidalia') res.end('ok') }).catch(err => { // ...and here if it was not console.log('Error :', err) res.end('Error :' + err) }) } // end if }); // Gure zerbitzaria martxan jarri app.listen(3000, function() { console.log('Telegram bot-a 3000 portuan entzuten ari da!'); });
Sortutako kodea nahi den zerbitzarian jar dezakegu martxan. Edonork zerbitzari propioa ez duenez now zerbitzua erabiliko dugu:
$ sudo npm install -g now
#packege.json sortu edo gainidatzi:
$ nano package.json
Gure package.json horrela geratuko da:
{ "name": "etzi-bot", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" &amp;amp;&amp;amp; exit 1", "start": "node index.js" }, "author": "tolosa <tolosa@talaios.net> (https://etzi.pm)", "license": "ISC", "dependencies": { "axios": "^0.16.1", "body-parser": "^1.17.1", "express": "^4.15.2" }, "devDependencies": {}, "description": "" }
Hasierako script-a gehitu ondoren, exekutatu honako komandoa proiektua dagoen karpetan bertan:
$ now #zerbitzua zerbitzarian martxan jarriko du
Zerbitzua ondo jarri badu, martxan horrelako zerbait erantzungo du:
> Deploying ~/etzi-bot > Using Node.js 6.2.1 (default) > Ready! https://etzi-bot-zzzzz.now.sh
Honenbestez, eman digun helbide horretan gure zerbitzua martxan edukiko dugu. Helbide hori hartu eta ondorengo aginduan sartuko dugu:
curl -F "url=https://etzi-bot-zzzzz.now.sh/new-message" https://api.telegram.org/bot<zure_api_tokena>/setWebhook
Erantzuna hau izango da:
{"ok":true,"result":true,"description":"Webhook was set"}
Dena ondo egin badugu gure Bot-a martxan edukiko dugu: @EtziBot
Iturria: http://www.sohamkamani.com/blog/2016/09/21/making-a-telegram-bot/