Ho creato un piccolo script Perl che esegue uno script bash basato su quello fornito da johnnyrun sul sito www.vocesuip.com (link), con la differenza che il valore del credito viene messo su un file in /tmp/voipcheap_credito per poi essere letto dallo script perl e popolare una variabile da utilizzare nel dialplan col risultato di avere una voce digitalizzata, la quale vi dirà il credito rimanente del vostro account voipcheap.
Nel mio file extension_custom.conf ho aggiunto il seguente codice:
;Credito residuo voipcheap tramite tasto 68
exten => 68,1,AGI(voipcheap_credito.agi)
exten => 68,2,Flite(Your Voip Cheap Credit is ${voipcheap_credito} Euro.)
exten => 68,3,Flite(You have ${voipcheap_freedays} days remaining.)
exten => 68,7,Hangup
;Fine Modifica
Il file voipcheap_credito.agi è uno script Perl molto semplice:
#!/usr/bin/perl -w
use LWP::UserAgent;
use Asterisk::AGI;
$AGI = new Asterisk::AGI;
my $credito = "";
my $freedays = "";
system("/var/lib/asterisk/agi-bin/voipcheap_credito.agi.bash");
open(CREDITO, "/tmp/voipcheap_credito");
while ($record = ) {
$credito = $record;
}
close(CREDITO);
open(FREEDAYS, "/tmp/voipcheap_freedays");
while ($record = ) {
$freedays = $record;
}
close(FREEDAYS);
$AGI->set_variable('voipcheap_credito', $credito);
$AGI->set_variable('voipcheap_freedays', $freedays);
mentre il file voipcheap_credito.agi.bash è cosi strutturato:
#!/bin/sh
USER1="cripted_user";
PSW1="cripted_psw";
curl -k -D - -c /tmp/voipcheap -b /tmp/voipcheap 'https://myaccount.voipcheap.com/clx/index.php?part=plogin&username='$USER1'&password='$PSW1>/dev/null
ris=$( curl -k -b /tmp/voipcheap "https://myaccount.voipcheap.com/clx/index.php?part=menu&justloggedin=true" )
credito=$( echo $ris |grep balanceid|sed s?.*\\€\;\ \;??|sed s?\<.*?? )
freedays=$(echo $ris |grep Freedays|sed s?.*\\??|sed s?\<.*?? ) echo $ris > /tmp/voipcheap_ris
echo $credito > /tmp/voipcheap_credito
echo $freedays > /tmp/voipcheap_freedays
Ho dovuto fare due script in quanto non ho trovato come utilizzare direttamente il file bash su asterisk in quanto non sono in grado di ritornare il valore. Sicuramente è migliorabile, ma intanto funziona…