Telegram Bot Ruby: setWebhook vs getUpdate

Differenze da getUpdates

Abbiamo spesso parlato riguardo alla creazione di bot, con un esempio concreto in ruby, utilizzando però getUpdates, e non setWebhook.

getUpdates è una funzione molto utile per chi si trova alle prime armi, ma può risultare fastidiosa da utilizzare, perché siamo noi che dobbiamo chiedere a Telegram di ricevere gli updates. Con setWebhook invece è possibile fare in modo che Telegram ci avvisi degli updates senza far nulla. Infatti, non appena il Bot riceve un messaggio, Telegram manderà l’avviso alla nostra applicazione.

Quindi la nostra applicazione dovrà restare in ascolto. Ma invece che ciclare all’infinito, aspetteremo semplicemente.

Vantaggi?

  1. Codice più leggero: se non si ricevono updates, l’app non fa nulla.
  2. Maggior Stabilità: se prima dentro al ciclo c’era un’eccezione non gestita, il Bot crashava interamente. In questo caso invece il Bot non risponderà alla richiesta che lo fa crashare, ma continuerà a funzionare per tutte le altre

Svantaggi?

  1. Bisogna possedere un Server con HTTPS (anche gratuito, come openshift o heroku)
  2. Leggermente più complesso il setup iniziale

Codice

Utilizzando telegramAPI e Sinatra, ecco l’esempio proposto su Github:


require 'telegramAPI'
require 'sinatra'
require 'json'

token = "******"
api = TelegramAPI.new token

post "/#{token}" do
  status 200
  # Get Telegram Data
  request.body.rewind
  data = JSON.parse(request.body.read)

  # Output data on stdout
  p data
  # Return an empty json, to say "ok" to Telegram
  "{}"
end

r = api.setWebhook("https://YOUR_URL/#{token}").to_json
puts "setWebhook Result:#{r}"

Il token come al solito lo dovrete chiedere al @BotFather, mentre al posto di “p data” potete mettere tutta la logica del vostro Bot, per esempio potete creare una funzione “process(data)” che venga invocata al posto di “p data”, e poi inserire la logica del bot dentro a tale funzione. Insomma, rimaneggiate il codice come più vi piace!

Per questa breve guida è tutto, alla prossima!

Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram, per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram