Sempre in tema di SMS via Skebby condivido queste poche righe di codice scritte per permettere a QNAP di inviare SMS utilizzando Skebby. Infatti, sebbene QNAP supporti le notifiche SMSC, la sua interfaccia non è particolarmente malleabile e le API di Skebby sono... diciamo "strane" (vabbè, oggi mi sento buono). In particolare Skebby vuole il sender e i recipients (il sender da documentazione è opzionale, ma senza non funziona) in formato semi-internazionale, formato tutto nostrano in cui il + o lo 00 iniziale sono omessi. Dato che il QNAP non prevede questo fantasmagorico formato ho scritto un minuscolo proxy in Ruby usando Sinatra.

Il codice è molto acerbo, volendo si potrebbe gestire la possibilità di impostare più recipients, selezionare o meno SSL, impostare il sender, gestire gli errori, ecc, ma mi serviva alla svelta e così... eccolo qui di seguito:

require 'rubygems'  
require 'sinatra'  
require 'net/http'  
require 'uri'

get '/username/:username/password/:password/recipients/:recipients/text/:text' do  
    @url = 'http://gateway.skebby.it/api/send/smsskebby/advanced/http.php'
    @url_ssl = 'https://gateway.skebby.it/api/send/smsskebby/advanced/http.php'
    uri = URI(@url)
    res = Net::HTTP.post_form(uri,
        {
            'method' => 'send_sms',
            'username' => params['username'],
            'password' => params['password'],
            'recipients[]' => params['recipients'].sub(/0{2}|[+]/, ''),
            # Imposto il sender come il recipient
            'sender_number' => params['recipients'].sub(/0{2}|[+]/, ''),
            'text' => params['text'].gsub(/\+/, ' ')
        })

    puts res.body
    "OK"
end

blog comments powered by Disqus