Chi sono |  Contatti |  Mappa del sito 
 
 
 
 
Home > Articoli > Asterisk > Controllare il credito su VoipStunt
 
 

Controllare il credito residuo su VoipStunt

Tenere sotto controllo il credito residuo di certi provider VoIP in maniera automatica o semi-automatica costituisce una comodità molto utile a mantenere in piena efficienza operativa il meccanismo di LCR implementato nel dialplan del nostro PBX Asterisk.
Dato che molto spesso i providers in questione mettono a disposizione, previa autenticazione, una interfaccia web per la consultazione del credito residuo (ed anche altri servizi), un metodo valido consiste nell'utilizzare uno script bash che utilizzando tools come wget o curl effettui l'autenticazione, estragga i dati desiderati dal documento risultante e li notifichi via EMail ad un opportuno destinatario.
L'esempio seguente si riferisce a VoipStunt, ma può essere comodamente modificato per riferirsi ad altri provider (SipDiscount, Squillo, Eutelia etc). Per SipDiscount, ad esempio, ed in maniera analoga per altri della famiglia FINAREA, basta addirittura cambiare ogni ricorrenza di "voipstunt" presente nello script con "sipdiscount" per ottenere quanto voluto.

#!/bin/bash
#
# nome: residual.sh - Notifica via EMail il credito residuo su VoipStunt
# author: Domenico Raffaele
#
MITTENTE='Asterisk <asterisk@mycompany.com>'
DESTINATARIO='pinco.pallino@mycompany.com' 
OGGETTO='Credito residuo VoipStunt'

/usr/bin/wget -q --no-check-certificate --keep-session-cookies 
              --save-cookies /tmp/vs_cookies.txt 
              --post-data='username=<username>&password=<password>' -O /tmp/vs_credit   
              https://myaccount.voipstunt.com/clx/index.php
/usr/bin/wget -q --no-check-certificate --load-cookies /tmp/vs_cookies.txt 
              --post-data='part=menu&justloggedin=true' -O /tmp/vs_credit 
              https://myaccount.voipstunt.com/clx/index.php

credito=$(grep -i euro /tmp/vs_credit |cut -d"<" -f3 |cut -d";" -f3)

echo >/tmp/credit.txt
echo Nota informativa automatica>>/tmp/credit.txt
echo >>/tmp/credit.txt
echo Credito residuo su VoipStunt Euro: $credito >>/tmp/credit.txt
echo >>/tmp/credit.txt
echo >>/tmp/credit.txt
echo Asterisk >>/tmp/credit.txt

/usr/local/bin/sendEmail 
       -f "$MITTENTE" -t $DESTINATARIO -u "$OGGETTO" -o "message-file=/tmp/credit.txt"
Osservando il semplicissimo script di shell, si nota facilmente che il nucleo è costituito dalle due istruzioni wget in successione.

La prima utilizza il metodo POST per inviare i dati specificati dall'opzione --post-data nel corpo della richiesta, ed in particolare ad inviare il nome utente e la password (che normalmente sono richiesti per utilizzare il nstro account.

L'opzione:

--no-check-certificate
viene usata per bypassare la verifica del certificato offerto dal server e procedere con il download del documento richiesto. Più precisamente essa forza un modo di operare "insicuro" che declassa gli errori di verifica del certificato in warnings, permettendo di proseguire. Ovviamente si tratta di un modo che è opportuno adottare solo quando si sia certi della autenticità del sito in questione.

L'opzione:

--save-cookies /tmp/vs_cookies.txt
salva i cookies HTTP inviati dal server in risposta alla nostra richiesta nel file indicato prima di uscire. Di per sè non salva i cookies che non possiedono un expiry time (i cosidetti 'session cookies'), per cui si rende necessario utilizzare anche l'opzione:
--keep-session-cookies
che, quando specificata, fa in modo che --save-cookies salvi anche i session cookies. Questa operazione alla fine si rende necessaria su siti, come quello in questione, che implicano una procedura di login.
Essa tipicamente opera con l'emissione di un cookie HTTP da parte del server dopo la verifica delle vostre credenziali. Il cookie viene poi rispedito indietro dal browser quando accede ad altre parti del sito, provando la vostra identità

Dal momento che il formato nativo del cookie file normalmente non considera i session cookies, wget li marca con un expiry timestamp pari a 0. L'opzione --load-cookies del wget successivo li riconosce di conseguenza come session cookies,

--load-cookies /tmp/vs_cookies.txt
carica quindi i cookies dal file /tmp/vs_cookies.txt prima di effettuare la richiesta HTTP. Il file è un file di testo nel formato nativo previsto per il file cookies.txt di Netscape.

Anche in questa seconda occasione viene applicato l'invio di dati POST.
In questo caso specifico viene usato SendEmail, che è un leggero ma molto efficiente mailer in Perl, ma sono possibili molti altri metodi equivalenti.

L'esecuzione di tutto questo può venire naturalmente schedulata con le scadenze ritenute più opportune, e sottoposta al demone cron, ed anche eventualmente associata ad una estensione di servizio del nostro dialplan, e quindi essere richiamata al bisogno, in un qualsiasi momento.

Ad esempio:

[services]
exten => 1,1,System(/usr/local/bin/residual.sh)
Una interessante variante potrebbe essere la recita vocale, dell'importo tramite l'applicazione SayNumber().