Ciao a tutti,
volevo condividere con voi un problema che mi ha stressato un bel po' prima di riuscire a trovare una soluzione:
Prima di tutto vi spiego la nostra situazione....
Il nostro centralino ha 1 numero di rete fissa collegato ad un HT503 e tre numeri voip (due messagenet e un numero vivavox) adesso volevamo che il centralino discriminasse le rotte in entrata in modo che ogni tunk fosse una linea a se e facesse squillare un determinato interno/gruppo-int.
Per risolvere questo arcano problema abbiamo dovuto mettere specifici DID nelle rotte in entrata:
- Trunk Messaget = NUMERO URI e non numero di telefono
- Trunk VivaVox = NUMERO DI TELEFONO (in caso di portabilità il numero originario e non quello portato)
- Trunk sip per ATA = NUMERO INTERNO ASSEGNATO al trunk
Spero di aver fatto cosa gradita a qualcuno.
Saluti
Aggiungo:
... da mettere sempre nel "DID Number/Numero Selezione Passante" delle rotte in entrata (il Numero ID chiamante va lasciato vuoto e Descrizione si puo' mettere a piacere):
- Trunk Eutelia/Clouditalia = Numero di telefono originario (in caso di portabilità il numero originario e non quello portato)
- Trunks Skype, Chan_dongle e Chan_mobile = lasciare vuoto il campo DID Number/Numero Selezione Passante
Poi ci sono altri settaggi particolari per le rotte in entrata, se riesco a trovare del tempo magari faccio una guida estesa sulle configurazioni aggiuntive delle linee in entrata e uscita.
Una funzione molto utile per non spendere soldi con il cellulare e' quella di Call Back che in parte va settata anche nelle rotte in entrata.
Io ho collegato un chiavino USB 3G al centralino con chan_dongle, poi con due SIM Postemobile con l'opzione "Con Te New" tra loro, al costo di due Euro al mese, trasferisco gratis le chiamate dal centralino all'altra SIM che ho nel mio cellulare, cosi' sono sempre reperibile e non mi costa nulla se non i due euro al mese dell'opzione.
Inoltre, con la funzione di Call Back io chiamo il centralino che riconosce il numero del mio cellulare e butta giu' la linea senza rispondere (cosi' non mi costa nulla), poi il centralino mi richiama dopo 10 secondi attraverso la SIM sulla quale c'e' l'opzione "Con Te" e mi da la linea (dopo avermi richiesto la password), cosi' posso anche telefonare dal mio cellulare tramite il centralino senza costi aggiuntivi
In aggiunta ho anche fatto in modo che quando arriva una chiamata, il centralino, prima di trasferirla sul canale GSM verso il mio cellulare, mi manda un SMS con il numero e il nome (se settato nella rubrica di FreePBX) di chi mi sta chiamando, cosi prima di rispondere vedo e decido.
L'opzione "Con Te New" include anche SMS illimitati verso il numero amico.
Il vantaggio di questa soluzione e' che non serve avere un contratto dati, ne serve avere uno smartphone, perche' sono sempre delle semplici telefonate (ed eventualmente SMS), per cui basta un comunissimo telefono GSM da 30 Euro!
Ultima modifica di pilovis; 03-05-2015 a 14:00
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.
La prima parte, e cioe' la configurazione per l'inoltro tramite email degli SMS che arrivano sul dongle GSM collegato al nostro centralino tramite chan_dongle, l'ho gia' postata tempo fa, ma ora vi dico come inoltrare per email anche gli USSD (http://www.fastweb.it/smartphone-e-g...a-cosa-servono).
Per chiarezza riporto nuovamente anche la parte di configurazione delle estensioni relative agli SMS.
editare il file "/etc/asterisk/extensions_custom.conf"
sudo nano /etc/asterisk/extensions_custom.conf
inserire alla fine del file le seguenti righe:
[from-pstn]
;
; quando arriva un SMS sul dongle, asterisk lo legge (numero mittente e testo) e lo inoltra tramite mail
; all'indirizzo destinatario@provider.com
; Sendmail o Postfix devono essere installati e configurati sul centralino
;
exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,2,System(echo 'From: ${CALLERID(num)} <mittente@provider.com>\nTo: <destinatario@provider.com>\nSubject:Ricevuto SMS\nRicevuto da: ${CALLERID(num)}\n${BASE64_DECODE(${SMS_BASE64})}' >> /var/log/asterisk/sms.txt)
exten => sms,3,System(sendmail -t -f mittente@provider.com < /var/log/asterisk/sms.txt)
exten => sms,4,System(rm -f /var/log/asterisk/sms.txt;)
exten => sms,5,Hangup()
;
; quando arriva un USSD sul dongle, asterisk lo legge (dongle-num e testo) e lo inoltra tramite mail
; all'indirizzo destinatario@provider.com
; Sendmail o Postfix devono essere installati e configurati sul centralino
;
exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,2,System(echo 'From: ${CALLERID(num)} <mittente@provider.com>\nTo: <destinatario@provider.com>\nSubject:Ricevuto USSD\nRicevuto il: ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,3,System(sendmail -t -f mittente@provider.com < /var/log/asterisk/ussd.txt)
exten => ussd,4,System(rm -f /var/log/asterisk/ussd.txt;)
exten => ussd,5,Hangup()
Salvare con ctrl+o e uscire con ctrl+x
nota bene: le righe in rosso sono spezzate in piu' righe da questo forum, ma sono un'unica riga!
riavviare FreePBX con il comando
sudo amportal restart
---------------------------------------------------------------------
Per inviare un USSD entrare da console come root sulla cli di Asterisk con il comando
sudo asterisk -vvvr
e poi dare il comando direttamente dalla cli:
dongle ussd dongle(num) codice_USSD
Esempio per disattivare il servizio "Ti ho cercato:" della 3 che da Luglio diventera' a pagamento :
CLI> dongle ussd dongle0 *112#
La risposta del server la riceverete per email nel seguente formato:
Oggetto: Ricevuto USSD
Data: 03/05/2015 18:05:24
Ricevuto il: 2015-05-03 18:05:24 - dongle0: Ti ho cercato: disattivato
Qui troverete un interessantissimo elenco dei codici USSD e delle loro funzioni:
http://emmepole.altervista.org/cell/codici.html
copiate e incollate questo collegamento nel browser, altrimenti non funziona.
---------------------------------------------------------------------
Invece per inviare un SMS da cli di asterisk questo e' il comando:
dongle sms dongle(num) +39numero testo del SMS
esempio:
CLI> dongle sms dongle0 +393273921955 questo e' un messaggio SMS di test
il numero +393273921955 ricevera' quindi un SMS con il testo "questo e' un messaggio SMS di test "
---------------------------------------------------------------------
Per ricevere un SMS con il numero e nome (se presente in rubrica di FreePBX) di chi sta chiamando, ecco la porzione di estensione da mettere nel dialplan:
exten => s,n,DongleSendSMS(dongle0,+39numero,chiamata ricevuta il: ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - da: ${CALLERID(name)} ${CALLERID(number)})
nota: sostituire +39numero con il numero a cui inviare il SMS (in formato internazionale +39xxxxxxx)
Ultima modifica di pilovis; 03-05-2015 a 18:45
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.
Grazie, ottimo suggerimento... provvedo immediatamente ad implementarlo nel mio centralino.
Ti sottopongo una domanda:
Dovendo dismettere la linea pstn posso configurare Hylafax per ricevere i fax attraverso un numero VOIP, ovviamente lo configurerei diretto in modo che chiamando il numero VOIP preposto risponda direttamente il "fischio" del fax. Ci sono controindicazioni???
Grazie
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.
per tutti i fondamentalisti di Linux che odiano le gui (probabilmente perche' non le sanno usare o perche' hanno problemi esistenziali ) o per chi vuole installare Asterisk su un device embedded dalle risorse limitate, come un router o un NAS, ecco un esempio di configurazioni minime per settare un canale SIP con Eutelia/Clouditalia, un interno (200) e le regole di ingresso e di uscita per le chiamate.
I files di configurazione da modificare sono 2: extensions.conf e sip.conf.
Note:
Le configurazioni seguenti sono per Asterisk 11, ma dovrebbero funzionare senza problemi su tutte le versioni dalla 1.8 in poi.
Non modificare i due files di configurazione sotto riportati se si ha una gui installata (FreePBX o Asterisk GUI della Digium), usare le configurazioni sotto riportate solo per Asterisk nudo e crudo
Sostituire 0143197xxxx con il vostro numero Eutelia e password con la password relativa.
Le righe precedute da ";" sono commenti e possono essere omesse.
Le parti tra parentesi quadre [] definiscono le sezioni e i context e sono di importanza fondamentale!
Se la macchina su cui c'e' il centralino ha un IP statico e pubblico (ad esempio un server presso un cloud o un provider esterno) nel sip.conf il parametro "nat=yes" va cambiato in "nat=no".
Per l'interno 200 usare una password complessa! (es. SXh495rf)
Non usare mai la chiocciolina nella password degli interni e nemmeno nei canali SIP!
------------------------------------------------------------------
- Esempio di /etc/asterisk/extensions.conf:
[globals]
[general]
static=yes
writeprotect=yes
autofallthrough=yes
[from-internal]
;
; interno 200 - suona per 30 secondi
exten => 200,1,Dial(SIP/200,30)
exten => 200,2,Hangup()
;
; regole linea out - Eutelia
; chiamate rete fissa
exten => _0Z.,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamate cellulari
exten => _3.,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamate numeri verdi
exten => _800.,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
exten => _803.,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
exten => _84.,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamate emergenza
exten => _112,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
exten => _113,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
exten => _115,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
exten => _118,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamata gratuita per conoscere il credito residuo eutelia - n. 4050 seguito da #
exten => _4050,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamata gratuita per il test dell'echo - n. 4010 seguito da #
exten => _4010,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
; chiamata gratuita per ascoltare la segreteria telefonica Eutelia - n. 4040 seguito da #
exten => _4040,1,Dial(SIP/${EXTEN}@0143197xxxx-out)
[default]
;
; regole chiamata in ingresso Eutelia sul numero 0143197xxxx
exten => 0143197xxxx,1,Answer()
exten => 0143197xxxx,2,Ringing
exten => 0143197xxxx,3,Dial(SIP/200,45,m)
exten => 0143197xxxx,4,Hangup(); il numero 200 suona per 45 secondi, poi se non risposto la chiamata viene chiusa
; se il numero 200 non e' registrato la chiamata viene chiusa subito
; eventualmente si puo' aggiungere una segreteria settando un interno apposito
------------------------------------------------------------------
- Esempio /etc/asterisk/sip.conf:
[general]
transport=udp
bindport=5060
bindaddr=0.0.0.0
nat=yes
allowguest=no
srvlookup=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
dateformat=%F %T
alwaysauthreject=yes
localnet=192.168.1.0/255.255.255.0
localnet=127.0.0.0/255.255.255.0
localnet=10.0.0.0/255.255.255.0
tcpbindaddr=0.0.0.0
tcpenable=yes
register => 0143197xxxx:password@voip.eutelia.it:5060/0143197xxxx
[200]
user=200
type=friend
secret=password_a_scelta
host=dynamic
qualify=yes
nat=no
insecure=invite,port
context=from-internal
[0143197xxxx-out]
username=0143197xxxx
type=friend
srvlookup=yes
secret=password
realm=voip.eutelia.it
nat=yes
qualify=yes
dtmfmode=auto
insecure=invite,port
host=voip.eutelia.it
fromuser=0143197xxxx
fromdomain=voip.eutelia.it
[0143197xxxx-in]
username=0143197xxxx
type=user
secret=password
insecure=invite,port
host=voip.eutelia.it
fromuser=0143197xxxx
context=default
Ultima modifica di pilovis; 09-05-2015 a 22:57
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.
Esempio:
http://www.lovisolo.com/asterisk/sof...TO/SMS-DONGLE/
Ci sono solo due files: "index.php" e "style.css", da mettere all'interno di una directory dedicata sotto "/var/www" (es. /var/www/messaggi) e che va poi possibilmente protetta con .htaccess.
file index.php
<?php
/************************************************** *******************
* Chan_Dongle SMS Script v.0.01
* for The Raspberry Asterisk
*
* Author: Troy Nahrwold
* Email: Troy(at)eternalworks(dot)com
* Company: Eternal Works
* Website: www.eternalworks.com
*
* Disclaimer:
* This product is solely a private production of the above named
* author, and is neither endorsed nor supported by Eternal Works.
* Although this product has been thuroughly tested, it is
* distributed AS IS, and the author assumes no liability for any
* damages this script may cause to your system. The author
* has provided full source code and encourages you to review the
* source code to determine any effects it may have on your system.
*
* (c) Copyright 2011, Troy A Nahrwold, Eternal Works, LLC.
* All Rights Reserved.
* Versione in Italiano di pilovis
************************************************** *******************/
$dongle = "dongle sms dongle0 ";
$ini = "'";
if(isset($_REQUEST['phonenumbers']) && !empty($_REQUEST['phonenumbers']) && !empty($_REQUEST['message']))
{
$message = substr($_REQUEST['message'],0,160);
$phonenumberarray1 = explode(' ',$_REQUEST['phonenumbers']);
$phonenumberarray2 = array();
$phonenumberarray3 = array();
foreach ($phonenumberarray1 as $phonenumber)
{
$phonenumberarray2 = array_merge($phonenumberarray2,explode(',',$phonen umber));
}
foreach ($phonenumberarray2 as $phonenumber)
{
$phonenumberarray3 = array_merge($phonenumberarray3,explode("\n",$phone number));
}
$output = "Testo: $message<br><br>\n";
foreach ($phonenumberarray3 as $phonenumber)
{
$runcommand = '/usr/sbin/asterisk -rx' . $ini . $dongle . $phonenumber . " " . $message . $ini;
$output .= "Invio messaggio a: $phonenumber<br>\n";
exec($runcommand);
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>SMS Messaging for Asterisk</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<script type="text/javascript">
/**
* Подсчет количества символов и стоимость написание текста в JavaScript
**/
function countChar() {
//Записываем ссылки на элементы в переменные
var count_char_textarea = document.getElementById("message");
// count_char_textarea.value = count_char_textarea.value.length;
var char_length = document.getElementById("char_length");
//Считаем
if ( count_char_textarea.value.length > 160 ) {
count_char_textarea.value = count_char_textarea.value.substr(0, 160);
}
char_length.innerHTML = count_char_textarea.value.length;
}
</script>
<hr>
<body bgcolor="#84b0fd" text="#030303" link="#9abcde">
<a href="./index.php"><h2 align="center"></h2></a>
<table border="0" cellspacing="0" cellpadding="1" width="600" bgcolor="#ffffff" align="center">
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="3" width="100%" bgcolor="#ffffff" align="center">
<tr bgcolor="#abcdef">
<td><b><?php echo $output; ?></b></td>
</tr>
<tr><form action="index.php" method="post">
<p><b>Numero di cellulare:</b> <br><font size="-2">(Formato: +39XXXXXXXX)</font></p>
<textarea id="phonenumbers" name="phonenumbers"></textarea>
<p><b>Testo del messaggio:</b> <br> <font size="-2">(Massimo 160 caratteri, se superiore il messaggio verra' troncato) </font></p>
<textarea id="message" name="message" size="160" rows="6" cols="30" onchange="countChar()" onkeyup="countChar()"></textarea><br /><br/>
<font size="2">conteggio caratteri del messaggio: <span id="char_length"> 0 </span></font>
<p>
<button type="submit">Invia Messaggio</button><br /><br />
</form></tr>
</table>
</dd>
<p></td>
</tr>
<tr>
<td bgcolor="#ffffff"><a href="javascript:history.back()">Invia lo stesso messaggio ad altro numero</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p>
</td>
</tr>
</table>
<hr>
</body>
</html>
file style.css
<style type="text/css">
<!--
body,td,form,textarea,input,p {
font-family: Arial, Helvetica;
font-size: 12pt;
color: #030303;
}
a {
text-decoration: none;
color: #456789;
font-weight: bold;
}
h1 {
color: #ffffff;
font-size: 16pt;
font-weight: bold;
}
h2 {
color: #ffffff;
font-size: 14pt;
font-weight: bold;
}
-->
</style>
Ultima modifica di pilovis; 15-05-2015 a 17:27
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.
Come al solito non c'è ringraziamento che basti per quello che pubblichi!
Avendo costruito il nostro centralino asterisk su una macchina virtuale (visto che già avevamo il nas sempre acceso) ho un paio di problemi:
1) qualcuno sa come far riconoscere una periferica esterna usb a phpVirtualBox??? (uso la versione per xpenology, che per chi non lo sapesse è una versione adattata del SO dei nas synology)
2) ma è possibile che tutte le compagnie di telefonia mobile si siano messe d'accordo e abbiano fatto cartello in modo che la tariffa minima sia di € 6,00/mese per avere il ben che meno di niente???? non esiste più il noi 2 o tariffa simile!!! Cavoli
Cmq per aggirare il problema del dongle usb ho utilizzato un raspberry, in cui ho installato una versione di asterisk adatta per il piccolo pc (rif: http://www.raspberry-asterisk.org/ ) e grazie alla guida di pilovis sono riuscito a collegare i due centralini insieme.
Unico neo è che il raspberry monta la versione di FreePBX 12.0.qualcosa e Asterisk 11.
Adesso, alla luce della tua esperienza e visto che hai sempre consigliato di utilizzare Ubuntu server 10.04 e determinate versioni di Asterisk e FreePBX , è consigliabile trovare una immediata soluzione per poter utilizzare il dongle GSM direttamente nella macchina virturale oppure può andare bene anche la soluzione che sto utilizzando io al momento??? (parlando di risparmio energetico sicuramente non sono in una situazione ottimale).
Grazie
1) scordatelo, la periferica la vede ma poi non va bene
Come hai fatto tu va benissimo, per l'assorbimento extra di corrente del Rasperry calcola 10 Euro all'anno se lo tieni sempre acceso.
2) Postemobile ha l'equivalente del Noi2 con SMS e voce illimitati verso il numero amico a 2 Euro al mese.
Propongo sempre la versione di Ubuntu server 10.04 32 bit e delle versioni specifiche di FreePBX e Asterisk, semplicemente perche' il tutto funziona come un orologio svizzero, basta seguire alla lettera le mie guide, e' solo questione di copia e incolla
Ultima modifica di pilovis; 15-05-2015 a 17:38
Progettista elettronico, appassionato di informatica dal 1982, sistemista Linux dal 2002, sono consulente tecnico del Giudice per le indagini preliminari, valuto richieste di consulenza, in ambito Voip/Telefonia anche con grado di sicurezza militare.