<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ultimobyte &#187; Asterisk</title>
	<atom:link href="http://www.ultimobyte.org/tag/asterisk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ultimobyte.org</link>
	<description></description>
	<lastBuildDate>Fri, 20 Jan 2012 09:53:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Asterisk &#8211;  Connettività digitale e analogica [decima parte]</title>
		<link>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/</link>
		<comments>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 10:35:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=996</guid>
		<description><![CDATA[Linea analogica (RTG) Nella telefonia analogica ci sono due tipi di interfacce (e due tipi di segnalazioni): FXS e FXO - FXS (Foreign eXchange Station) è la porta che consegna la linea analogica all&#8217;utente (la presa sul muro che fornisce il segnale dalla centrale) e quindi prodice il dial-tone. - FXO (Foreign eXchange Office) è [...]]]></description>
			<content:encoded><![CDATA[<h3>Linea analogica (RTG)</h3>
<p>Nella telefonia analogica ci sono due tipi di interfacce (e due tipi di segnalazioni): FXS e FXO</p>
<p>- FXS (<strong>F</strong>oreign e<strong>X</strong>change <strong>S</strong>tation) è la porta che consegna la linea analogica all&#8217;utente (la presa sul muro che fornisce il segnale dalla centrale) e quindi prodice il dial-tone.</p>
<p>- FXO (<strong>F</strong>oreign e<strong>X</strong>change <strong>O</strong>ffice) è la porta che riceve la linea analogica (la presa sull&#8217;apparecchio telefonico) e quindi riceve il dial-tone.</p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/Photo-ott-05-12-57-06-p.2.jpg"><img class="size-medium wp-image-995 alignleft" title="Photo ott 05, 12 57 06 p." src="http://www.ultimobyte.org/wp-content/uploads/2010/10/Photo-ott-05-12-57-06-p.2-225x300.jpg" alt="" width="147" height="197" /></a></p>
<p>E&#8217; possibile utilizzare la linea analogica che abbiamo a casa con il nostro centralino Asterisk sfruttando una scheda Digium TDM410 (o analoghe) mostrata in figura</p>
<p>Questo tipo di scheda prevede l&#8217;espandibilità fino a 4 linee FXS o FXO. In particolare questa ha montato un modulo FXO (colore rosso) sulla porta 4 e un modulo FXS (colore verde) sulla porta 1.</p>
<p>Dalle cose dette prima quindi, sul modulo FXS (verde) che invia il dial-tone, va attaccato un apparato con porta FXO che riceve il dial-tone (telefono, fax, etc), mentre la porta FXO (rossa) va attaccata sulla presa FXS da cui arriva il segnale della centrale (presa muro).</p>
<h3>Linea digitale ISDN (BRI/PRI)</h3>
<p>Una linea ISDN (Integrated Services Digital Network) viene fornita all&#8217;utenza mediante due tipi di connessione verso la centrale pubblica: Basic Rate Interface (BRI) e Primary Rate Interface (PRI). Entrambi Primary Rate Interface e Basic Rate Interface sono costituiti da un certo numero di canali B e D canali. B Channel o il Canale Portatore è utilizzato per la trasmissione dei dati, tra cui voce e il canale D è destinato per la segnalazione e controllo. LA differenza <span id="more-996"></span>sta nel numero di canali di tipo B:</p>
<p>BRI: 2 canali B da 64 Kbps e 1 canale D da 16 Kbps</p>
<p>PRI: può essere di tipo E1(utlilzzato in Europa e in Australia) o T1 (utlilzzato in Nord America e Giappone).</p>
<p>- PRI E1 &#8211;&gt; 30B + D con un bit rate totale di 2,048 Mbit / s</p>
<p>- PRI T1 &#8211;&gt; 23B + D con un bit rate totale di 1,544 Mbit / s</p>
<p>La linea telefonica digitale utilizza la tecnica TDM (Time Division Multiplexing) per far passare su un unico flusso più chiamate contemporaneamente.</p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png"><img class="aligncenter size-full wp-image-1003" title="TDM" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png" alt="" width="411" height="163" /></a></p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/TDM.png"></a>Di seguito una scheda Digium E1/T1 utilizzabile con Asterisk:</p>
<h3><a href="http://www.ultimobyte.org/wp-content/uploads/2010/10/Diapositiva11.png"><img class="aligncenter size-full wp-image-1006" title="Diapositiva1" src="http://www.ultimobyte.org/wp-content/uploads/2010/10/Diapositiva11.png" alt="" width="540" height="405" /></a>Configurazione DAHDI e Asterisk</h3>
<p>Ci sono due file di configurazione da modificare per far funzionare le schede analogiche e digitale con Asterisk.:</p>
<p>- /etc/dahdi/system.conf</p>
<p>- /etc/asterisk/chan_dahdi.conf</p>
<p><span style="color: #008080;"><strong>&#8212; system.conf &#8212;</strong></span></p>
<p>La configurazione hardware viene fatta nel file <strong>system.conf</strong></p>
<blockquote><p><em># configurazione relativa al flusso primario</em><br />
span=1,1,0,ccs,hdb3,crc4 <em>#una riga per ogni flusso: span1,&#8230;span2,..</em><br />
bchan=1-15 <em>#15 canali bearer</em><br />
dchan=16 <em>#1 canale di controllo</em><br />
bchan=17-31 <em>#15 canali bearer</em><br />
<em># configurazione relativa alla linea analogica</em><br />
fxoks=32<br />
fxsks=35<br />
<em># configurazione relativa ad entrambe</em><br />
loadzone=it<br />
defaultzone=it<br />
echocanceller=mg2,1-15,17-31,32,35</p></blockquote>
<p><strong>Attenzione alla configurazione delle linee analogiche</strong>: nella configurazione devo specificare non il tipo di porta ma il tipo di segnale che mi aspetto. Nel nostro caso i canali liberi per la scheda analogica in figura sono (visto che i primi 31 sono occupati dal primario):  32 (porta 1),33 (porta 2), 34 (porta 3), 35 (porta 4). In particolare:</p>
<p>- sulla porta 1 (canale 32) c&#8217;è il modulo verde FXS e quindi mi aspetto un segnale FXO (fxoks=32)</p>
<p>- sulla porta 4 (canale 35) c&#8217;è il modulo rosso FXO e quindi mi aspetto un segnale FXS (fxsks=35)</p>
<p><strong>La riga <em>span</em>&#8230;</strong></p>
<p>span=Span number,Timing,Line Build Out, Framing, Line Coding</p>
<p>A parte il promo valore che si incrementa per ogni primario che installiamo, il valore a cui dobbiamo fare attenzione è il Timinig (il clock): dovrà essere 0 se collegato al Telco mentre dovrà essere 1 se collegato al centralino.</p>
<p>NB: Dopo ogni modifica fatta al file system.conf va eseguito il comando: <strong>dahdi_cfg -vv</strong></p>
<p><span style="color: #008080;"><strong>&#8212; chan_dahdi.conf &#8212;</strong></span></p>
<blockquote><p>[channels]</p>
<p>group=1<br />
context=local<br />
signaling=fxo_ks <em>;segnalazione che si aspetta &#8211;&gt; ci attacco il telefono</em><br />
callerid=&#8221;Bob Analog&#8221;&lt;6003&gt;<br />
mailbox=&#8221;6003&#8243;<br />
callwaiting=yes<br />
threewaycalling=yes<br />
transfer=yes<br />
channel =&gt; 32</p>
<p>group=2<br />
context=from_outside<br />
signaling=fxs_ks <em>; segnalazione che si aspetta &#8211;&gt; ci attacco la linea</em><br />
callerid=asrecived<br />
callwaiting=mp<br />
channel =&gt; 35</p>
<p>group=3<br />
echocancel=yes<br />
echocancelwhenbridge=no<br />
echotraining=yes<br />
switchtype=euroisdn<br />
context=from_outside<br />
signalling=pri_cpe<br />
channel =&gt; 1-15<br />
channel =&gt; 17-31</p></blockquote>
<p>Ciascun <em>canale DAHDI</em> (system.conf) può essere assegnato a uno o più <em>channel group</em> (chan_dahdi.conf). E&#8217; necessario utilizzare il numero del gruppo nell&#8217;applicaziond Dial():</p>
<p>exten =&gt; 123,1,Dial(DAHDI/g2/06555444)</p>
<p>In questo caso su sta utilizzando la linea analogica.</p>
<p>Se scrivo</p>
<p><em>exten =&gt; 123,1,Dial(DAHDI/g1/06555444)</em></p>
<p>utilizzo il flusso primario. Ma quale sarà il canale occupato? In questo caso (g) i canali verranno occupati in maniera sequenziale (1,2,3,&#8230;) ma posso scegliere anche:</p>
<p>l&#8217;ordine inverso (G): <em>exten =&gt; 123,1,Dial(DAHDI/G1/06555444)</em></p>
<p>l&#8217;ordine casuale (round-robin) ascendente (r) : <em>exten =&gt; 123,1,Dial(DAHDI/r1/06555444)</em></p>
<p>l&#8217;ordine casuale (round-robin) dicendente (R) : <em>exten =&gt; 123,1,Dial(DAHDI/R1/06555444)</em></p>
<p><!-- adman --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/10/06/asterisk-connettivita-digitale-e-analogica-decima-parte/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Sicurezza [nona parte]</title>
		<link>http://www.ultimobyte.org/2010/08/17/asterisk-sicurezza-nona-parte/</link>
		<comments>http://www.ultimobyte.org/2010/08/17/asterisk-sicurezza-nona-parte/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 10:17:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicurezza]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=532</guid>
		<description><![CDATA[Ci sono degli accorgimenti molto importanti affinché il nostro PBX non venga utilizzato per fare qualche migliaio di € di telefonate a scrocco! Negli  ultimi due anni infatti sono stati migliaia i Soft PBX sfruttati per fini illeciti come descritto anche in questo articolo. Di seguito cercheremo di illustrare le principali cose da fare&#8230; - [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2010/08/sicurezza-asterisk.png"><img class="alignleft size-medium wp-image-845" title="sicurezza-asterisk" src="http://www.ultimobyte.org/wp-content/uploads/2010/08/sicurezza-asterisk-300x145.png" alt="" width="146" height="71" /></a>Ci sono degli accorgimenti molto importanti affinché il nostro PBX non venga utilizzato per fare qualche migliaio di € di telefonate a scrocco! Negli  ultimi due anni infatti sono stati migliaia i Soft PBX sfruttati per fini illeciti come descritto anche in <a title="FBI: Criminals Auto-dialing With Hacked VoIP Systems" href="http://www.pcworld.com/article/155074/fbi_criminals_autodialing_with_hacked_voip_systems.html" target="_blank">questo</a> articolo. Di seguito cercheremo di illustrare le principali cose da fare&#8230;</p>
<p><strong>- allowguest </strong>(sip.conf)</p>
<p>Il file di configurazione sip.conf  che si ottiene dopo l&#8217;installazione del sistema contiene la direttiva &#8220;allowguest&#8221; che di default (complimenti a quelli della digium <img src='http://www.ultimobyte.org/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' />  ) permette di fare le chiamate senza autenticazione (quindi inventando direttamente lo username&#8230;). Questo può avviene quando si utilizza unicamente il contesto di <em>default</em>. Settare quindi il parametro <strong><em>allowguest=no</em><span style="font-weight: normal;">.</span></strong></p>
<p><strong>- i contesti </strong>(sip.conf, extension.conf e chan_dahdi.conf)</p>
<p>E&#8217; importante capire come funzionano i contesti di ingresso e di uscita e fare in modo che siano assolutamente isolati tra loro. La cosa fondamentale è che <span style="text-decoration: underline;"><em>in un contesto di ingresso delle chiamate non ci sia la possibilità di farne in uscita</em></span>. Verificare quindi che il contesto di default sia sicuro e non permettere agli utenti non autenticati (nel caso ci sia allowguest=yes) di raggiungere contesti in cui sono permesse chiamate a pagamento.</p>
<p><strong>- alwaysauthreject </strong>(sip.conf)</p>
<p>Impostando <strong><em>alwaysauthreject = yes </em></strong>quando qualcuno cerca di connettersi a un interno esistente sbagliando la password non verrà comunicata se l’interno esiste o no e la risposta sarà la stessa usata per un interno inesistente.</p>
<p><strong>- password</strong></p>
<p>Utilizzare password complesse per le utenze SIP. E&#8217; sempre consigliabile usare un mix di simboli, numeri, lettere maiuscole  e lettere minuscole.</p>
<p><strong>- limit-call</strong></p>
<p>Impostare su ciascuna utenza SIP il numero massimo di chiamate contemporanee che l&#8217;utente può  fare (se non ci sono particolari esigenze si può impostare <strong><em>limit-call=1</em></strong>)<br />
<span id="more-709"></span><br />
<script type="text/javascript">// <![CDATA[
 google_ad_client = "pub-3430080201938393"; /* UB234x60-17/08/10 */ google_ad_slot = "5601239122"; google_ad_width = 234; google_ad_height = 60;
// ]]&gt;</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
<p>E&#8217; possibile anche utilizzare software di terze parti&#8230;Per esempio <a title="Fail2ban" href="http://www.fail2ban.org/" target="_blank">Fail2ban</a> , un IDS che attraverso la scansione dei file di registro blocca, utilizzando iptables, i tentativi di registrazione falliti.</p>
<p>Un altro sistema simile al precedente è quello di utilizzare le AGI (degli script esterni richiamabili dal dialplan di Asterisk) che possono essere eseguite in base al verificarsi di certi eventi&#8230;</p>
<p>Supponiamo il caso di avere un primario (30 canali) di cui sappiamo che generalmente non viene mai usato più del 50% delle sue capacità. Quindi contemporaneamente non abbiamo mai più di 15 chiamate (tra ingresso e uscita). E&#8217; possibile tramite dialplan fare un controllo del numero di canali occupati contemporaneamente (utilizzando le funzioni GROUP() e GROUP_COUNT() ) e nel caso  questo valore superi una certa soglia, richiamare un AGI che invii un email (o faccia qualsiasi altra cosa tipo bloccare la porta 5060 tramite iptables) che ci avvisi di quello che sta succedendo. Qui di seguito viene riportato come fare questa cosa:</p>
<p>nel file extension.conf</p>
<blockquote>
<div id="_mcePaste">exten =&gt; _X.,1,Set(GROUP()=limit)</div>
<div id="_mcePaste">exten =&gt; _X.,2,Noop(${GROUP_COUNT(limit)})</div>
<div id="_mcePaste">exten =&gt; _X.,3,GotoIf($[${GROUP_COUNT(limit)} &gt; 15]?108)</div>
<div id="_mcePaste">exten =&gt; _X.,4,Dial(DAHDI/g1/${EXTEN})</div>
<div id="_mcePaste">exten =&gt; _X.,108,AGI(outgoingcalls.sh)</div>
<div id="_mcePaste">exten =&gt; _X.,109,Busy</div>
<div id="_mcePaste">exten =&gt; _X.,110,Hangup</div>
</blockquote>
<div>lo script outgoingcalls.sh (che deve essere necessariamente inserito nella directory /var/lib/asterisk/agi-bin/) non fa altro che inviare un email magari dandoci anche l&#8217;output del file Master.csv (file dove si trovano tutte le informazioni relative alle chiamate in ingresso e uscita delle linee telefoniche)</div>
<div>Segue il codice dello script:</div>
<blockquote>
<div>
<div>#!/bin/bash</div>
<div>echo -e &#8220;There are more than 15 simultaneous outgoing calls.\n\n\nOutput of &#8216;tail /var/log/asterisk/cdr-csv/Master.csv:\n\n`tail /var/log/asterisk/cdr-csv/Master.csv`&#8221; | mail -s &#8220;[ALERT] &#8211; Too many outgoing calls from asterisk-pbx&#8221; name@domain.com</div>
</div>
</blockquote>
<div>Naturalmente se avete altri suggerimenti fatemeli sapere! Su questi argomenti c&#8217;è sempre da imparare molto&#8230;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2010/08/17/asterisk-sicurezza-nona-parte/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211;  Le variabili [ottava parte]</title>
		<link>http://www.ultimobyte.org/2009/03/31/asterisk-le-variabili-ottava-parte/</link>
		<comments>http://www.ultimobyte.org/2009/03/31/asterisk-le-variabili-ottava-parte/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 13:01:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=515</guid>
		<description><![CDATA[Le variabili possono essere definite sia dall&#8217;amministratore di sistema che da Asterisk. distinguiamo due tipi di variabili: variabili di canale (Channel variables) variabili globali (Global vairables) L&#8217;utilizzo delle variabili permette di avere un dialplan più chiaro e semplice da gestire. La sintassi che permette di recuperare il valore di una variabile è ${VARIABILE}. Le variabili [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2009/03/variables-math1.jpg"><img class="alignleft size-medium wp-image-527" title="variables-math1" src="http://www.ultimobyte.org/wp-content/uploads/2009/03/variables-math1.jpg" alt="" width="188" height="231" /></a>Le variabili possono essere definite sia dall&#8217;amministratore di sistema che da Asterisk.</p>
<p>distinguiamo due tipi di variabili:</p>
<ul>
<li>variabili di canale (<strong>Channel variables</strong>)</li>
<li>variabili globali (<strong>Global vairables</strong>)</li>
</ul>
<p>L&#8217;utilizzo delle variabili permette di avere un dialplan più chiaro e semplice da gestire. La sintassi che permette di recuperare il valore di una variabile è <strong>${VARIABILE}</strong>. Le variabili sono case sensitive!!!</p>
<p>Le variabili di canale settate da Asterisk sono tutte maiuscole è quindi utile, per evitare &#8220;duplicati&#8221;, creare variabili con caratteri minuscoli.<span id="more-515"></span></p>
<p><span style="text-decoration: underline;"><strong>Channel variables</strong></span></p>
<p>Le variabili di canale contengono valori associati con un determinato canale. Sono definite per tutta la durata della chiamata corrente e disponibili solo per il canale che partecipa a quella determinata chiamata. Per settare il valore di una variabile di canale si usa l&#8217;applicazione <strong>Set()</strong>: exten =&gt;123,n,Set(count=3)</p>
<p><span style="text-decoration: underline;"><strong>Global vairables</strong></span></p>
<p>Le variabili globali sono disponibili on qualsiasi punto del Dialplan, in qualsiasi chiamata e in qualsiasi contesto. Vengono definite nella sezione [globals] del dialplan.</p>
<p><strong>[globals]<br />
Tom=SIP/ts_xlite</strong><br />
&#8230;<br />
nel dialplan:<br />
<strong>exten =&gt; 601,1,Dial(${Tom})</strong></p>
<p>E&#8217; possibile definire queste variabili anche con l&#8217;applicazione Set() all&#8217;interno del dialplan aggiungendo però il parametro &#8220;g&#8221;: Set(count=3,g)</p>
<p><span style="text-decoration: underline;"><em>VALORE DELLA VARIABILE</em></span> <strong>{$DIALSTATUS}</strong></p>
<p>- CHANUNAVAIL : canale non disponibile<br />
- CONGESTION<br />
- NOANSWER<br />
- ANSWER<br />
- BUSY<br />
- CANCEL</p>
<p>Esempio: untilizzo delle label non numeriche</p>
<p>exten =&gt; 601,1,NoOp(Calling Tom)<br />
exten =&gt; 601,n,Dial(${Tom},30)<br />
exten =&gt; 601,n,Goto(${DIALSTATUS})<br />
exten =&gt; 601,n(NOANSWER),1,Voicemail(601@default,u)<br />
exten =&gt; 601,n,Hungup()<br />
exten =&gt; 601,n(BUSY),Voicemail(601@default,b)</p>
<p><span style="text-decoration: underline;"><em>VALORE DELLA VARIABILE</em></span> <strong>{$EXTEN}</strong></p>
<p>Questa variabile contiene il valore del numero che è stato chiamato:</p>
<p><strong>exten =&gt; _XXX,1,SayDigits ({$EXTEN})</strong></p>
<p>Asterisk permette con facilità di <strong><span style="color: #800000;">manipolare la lunghezza delle variabili</span></strong>:</p>
<p>{$VARIABILE:x} &#8211;&gt; x: numero di digits da rimuovere a partire dall&#8217;inizio della stringa</p>
<ul>
<li>ES: se il valore di {$EXTEN} è 12345, il valore di  {$EXTEN:1} è 2345</li>
</ul>
<p>{$VARIABILE:-x} &#8211;&gt; x: numero di digits da rimuovere a partire dalla fine della stringa</p>
<ul>
<li>ES: se il valore di {$EXTEN} è 12345, il valore di  {$EXTEN:-1} è 1234</li>
</ul>
<p>Si possono anche estrarre parti della stringa utilizzando la sintassi: <strong>${variabile:skip:length}</strong></p>
<ul>
<li>ES: se il valore di {$EXTEN} è 12345678, il valore di  {$EXTEN:3:3} è 456 (salto i prime tre e prendo i tre caratteri che seguono</li>
</ul>
<p><span style="color: #ffffff;">.</span></p>
<h4>L&#8217;Applicazione Read()</h4>
<p>A volte è possibile voler prendere delle delle informazioni dall&#8217;utente e processare tali dati. L&#8217;applicazione Read() permette di prendere in input i DTMF (toni della tastiera telefonica) e assegnarli ad una variabile. Questa funzione chiede all&#8217;utente di digitare sulla tastiera dei valori e li inserisce dentro una determinata variabile. L&#8217;inserimento termina quando scade il timeout o quando l&#8217;utente digita &#8220;#&#8221;. ES:</p>
<p>exten =&gt; 621,1,Read(Digits,enter-ext-of-person)<br />
exten =&gt; 612,n,SayDigits(${Digits})<br />
exten =&gt; 612,n,Goto(1)</p>
<h4>Pattern Matching</h4>
<p>Il pattern matching inizia sempre con il carattere _ (underscore)</p>
<p>X -&gt; 0-9</p>
<p>N -&gt; 2-9</p>
<p>Z -&gt; 1-9</p>
<p>Range di numeri possono essere descritti racchiudendoli tra parentesi quadre:</p>
<p>_[0-5] matcha numeri tra 0 e 5</p>
<p>Il punto matcha qualsiasi cosa (anche le estenzioni speciali tipo &#8220;i&#8221;, &#8220;h&#8221;, etc)-&gt; <strong>_.</strong></p>
<p>E&#8217; preferibile usare <strong>_X</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/03/31/asterisk-le-variabili-ottava-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Configurare i Provider Voip [settima parte]</title>
		<link>http://www.ultimobyte.org/2009/02/18/asterisk-configurare-i-provider-voip-settima-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/18/asterisk-configurare-i-provider-voip-settima-parte/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 22:59:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=460</guid>
		<description><![CDATA[SIP Service Provider Account [AGGIORNATO CON ALTRO ESEMPIO] Si trovano su Internet moltissimi siti che offrono servizio di VoIP Provider. E&#8217; possibile utilizzare Asterisk sia per quei provider che forniscono solo un numero entrante, sia per quelli che permettono chiamate in uscita e naturalmente per quelli che ti danno entrambe questi servizi. Asterisk distingue nella [...]]]></description>
			<content:encoded><![CDATA[<h3 style="text-align: center;"><a href="http://www.ultimobyte.org/wp-content/uploads/2009/03/voip-provider.jpg"><img class="size-medium wp-image-499 alignleft" title="voip-provider" src="http://www.ultimobyte.org/wp-content/uploads/2009/03/voip-provider-300x57.jpg" alt="" width="279" height="53" /></a></h3>
<h3>SIP Service Provider Account</h3>
<p><a href="#aggiornamento">[AGGIORNATO CON ALTRO ESEMPIO]<br />
</a><br />
Si trovano su Internet moltissimi siti che offrono servizio di VoIP Provider.<br />
E&#8217; possibile utilizzare Asterisk sia per quei provider che forniscono solo un numero entrante, sia per quelli che permettono chiamate in uscita e naturalmente per quelli che ti danno entrambe questi servizi.</p>
<p>Asterisk distingue nella configurazione del file sip.conf l&#8217;attivazione dei tre tipi di servizi sopra indicati in modo differente.<br />
<!-- adman --><br />
<strong>type=peer <span style="color: #666699;">&#8211;&gt; può solo inviare chiamate</span><br />
</strong></p>
<p><strong>type=user <span style="color: #666699;">&#8211;&gt; può solo ricevere chiamate</span><br />
</strong></p>
<p><strong>type=friend <span style="color: #666699;">&#8211;&gt; può inviare e ricevere</span></strong></p>
<p>user e peer hanno delle opzioni specifiche che hanno funzionalità  differenti, il friend le eredita entrambe. In generale utilizziamo il friend quando uno user agent (per es. un soft phone) si registra ad asterisk,  usiamo un peer quando è asterisk che si registra a qualcuno e gestisce  le chiamate in uscita, useremo uno user quando dobbiamo ricevere delle  chiamate da qualcuno esternamente quando è sempre asterisk che si  registra (o quando vogliamo che l&#8217;user agnt possa sopo ricevere). In pratica quelli che si comportano come interni saranno dei  friend, i trunk saranno dei peer/user.</p>
<h4>PEER</h4>
<p>Quando si definisce un peer tra [  ] si dovrà mettere un nome che è puramente indicativo e non indica il suo username; il campo <strong><em>host</em></strong> ha lo scopo di specificare dove inviare le chiamate (sarà sempre l&#8217;ip del Provider e non sarà dynamic poichè è lui che deve registrare). <span style="text-decoration: underline;">A differenza dell&#8217; &#8220;user&#8221; il &#8220;peer&#8221; non prevederebbe il <em><strong>context</strong></em>, che definisce l&#8217;arrivo delle chiamate, visto che può solo uscire</span>. E qui le cose si complicano perchè<span style="text-decoration: underline;"> invece si può utilizzare poichè c&#8217;è un&#8217;eccezione gestita da asterisk, dove, se non vede uno user abbinato al peer usa il context definito dal peer stesso</span>. Questo molto spesso ci evita di definire lo user e di usare il peer per gestire entrambe le cose, anche se può portare confusione</p>
<p>(I peers) hanno <em>invece</em> il campo &#8220;host&#8221; per specificare dove inviare le chiamate.</p>
<p>Il &#8220;peer&#8221; ha un campo<strong> </strong><em><strong>username</strong> e <strong>password</strong></em><strong> </strong>dove viene definito lo username e la password che permettono l&#8217;autenticazione con il peer remoto. (Nota che quando definisci uno <strong>user</strong> lo username va dentro le parentesi quadre, mentre quando definisci un <strong>peer</strong> lo username va messo nel campo username)</p>
<p>Per inviare le chiamate al peer SIP si possono  usare le seguente sintassi:</p>
<p><strong>Dial(SIP/extension@peername)</strong> <em>&lt;&#8211; il peername è quello tra parentesi quadre</em>:</p>
<p>o</p>
<p><strong>Dial(SIP/peername/extension) </strong><em>&lt;&#8211; l&#8217;extension è il numero che voglio chiamare</em></p>
<p>Per inviare le chiamate al peer IAX si può  usare solo al seguente sintassi:</p>
<p><strong>Dial(IAX2/peername/extension)</strong></p>
<p><span style="text-decoration: underline;"><strong>La registrazione</strong></span></p>
<p>Se il tuo IP è dinamico o il tuo provider non conosce il tuo indirizzo IP, è necessario registrarsi periodicamente con il server in modo tale che il tuo provider possa sempre conoscere l&#8217;indirizzo a cui inviare le chiamate. Per fare questa cosa si deve utilizzare (sia in sip.conf che in iax.conf) il comando &#8220;register&#8221;</p>
<p>Sintassi:</p>
<p>register =&gt; user[:secret]@host[:port][/extension]</p>
<p>Esempio register =&gt; nome:password@voipprovider.com</p>
<h4>USER</h4>
<p>Esempio base:<img title="More..." src="http://www.ultimobyte.org/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p><strong>[test] </strong><em>&lt;&#8211; sezione</em><br />
<strong>type=user<br />
secret=password<br />
context=incoming</strong> <em>&lt;&#8211; Quando arriva la chiamata per l&#8217;utente &#8220;test&#8221; la chiamata viene inviata nel contesto specificato (in questo caso incoming)</em></p>
<p><strong>network options</strong>: E&#8217; possibile permettere o bloccare un range di IP con i comandi &#8220;permit&#8221; e deny&#8221;:</p>
<p>[test]<br />
type=user<br />
secret=password<br />
context=incoming<br />
deny=0.0.0.0/0<br />
permit=192.168.1.5<br />
permit=192.168.2.100<br />
permit=10.16.5.0/24<br />
permit=172.16.100.0/255.255.255.0</p>
<p><strong>codec options</strong>: E&#8217; possibile specificare quali e in quale ordine usare determinati codec</p>
<p>[test]<br />
type=user<br />
secret=password<br />
context=incoming<br />
disallow=all<br />
allow=gsm<br />
allow=ulaw</p>
<h4>FRIENDS</h4>
<p>Un friend è sia un user che un peer</p>
<p>I friends sono una semplice scorciatoia per configurare degli endpoint (telefoni IP). Sono anche utilizzati per i più comuni sip provider (sipgate, sipcall, Gizmo, messagnet)</p>
<p>Altri SIP Provider (come per esempio Eutelia) vogliono come configurazione user e peer separati</p>
<p>Per uno user, Asterisk non richiede l&#8217;autenticazione username/password se non è presente la voce &#8220;secret=&#8221;. Per un friend generalmente dobbiamo specificare una &#8220;secret&#8221; per le nostre connessioni in uscita. Se il friend è un Provider Voip questo prima di instaurare la connessione manda un invite ad Asterisk il quale a questo punto si aspetta un autenticazione da parte del provider per poter terminare la sissione SIP. Chiaramente nessun provider invia questa informazione. Per questo motivo è possibilie utilizzare il seguente comando per saltare l&#8217;autenticazione:</p>
<p><strong>insecure=invite,port</strong> <em>(vedi anche <a href="http://www.asterisk.name/asterisk/0596009623/asterisk-app-a-sect-2.html" target="_blank">questo link</a>)</em></p>
<h5>Esempio TRUNK SIP</h5>
<p>Vediamo come configurare i trunk SIP. <strong>E&#8217; importante ricordarsi che la registrazione va fatta alla fine del contesto [general]</strong></p>
<p><span style="color: #333399;"><strong>sip.conf</strong></span></p>
<blockquote><p><code><strong> </strong></code></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING</strong></p>
<p><strong>[general]<br />
;context=default</strong></p>
<p><strong>context=from_outside</strong> ; &#8211;questo è il context che sta in extensions.conf vale solo per le  chiamate sip in ingresso a meno che non sia specificato un context nel peer o nello user &#8211;;<strong><br />
realm=class.digium.com<br />
bindport=5060<br />
bindaddr=0.0.0.0<br />
srvlookup=yes<br />
disallow=all<br />
allow=ulaw<br />
allow=gsm<br />
language=en</strong></p>
<p><strong>;*******************************************<br />
;*** REGISTER STATEMENTS</strong></p>
<p><strong>register =&gt; training1:training@192.168.1.100</strong></p>
<p><strong>;*******************************************<br />
;*** FRIENDS, USER AND PEERS&#8230;</strong></p>
<p><strong>[6001]<br />
type=friend<br />
host=dynamic<br />
secret=zoiper<br />
context=users<br />
mailbox=6001@default</strong></p>
<p><strong>[6002]<br />
type=friend<br />
host=dynamic<br />
secret=polycom<br />
context=users<br />
mailbox=6002@default</strong></p>
<p><strong>[to_sipprovider]<br />
type=peer<br />
username=training1<br />
fromuser=training1<br />
fromdomain=example.com<br />
secret=training<br />
canreinvite=no<br />
insecure=invite,port<br />
host=192.168.1.100<br />
deny=0.0.0.0/0<br />
permit=192.168.1.100<br />
disallow=all<br />
allow=gsm<br />
allow=ulaw<br />
allow=alaw<br />
qualify=yes<br />
nat=no<br />
</strong></p></blockquote>
<p>NB: il comando <strong>insecure=invite,port </strong>viene utilizzato perchè Asterisk generalmete richiede la peer di inviargli le credenziali per poter accettare la chiamata ma non tutti i provider mandano tali informazioni. Con questo comando si dice ad Asterisk di non fare tali richieste ed accettare le chiamate in ingresso.<strong><br />
</strong></p>
<p><span style="color: #333399;"><strong>extension.conf</strong></span></p>
<blockquote><p><code><strong><br />
;*******************************************<br />
;*** GLOBAL SETTING FOR EXTENSION</strong></code></p>
<p><strong>[general]<br />
static=yes<br />
writeprotect=no<br />
autofallthrough=yes<br />
clearglobalvars=no<br />
priorityjumping=no</strong></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR variables</strong></p>
<p><strong>[globals]</strong></p>
<p><strong>;*******************************************<br />
;*** EXTENSION CONTEXT</strong></p>
<p><strong>[from_outside]<br />
include =&gt; inside</strong></p>
<p><strong>[users]<br />
include =&gt; inside<br />
include =&gt; features</strong></p>
<p><strong>[inside]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6001,n,VoiceMail(6001@default)</strong></p>
<p><strong>exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
exten =&gt; 6002,n,VoiceMail(6002@default)</strong></p>
<p><strong>[features]<br />
exten =&gt; 6599,1,Answer()<br />
exten =&gt; 6599,n,Playback(hello-world)<br />
exten =&gt; 6599,n,wait(2)<br />
exten =&gt; 6599,n,Playback(good-evening)<br />
exten =&gt; 6599,n,Hangup()<br />
exten =&gt; 6598,1,Goto(demo-menu,s,1)</strong></p>
<p><strong>exten =&gt; 6601,1,Goto(day-menu,s,1)</strong></p>
<p><strong>;per ascoltare i messaggi<br />
exten =&gt; 6500,1,Answer()<br />
exten =&gt; 6500,n,VoiceMailMain(@default)</strong></p>
<p><strong>;Outbound extension<br />
exten =&gt; 6700,1,Dial(SIP/6000@to_sipprovider)<br />
</strong></p>
<p><strong>;Record The Day Menu<br />
exten =&gt; 6600,1,Answer()<br />
exten =&gt; 6600,n,Wait(0,5)<br />
exten =&gt; 6600,n,Record(day-menu.gsm)<br />
exten =&gt; 6600,n,Wait(1)<br />
exten =&gt; 6600,n,Playback(day-menu)</strong></p>
<p><strong>[demo-menu]</strong></p>
<p><strong>&#8230;</strong></p>
<p><strong> [day-menu]<br />
</strong></p>
<p>&#8230;</p></blockquote>
<h3>IAX2 ITSP Account</h3>
<p>Nel file <span style="color: #888888;"><strong><span style="color: #333399;">iax.conf</span> </strong></span>aggiungere (dove sono già esistenti e commentati gli esempi di register) la seguente riga:</p>
<blockquote><p><code><strong><br />
register =&gt; training1:training@192.168.1.100<br />
</strong></code></p></blockquote>
<p>Per quanto riguarda l&#8217;inserimento dell&#8217;user account utilizziamo (invece del friend) due utenze separate per chiamate in uscita (peer) e chiamate in ingresso (user):</p>
<blockquote><p><code><strong><br />
[to_iaxprovider]<br />
username=training1<br />
secret=training<br />
type=peer<br />
auth=md5<br />
transfer=no<br />
host=192.168.1.100<br />
disallow=all<br />
allow=gsm<br />
allow=ulaw<br />
allow=alaw<br />
qualify=yes<br />
trunk=yes</strong></code></p>
<p><strong>[training1]<br />
type=user<br />
auth=md5<br />
transfer=no<br />
disallow=all<br />
allow=gsm<br />
allow=ulaw<br />
allow=alaw<br />
secret=training<br />
context=from_outside<br />
</strong></p></blockquote>
<p>In <span style="color: #333399;"><strong>extensions.conf</strong></span> aggiungiamo la chiamata verso il provider IAX</p>
<blockquote><p><code><strong><br />
[features]<br />
...<br />
;Outbound extension<br />
exten =&gt; 6700,1,Dial(SIP/6000@to_sipprovider)<br />
exten =&gt; 6701,1,Dial(IAX2/to_iaxprovider/6000)<br />
...</strong></code></p></blockquote>
<p><strong><span style="color: #993300;"><a name="aggiornamento">[AGGIORNAMENTO]</a></span></strong><br />
<script type="text/javascript">// <![CDATA[
google_ad_client = "pub-3430080201938393";
/* UB_468x60-16/08/10 */
google_ad_slot = "3463357794";
google_ad_width = 468;
google_ad_height = 60;
// ]]&gt;</script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script></p>
<p>Vediamo un altro esempio in cui il nostro Provider ci fornisce un account voip basato sul proxy sip OpenSER</p>
<p>Dati forniti dal Provider</p>
<blockquote><p><code><br />
username: 655<br />
password: pwd655<br />
sip proxy: sip.provider.net</code></p></blockquote>
<p><strong>configurazione sip.conf</strong></p>
<blockquote><p><span style="color: #000080;">[general]<br />
language=it<br />
registerattempts=0<br />
registertimeout=80</span></p>
<p><span style="color: #000080;">context=default                <span style="color: #999999;"> ; Default context for incoming calls</span></span></p>
<p><span style="color: #000080;">&#8230;</span></p>
<p><span style="color: #000080;">register =&gt; 633:pwd633@sip.provider.net/633<br />
</span></p>
<p><span style="color: #000080;">&#8230;</span></p>
<p><span style="color: #000080;">[6001]<br />
;type=user<br />
type=friend<br />
host=dynamic<br />
secret=zoiper<br />
context=supercall<br />
</span></p>
<p><span style="color: #000080;">[to_sip]<br />
type=peer<br />
context=from_provider_voip <span style="color: #999999;">;per le chiamate in ingresso</span><br />
username=633<br />
fromuser=633 <span style="color: #999999;">;serve per sovrascrivere lo username (qui sarebbe 6001)</span><br />
secret=pwd633<br />
host=sip.provider.net<br />
fromdomain=sip.provider.net<br />
qualify=yes<br />
insecure=invite,port</span></p></blockquote>
<p>se non viene indicato il context allora verrà considerato quello indicato nella sezione general (in questo caso quello di default)</p>
<p><strong>configurazione extension.conf</strong></p>
<p>Vogliamo che le chiamate entranti dall&#8217;account VoIP vengano inoltrate sull&#8217;interno 6001 e che solo quest&#8217;ultimo possa utlizzare il provider in uscita mettendo come prefisso 88</p>
<blockquote><p><span style="color: #333399;">[local]<br />
exten =&gt; _600X,1,Dial(SIP/${EXTEN},20)</span></p>
<p><span style="color: #333399;">&#8230;<br />
</span></p>
<p><span style="color: #333399;">[to_provider_voip]<br />
exten =&gt; _88X.,1,Dial(SIP/${EXTEN:2}@to_sip)</span></p>
<p><span style="color: #333399;">&#8230;</span></p>
<p><span style="color: #333399;">[from_provider_voip]<br />
exten =&gt; 633,1,Dial(SIP/6001,20)<br />
</span></p>
<p><span style="color: #333399;">&#8230;</span></p>
<p><span style="color: #333399;">[supercall]</span></p>
<p><span style="color: #333399;">include =&gt; local<br />
include =&gt; to_provider_voip</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/18/asterisk-configurare-i-provider-voip-settima-parte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; VoiceMail e Directory [sesta parte]</title>
		<link>http://www.ultimobyte.org/2009/02/16/asterisk-voicemail-e-directory-sesta-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/16/asterisk-voicemail-e-directory-sesta-parte/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 22:35:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=451</guid>
		<description><![CDATA[L&#8217;applicazione VoiceMail() Una delle funzioni più interessanti di Asterisk è quella della VoiceMail. Grazie a questa applicazione ogni utente può avere la propria segreteria telefonica a cui può accedere secondo le specifiche stabilite. Inoltre è possibile settare Asterisk in modo tale da far inviare alla caselle di posta un email con l&#8217;allegato wave del messaggio [...]]]></description>
			<content:encoded><![CDATA[<h4 style="text-align: center;"><a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/voicemail.jpg"><img class="alignnone size-medium wp-image-478" title="voicemail" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/voicemail.jpg" alt="" width="282" height="201" /></a></h4>
<p><!-- adman --></p>
<h4>L&#8217;applicazione VoiceMail()</h4>
<p>Una delle funzioni più interessanti di Asterisk è quella della VoiceMail. Grazie a questa applicazione ogni utente può avere la propria segreteria telefonica a cui può accedere secondo le specifiche stabilite.</p>
<p>Inoltre è possibile settare Asterisk in modo tale da far inviare alla caselle di posta un email con l&#8217;allegato wave del messaggio lasciato in segreteria. Vediamo come implementare tutto questo.</p>
<p>Aggiungiamo la VoiceMail agli interni<span id="more-451"></span></p>
<p><span style="color: #333399;"><strong>voicemail.conf</strong></span></p>
<blockquote><p><code><br />
<strong><br />
...</strong></code></p>
<p><strong>[default]<br />
6001 =&gt; 1234,Polycom,pol@iol.it<br />
6002 =&gt; 1234,Zoiper,zoip@iol.it</strong></p>
<p><strong>&#8230;<br />
</strong></p></blockquote>
<p><span style="color: #333399;"><strong>sip.conf</strong></span></p>
<blockquote><p><code><br />
<strong><br />
;*******************************************<br />
;*** GLOBAL SETTING</strong></code></p>
<p><strong>[general]<br />
context=default<br />
realm=class.digium.com<br />
bindport=5060<br />
bindaddr=0.0.0.0<br />
srvlookup=yes<br />
disallow=all<br />
allow=ulaw<br />
allow=gsm<br />
language=en</strong></p>
<p><strong>;*******************************************<br />
;*** REGISTER STATEMENTS</strong></p>
<p><strong>;*******************************************<br />
;*** FRIENDS, USER AND PEERS&#8230;</strong></p>
<p><strong>[6001]<br />
type=friend<br />
host=dynamic<br />
secret=zoiper<br />
context=users<br />
mailbox=6001@default ; serve solo per mandare la notifica al telefono</strong></p>
<p><strong>[6002]<br />
type=friend<br />
host=dynamic<br />
secret=polycom<br />
context=users<br />
mailbox=6002@defaul</strong></p></blockquote>
<p><span style="color: #333399;"><strong>extensions.conf</strong></span></p>
<blockquote><p><code><br />
<strong><br />
;*******************************************<br />
;*** GLOBAL SETTING FOR EXTENSION</strong></code></p>
<p><strong>[general]<br />
static=yes<br />
writeprotect=no<br />
autofallthrough=yes<br />
clearglobalvars=no<br />
priorityjumping=no</strong></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR variables</strong></p>
<p><strong>[globals]</strong></p>
<p><strong>;*******************************************<br />
;*** EXTENSION CONTEXT</strong></p>
<p><strong>[users]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6001,n,VoiceMail(6001@default)</strong></p>
<p><strong>exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
exten =&gt; 6002,n,VoiceMail(6002@default)</strong></p>
<p><strong>;exten =&gt; _600x,1,Dial(SIP/${EXTEN},20)<br />
include =&gt; features</strong></p>
<p><strong>[features]<br />
exten =&gt; 6599,1,Answer()<br />
exten =&gt; 6599,n,Playback(hello-world)<br />
exten =&gt; 6599,n,wait(2)<br />
exten =&gt; 6599,n,Playback(good-evening)<br />
exten =&gt; 6599,n,Hangup()<br />
exten =&gt; 6598,1,Goto(demo-menu,s,1)</strong></p>
<p><strong>;per ascoltare i messaggi<br />
exten =&gt; 6500,1,Answer()<br />
exten =&gt; 6500,n,VoiceMailMain(@default)</strong></p>
<p><strong>[demo-menu]<br />
exten =&gt; s,1,Answer()<br />
exten =&gt; s,n,Wait(1)<br />
exten =&gt; s,n,Background(press-1)<br />
exten =&gt; s,n,Background(or)<br />
exten =&gt; s,n,Background(press-2)<br />
exten =&gt; s,n,WaitExten(3) ;aspetta 3 secondi passati i quali va all&#8217;estensione t</strong></p>
<p><strong>exten =&gt; 1,1,Playback(you-entered)<br />
exten =&gt; 1,n,Playback(digits/1)<br />
exten =&gt; 1,n,Goto(s,1) ;</strong></p>
<p><strong>exten =&gt; 2,1,Playback(you-entered)<br />
exten =&gt; 2,n,Playback(digits/2)<br />
exten =&gt; 2,n,Goto(s,1)</strong></p>
<p><strong>exten =&gt; h,1,NoOp(Shucks, they hung up!!!)</strong></p>
<p><strong>exten =&gt; t,1,Playback(too-low)<br />
exten =&gt; t,n,Hangup()</strong></p>
<p><strong>exten =&gt; i,1,Playback(pbx-invalid)<br />
exten =&gt; i,n,Hangup()<br />
</strong></p></blockquote>
<h4>Servizio Directory</h4>
<p>Con il servizio Directory è possibile chiedere ad Asterisk l&#8217;interno di una persona inserendo da tastiera (come con la modalità T9) le prime tre lettere del cognome. Se ci sono più match corrispondenti alla stessa digitazione il sistema legge l&#8217;elenco delle persone matchate e per ciascuna di esse chiede conferma all&#8217;utente.</p>
<p>extension.conf</p>
<blockquote><p><code><br />
<strong><br />
...</strong></code></p>
<p><strong>[users]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6001,n,VoiceMail(6001@default)</strong></p>
<p><strong>exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
exten =&gt; 6002,n,VoiceMail(6002@default)</strong></p>
<p><strong>;exten =&gt; _600x,1,Dial(SIP/${EXTEN},20)<br />
include =&gt; features</strong></p>
<p><strong>[features]<br />
exten =&gt; 6599,1,Answer()<br />
exten =&gt; 6599,n,Playback(hello-world)<br />
exten =&gt; 6599,n,wait(2)<br />
exten =&gt; 6599,n,Playback(good-evening)<br />
exten =&gt; 6599,n,Hangup()<br />
exten =&gt; 6598,1,Goto(demo-menu,s,1)</strong></p>
<p><strong>exten =&gt; 6601,1,Goto(day-menu,s,1) ;<span style="color: #333399;">ACCESS EXTENSION</span></strong></p>
<p><strong>;Record The Day Menu<br />
exten =&gt; 6600,1,Answer()<br />
exten =&gt; 6600,n,Wait(0,5)<br />
exten =&gt; 6600,n,Record(day-menu.gsm)<br />
exten =&gt; 6600,n,Wait(1)<br />
exten =&gt; 6600,n,Playback(day-menu)</strong></p>
<p><strong>[day-menu]<br />
exten =&gt; s,1,Answer()<br />
exten =&gt; s,n,Wait(0.5)<br />
exten =&gt; s,n,Background(day-menu)<br />
exten =&gt; s,n,WaitExten(5)</strong></p>
<p><strong>exten =&gt; 1,1,Goto(users,6001,1)</strong></p>
<p><strong>exten =&gt; 2,1,Goto(users,6002,1)</strong></p>
<p><strong>exten =&gt; 9,1,Directory(default,users,e)</strong></p>
<p><strong>exten =&gt; *,1,Goto(s,1)</strong></p>
<p><strong>exten =&gt; t,1,Playbach(goodbay)<br />
exten =&gt; t,n,Hangup()</strong></p>
<p><strong>exten =&gt; i,1,Playback(pbx-invalid)<br />
exten =&gt; i,n,Goto(s,1)<br />
</strong></p></blockquote>
<h4>Le applicazioni Authenticate e VMAuthenticate()</h4>
<p>Forniscono un modo semplice per autenticare la chiamata (per es per permettere le chiamate internazionali)</p>
<p>exten =&gt; 6101,n,Authenticate(1234)</p>
<p>con VMAuthenticate si può usare il PIN della mailbox</p>
<p>exten =&gt; =&gt; 6101,n,VMAuthenticate([mailbox][@context])</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/16/asterisk-voicemail-e-directory-sesta-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Un Dialplan interattivo (IVR) [quinta parte]</title>
		<link>http://www.ultimobyte.org/2009/02/15/asterisk-un-dialplan-interattivo-ivr-quinta-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/15/asterisk-un-dialplan-interattivo-ivr-quinta-parte/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 20:04:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=437</guid>
		<description><![CDATA[Un IVR non è nient&#8217;altro che un risponditore automatico che agisce in base ai toni DTMF che riceve in ingresso L&#8217;applicazione del Dialplan che svolge questo ruolo è Background() (simile all&#8217;applicazione Palyback con la differenza che si interrompe quando riceve i DTMF). Vediamo un esempio: [incoming] exten =&#62; 123,1,Answer() exten =&#62; 123,2,Background(menu) exten =&#62; 1,1,Playback(digits/1) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/ivrimage.gif"><img class="alignright size-thumbnail wp-image-440" title="ivrimage" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/ivrimage-150x150.gif" alt="" width="150" height="150" /></a>Un IVR non è nient&#8217;altro che un risponditore automatico che agisce in base ai toni DTMF che riceve in ingresso</p>
<p>L&#8217;applicazione del Dialplan che svolge questo ruolo è <strong>Background()</strong> (simile all&#8217;applicazione Palyback con la differenza che si interrompe quando riceve i DTMF). Vediamo un esempio:</p>
<p><em>[incoming]</em></p>
<p><em>exten =&gt; 123,1,Answer()</em></p>
<p><em>exten =&gt; 123,2,Background(menu)</em></p>
<p><em>exten =&gt; 1,1,Playback(digits/1)</em></p>
<p><em>exten =&gt; 2,1,Playback(digits/2)</em></p>
<p>Dopo la risposta se il chiamante premerà 2 sentirà il Palyback di 2&#8230;Alla pressione di un tasto Asterisk aspetta un paio di secondi per essere sicuro dell&#8217;azione da eseguire (1 e 123 iniziano con lo stesso numero&#8230;)</p>
<p><strong>I Timeout della funzione Background()</strong></p>
<p><em>Response Timout</em> : tempo di attesa prima che venga inserita la prima cifra (default=10 sec)</p>
<p><em>Digit Timeout</em>: tempo di attesa tra una cifra e l&#8217;altra (default 5 sec)</p>
<p>La funzione <strong>WaitExten()</strong> permette di modificare &#8220;in corsa&#8221; il RESPONSE TIMOUT<span id="more-437"></span></p>
<h4>Estensioni Speciali</h4>
<p>Per gestire situazioni speciali Asterisk usa estensioni speciali rappresentate da una singola lettera. Le più comuni sono:</p>
<p>- i : immissione di entry invalide<br />
- t : scadenza response time<br />
- T : durata massima di una chiamata<br />
- h : estensione hangup<br />
- s : estensione start</p>
<p>Estensione<strong> i </strong>: sta per &#8220;invalid&#8221;. Quando l&#8217;utente digita un numero invalido la chiamata viene passata all&#8217;estensione i</p>
<p>Estensione <strong>s</strong> :  vale per le chiamate analogiche in cui il nella chiamata non viene trasportata l&#8217;informazione del numero chiamato (c&#8217;è solo &#8220;anonymous&#8221;)</p>
<p>Estensione <strong>t</strong> : sta per &#8220;timout&#8221;. Quando il chiamante aspetta troppo tempo durante l&#8217;applicazione Background() o WaitExten() pria di digitare sulla tastiera la chiamata viene inviata all&#8217;estensione t</p>
<p>Estensione<strong> T</strong> : &#8220;absolute timeout&#8221; rappresenta la durata massima di una chiamata. Quando la lunghezza della chiamata supera il l&#8217;absolute timeout la chiamata viene inviata a questa estensione.</p>
<h4>Salti e loop</h4>
<p>Vediamo ora come implementare sia dei salti tra differenti estensioni sia un sistema che permetta di ripetere più volte (loop) l&#8217;esecuzione di uno stesso dialplan</p>
<h4>L&#8217;applicazione GoTo()</h4>
<p>Permette di saltare da un punto ad un altro all&#8217;interno del dialplan. Puoi avere da uno a tre parametri:</p>
<p>- un numero di priorità o una label (per salti all&#8217;interno della stessa estensione)</p>
<p><em>GoTo (<strong>priority</strong>)</em></p>
<p>- un estenzione ed una priorità (per salti all&#8217;interno dello stesso contesto)</p>
<p><em>GoTo (<strong>exten</strong>,<strong>priority</strong>)</em></p>
<p>- un contesto, un estensione ed una priorità (per salti in qualsiasi punto del dialplan)</p>
<p><em>Goto (<strong>context</strong>,<strong>exten</strong>,<strong>priority</strong>)</em></p>
<p>Esempio di GoTo con le label:</p>
<p>exten =&gt; 123,1,Answer()<br />
exten =&gt; 123,n,Wait(0,5)<br />
exten =&gt; 123,n(playit),Playback(tanks-for-calling)<br />
exten =&gt; 123,n,Goto(playit)</p>
<h4>Altre Applicazioni</h4>
<p><strong>Wait() </strong>: aspetta per il numero di secondi (o frazione di secondi).</p>
<p><strong>NoOp()</strong> : sta per &#8220;No Operation&#8221;. Viene utilizzata come un tool di debugging. Stama infatti sulla console l&#8217;argomento che le viene passato se il livello di verbosità impostato è maggiore/uguale a tre.</p>
<p><strong>Verbose()</strong> : come NoOp con in più la possibilità di impostare il livello di verbosità</p>
<p><span style="text-decoration: underline;">Vediamo un esempio di un IVR base</span>:</p>
<blockquote><p><code><br />
<strong></strong></code></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR EXTENSION</strong></p>
<p><strong>[general]<br />
static=yes<br />
writeprotect=no<br />
autofallthrough=yes<br />
clearglobalvars=no<br />
priorityjumping=no</strong></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR variables</strong></p>
<p><strong>[globals]</strong></p>
<p><strong>;*******************************************<br />
;*** EXTENSION CONTEXT</strong></p>
<p><strong>[users]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
;exten =&gt; _600x,1,Dial(SIP/${EXTEN},20)<br />
include =&gt; features</strong></p>
<p><strong>[features]<br />
exten =&gt; 6599,1,Answer()<br />
exten =&gt; 6599,n,Playback(hello-world)<br />
exten =&gt; 6599,n,wait(2)<br />
exten =&gt; 6599,n,Playback(good-evening)<br />
exten =&gt; 6599,n,Hangup()<br />
exten =&gt; 6598,1,Goto(demo-menu,s,1)</strong></p>
<p><strong>[demo-menu]<br />
exten =&gt; s,1,Answer()<br />
exten =&gt; s,n,Wait(1)<br />
exten =&gt; s,n,Background(press-1)<br />
exten =&gt; s,n,Background(or)<br />
exten =&gt; s,n,Background(press-2)<br />
exten =&gt; s,n,WaitExten(3) ;aspetta 3 secondi passati i quali va all&#8217;estensione t</strong></p>
<p><strong>exten =&gt; 1,1,Playback(you-entered)<br />
exten =&gt; 1,n,Playback(digits/1)<br />
exten =&gt; 1,n,Goto(s,1) ;</strong></p>
<p><strong>exten =&gt; 2,1,Playback(you-entered)<br />
exten =&gt; 2,n,Playback(digits/2)<br />
exten =&gt; 2,n,Goto(s,1)</strong></p>
<p><strong>exten =&gt; h,1,NoOp(Shucks, they hung up!!!)</strong></p>
<p><strong>exten =&gt; t,1,Playback(too-low)<br />
exten =&gt; t,n,Hangup()</strong></p>
<p><strong>exten =&gt; i,1,Playback(pbx-invalid)<br />
exten =&gt; i,n,Hangup()<br />
</strong></p></blockquote>
<h4>L&#8217;applicazione Dial()</h4>
<p>Permette a un endpoint (telefono) di chiamare un altro endpoint. Dial() processa la chiamata, se la chiamata viene risposta unisce i canali per la conversazione. Questa funzione ha 2 parametri principali</p>
<p>Device(s) &#8211; l&#8217;endpoint può essere specificato come una tecnologia e canale come SIP/6001 DAHDI/g1<br />
Quando si chiama attraverso un trunk o un service provider la sintassi è tecnologia/canale/numero. Es:</p>
<p style="text-align: center;">SIP/myprovider/55599123</p>
<p style="text-align: center;">tecnologia/canale/numerodachiamare</p>
<p style="text-align: left;">Timeout &#8211; per quanto tempo l&#8217;endpoint destinazione deve squillare prima di andarà avanti nelle priorità dell&#8217;estensione</p>
<p>E&#8217; possibile chiamare più enpoint contemporaneamente</p>
<p>exten =&gt; 123,1,Dial(SIP/6001/6002)</p>
<p>E&#8217; possibile anche chiamare un&#8217;altra estensione usando il Local channel</p>
<p>exten =&gt; 123,1,Dial(Local,456@Incoming)</p>
<p>Fa un dial sull&#8217;estensione (è come il GoTo())</p>
<p><!-- adman --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/15/asterisk-un-dialplan-interattivo-ivr-quinta-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Introduzione ad Dialplan [quarta parte]</title>
		<link>http://www.ultimobyte.org/2009/02/14/asterisk-introduzione-ad-dialplan-quarta-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/14/asterisk-introduzione-ad-dialplan-quarta-parte/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 19:56:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=419</guid>
		<description><![CDATA[Le istruzioni/strutture principali che permettono di creare un Dialpaln sono: - Contesti - Estensioni - Priorità - Applicazioni NB: Il dialplan di Asterisk è contenuto nel file principale di tutto il sistema che è extensions.conf I contesti I contesti suddividono il dialplan in varie sezioni. Nota Bene &#8211;&#62; Asterisk identifica i tipi d&#8217;interfaccia sui quali [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk-voip.jpg"><img class="aligncenter size-medium wp-image-420" title="asterisk-voip" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk-voip.jpg" alt="" width="291" height="209" /></a></p>
<p>Le istruzioni/strutture principali che permettono di creare un Dialpaln sono:</p>
<p>- Contesti</p>
<p>- Estensioni</p>
<p>- Priorità</p>
<p>- Applicazioni</p>
<p>NB: Il dialplan di Asterisk è contenuto nel file principale di tutto il sistema che è extensions.conf</p>
<h4>I contesti</h4>
<p>I contesti suddividono il dialplan in varie sezioni.</p>
<p><strong><span style="color: #666699;"><em>Nota Bene &#8211;&gt; </em></span></strong><span style="color: #666699;"><em>A</em></span><span style="color: #666699;"><em>sterisk identifica i tipi d&#8217;interfaccia sui quali si può telefonare con il termine <strong>canal</strong>, <strong>canale</strong>. Un canale può essere, per esempio, l&#8217;interfaccia ISDN (es. chan_dahdi.conf) o l&#8217;interfaccia Ethernet per il VoIP (es. sip.conf). La configurazione dei canali è fatta con dei file di configurazione *.conf, che si trovano nella directory /etc/asterisk.<span style="color: #666699;"> Nei vari canali, in base al flusso di ingresso, si può scegliere con quale contesto &#8211; presente nel file extension.conf &#8211; tale flusso deve essere gestito. (Questo argomento verrà ripreso successivamente).</span></em><em><br />
</em></span></p>
<p>Il nome di ogni contesto è racchiuso tra parentesi quadre. E&#8217; possibile includere un contesto dentro l&#8217;altro utilizzando la funzione include. Es</p>
<p>[users] ; questo è il contesto users<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
include =&gt; features ; in questo modo includo il contesto features dentro il contesto users</p>
<p>[features]<br />
exten =&gt; 6003,1,Dial(SIP/6003,20)<br />
exten =&gt; 6004,1,Dial(SIP/6004,20)<span id="more-419"></span></p>
<p><!-- adman --></p>
<h4>Le estensioni</h4>
<p>L&#8217;estensione (a differenza di quanto accade per un centralino standard) in Asterisk può essere condiderata come un insieme di azioni associate ad un nome</p>
<p style="text-align: center;">Sintassi:</p>
<p style="text-align: center;"><em><strong>exten =&gt; name, priority, application</strong></em></p>
<p><strong>exten =&gt;</strong> : <em>definisco un estensione</em></p>
<p><strong>name </strong><em>: il nome dell&#8217;estensione può essere numerico od alfanumerico</em></p>
<p><strong>priority : </strong><em>numero sequenziale</em></p>
<p><strong>application : </strong><em>azione</em></p>
<h4>La priorità</h4>
<p>La priorità è essenzialmente un numero sequenziale. Ciascuno step viene processato in ordine sequenziale</p>
<p><em>exten =&gt; 123,1, do something</em></p>
<p><em>exten =&gt; 123,2, do something else<br />
</em></p>
<p><em>exten =&gt; 123,3, do something different</em></p>
<p>Quando Asterisk termina di processare tutte le righe riaggancia la chiamata (auto-failthrough)</p>
<p>Dopo la priorità <strong>1</strong> (OBBLIGATORIA) posso mettere la priorità <strong>n</strong> che si incrementa automaticamente:</p>
<p><em>exten =&gt; 123,1, do something</em></p>
<p><em>exten =&gt; 123,n, do something else<br />
</em></p>
<p><em>exten =&gt; 123,n(label), do something different</em></p>
<p><em><strong>NB:</strong> ad ogni n posso associare un etichetta</em> (o label)</p>
<h4>Le Applcazioni</h4>
<p>Ciascuna priorità invoca un applicazione. Vediamone alcune</p>
<p><strong>Answer()</strong> <em>: apre il canale di comunicazione (risponde)</em></p>
<p><strong>PlayBack()</strong> <em>: fa ascoltare un suono che gli passo come argomento e ignora i DTMF. Di default risponde pure alla chiamata. La cartella in cui va a cercare il nome file passato come argomento è /var/lib/asterisk/sounds</em></p>
<p><em>NB: se voglio sentire i file in italiano devo modificare in sip.conf la riga language (nella sezione [default] in questo modo: language=it. Naturalmente dovrò a questo punto avere i file in italiano nella directory /var/lib/asterisk/sounds/it. Usare channel(language=it) per cambiare linguaggio dal Dialplan.</em></p>
<p><strong>Progress()</strong> <em>: manda un messaggio al chiamante senza rispondere (quindi tassare) alla chiamata.Può essere usata se l&#8217;operatore TELCO lo permette</em></p>
<p><strong>Hangup()</strong> <em>: butta giù la chiamata</em></p>
<p>Creiamo un dialplan che risponde ad un interno, faccia il play di un file audio e riaggancia la chiamata</p>
<p>extensions.conf</p>
<blockquote><p><code><br />
<strong><br />
;*******************************************<br />
;*** GLOBAL SETTING FOR EXTENSION</strong></code></p>
<p><strong>[general]<br />
static=yes<br />
writeprotect=no<br />
autofallthrough=yes<br />
clearglobalvars=no<br />
priorityjumping=no</strong></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR variables</strong></p>
<p><strong>[globals]</strong></p>
<p><strong>;*******************************************<br />
;*** EXTENSION CONTEXT</strong></p>
<p><strong>[users]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20)<br />
exten =&gt; 6002,1,Dial(SIP/6002,20)<br />
;exten =&gt; _600x,1,Dial(SIP/${EXTEN},20)<br />
include =&gt; features</strong></p>
<p><strong>[features]<br />
exten =&gt; 6599,1,Answer()<br />
exten =&gt; 6599,2,Playback(hello-world)<br />
exten =&gt; 6599,3,wait(2)<br />
exten =&gt; 6599,4,Playback(good-evening)<br />
exten =&gt; 6599,5,Hangup()<br />
</strong></p></blockquote>
<p>Ricordarsi sempre di ricaricare il file extensions.conf</p>
<p><strong># asterisk -vvvr</strong></p>
<p><strong>CLI&gt; dialplan reload</strong></p>
<p>Per vedere se Asterisk a caricato il nuovo dialpan:</p>
<p><strong>CLI&gt; dialplan show 6599@features</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/14/asterisk-introduzione-ad-dialplan-quarta-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Configurazione Base [terza parte]</title>
		<link>http://www.ultimobyte.org/2009/02/12/asterisk-configurazione-base-terza-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/12/asterisk-configurazione-base-terza-parte/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 21:04:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=405</guid>
		<description><![CDATA[Siamo giunti al primo passo per vedere Asterisk all&#8217;opera. I file che andremo ad editare sono extensions.conf e sip.conf. E&#8217; conveniente rinominare quelli che Aserisk propone (tropo lunghi e complessi) e cominciare con due file vuoti. In Asterisk qualsiasi conversazione implica 2 chiamate: dal telefono chiamante ad asterisk e da asterisk al telefono chiamato two [...]]]></description>
			<content:encoded><![CDATA[<p>Siamo giunti al primo passo per vedere <strong>Asterisk all&#8217;opera</strong>. I file che andremo ad editare sono extensions.conf e sip.conf. E&#8217; conveniente rinominare quelli che Aserisk propone (tropo lunghi e complessi) e cominciare con due file vuoti.</p>
<p>In Asterisk qualsiasi conversazione implica 2 chiamate:<br />
dal telefono chiamante ad asterisk e da asterisk al telefono chiamato two legs:</p>
<p><a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/2legs.gif"><img class="aligncenter size-medium wp-image-406" title="2legs" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/2legs.gif" alt="" width="300" height="60" /></a>Nel caso che i due telefoni siano degli endpoint sip notiamo che sia ilflusso di segnalazione SIP sia il flusso voce (RTP) passa sempre per Asterisk. Questo comportamento è diverso dallo standard SIP dove il flusso RTP avviene direttamente tra i due telefoni.</p>
<p>Ma entriamo nel dettaglio. Vediamo ora come creare due estensioni (SIP) e come farle paralre tra di loro.<br />
Editiamo il file <span style="color: #666699;"><strong>sip.conf</strong></span> nel seguente modo <span id="more-405"></span></p>
<blockquote><p><code><strong><br />
;*******************************************<br />
;*** GLOBAL SETTING</strong></code></p>
<p><strong>[general]<br />
context=default<br />
bindport=5060<br />
bindaddr=0.0.0.0<br />
srvlookup=yes<br />
language=en</strong></p>
<p><strong>;*******************************************<br />
;*** REGISTER STATEMENTS</strong></p>
<p><strong>;*******************************************<br />
;*** FRIENDS, USER AND PEERS&#8230;</strong></p>
<p><strong>[6001] </strong> ;il nome dell&#8217;account. Quando si config il tel sip questo è lo UserName<strong><br />
type=friend </strong>;l&#8217;account di tipo friend può fare e ricevere chiamate<strong><br />
host=dynamic </strong>;dice ad * che il tel ha un IP dimnamico e si registrerà all&#8217;accenzione<strong><br />
secret=zoiper </strong>;è la password dell&#8217;account<strong><br />
context=users </strong>;Quando il telefono farà una chiamata questa chiamata verrà gestita<strong><br />
</strong> ;in base a come viene indicato nel contesto users del file <strong>extension.conf</strong></p>
<p><strong>[6002]<br />
type=friend<br />
host=dynamic<br />
secret=polycom<br />
context=users<br />
</strong></p></blockquote>
<p><em><strong>NB_1:</strong> Il valore tra parenesi quadre rappresenta il nome dell&#8217;account voip. Generalmente è utile utilizzare come valore del nome account lo stesso dell&#8221;estensione a cui sarà associato l&#8217;account. Questo concetto sarà più chiaro quando si definirà il dialplan nel flie extension.conf</em>.</p>
<p><em><strong>NB_2</strong>: Cominciamo con il dire che la variabile type può assumere valore user, peer e friend. Cominciamo con il dire che user si utilizza per ricevere chiamate da quell&#8217;account, peer si usa quando di devono fare chiamate con quell&#8217;account e friend quando si devono fare entrambe le cose</em></p>
<p>A questo punto è necessatio far ricaricare ad Asterisk la configurazione modificata. Per fare questo non c&#8217;è bisogno si far ripartire il servizio ma è sufficente entrare in modalità CLI e fare il restart solo della parte modificata (in questo caso il file sip.conf)</p>
<p><strong>#asterisk -r<br />
CLI&gt;sip reload<br />
CLI&gt;sip show users<br />
CLI&gt;sip show peers</strong></p>
<p>Ora dobbiamo aggiungere le estensioni che permetteranno di inviare le chiamate ai vari account<br />
editiamo il file <span style="color: #666699;"><strong>extensions.conf</strong></span> nel seguente modo</p>
<blockquote><p><strong><br />
;*******************************************<br />
;*** GLOBAL SETTING FOR EXTENSION</strong></p>
<p><strong>[general]<br />
static=yes<br />
writeprotect=no<br />
autofallthrough=yes<br />
clearglobalvars=no<br />
priorityjumping=no</strong></p>
<p><strong>;*******************************************<br />
;*** GLOBAL SETTING FOR variables</strong></p>
<p><strong>[globals]</strong></p>
<p><strong>;*******************************************<br />
;*** EXTENSION CONTEXT</strong></p>
<p><strong>[users]<br />
exten =&gt; 6001,1,Dial(SIP/6001,20) </strong><strong><br />
exten =&gt; 6002,1,Dial(SIP/6002,20) </strong><strong>;</strong> &#8211;il nome dell&#8217;estensione e dell&#8217;account sip non devono  essere uguali per forza, lo sono per comodità <strong>&#8211;;</strong><br />
<strong><br />
</strong></p></blockquote>
<p>Se dovessi inserire tante exten per quanti sono gli interni di un grande centralino sarebbe un pò stancante e potrei incorrere in errori. Per riassumere le n estensioni (con n=100 interni da 0 a 99) posso utlilzzare la seguente notazione:</p>
<p><strong>exten =&gt; _60XX,1,Dial(SIP/${EXTEN},20</strong></p>
<p><em><strong>NB</strong>: L&#8217;underscore (<strong>_</strong>) prima del nome dell&#8217;estensione indica ad Asterisk che la stringa che segue va &#8220;interpretata&#8221;. La variabile <strong>${EXTEN}</strong> prende il valore del nome dell&#8217;estensione</em><strong>.<br />
</strong></p>
<p>Anche in questo caso facciamo ricaricare ad Asterisk le modifiche apportate al nostro dialplan (al file extensions.conf)</p>
<p><strong>#asterisk -r<br />
CLI&gt;dialplan reload</strong></p>
<p>Con il comando dialplan show users vengono visualizate le estensioni nel contesto user<br />
<strong> CLI&gt;dialplan show users</strong></p>
<p><!-- adman --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/12/asterisk-configurazione-base-terza-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Intallazione [seconda parte]</title>
		<link>http://www.ultimobyte.org/2009/02/11/asterisk-intallazione-seconda-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/11/asterisk-intallazione-seconda-parte/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 20:37:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=387</guid>
		<description><![CDATA[Scelta la distribuzione di Linux su cui installare il nostro PBX Software come prima scelta è possibile installare direttamente il pacchetto relativo alla distribuzione stessa. Come seconda (ma forse preferibile) scelta è chiaramente possibile installare Asterisk dai sorgenti. Vediamo quali sono i passi principali. Preparazione del sistema per l&#8217;installazione di Asterisk Prima di installare le [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk-installazione.png"><img class="alignright size-medium wp-image-388" title="asterisk-installazione" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk-installazione-300x192.png" alt="" width="300" height="192" /></a>Scelta la distribuzione di Linux su cui installare il nostro PBX Software come prima scelta è possibile installare direttamente il pacchetto relativo alla distribuzione stessa. Come seconda (ma forse preferibile) scelta è chiaramente possibile installare Asterisk dai sorgenti. Vediamo quali sono i passi principali.</p>
<h4>Preparazione del sistema per l&#8217;installazione di Asterisk</h4>
<p>Prima di installare le varie componenti di Asterisk sono necesari i seguenti paccetti:<br />
- compilatore gcc<br />
- OpenSSL e le relative librerie di sviluppo<br />
- ncurses e ncursers-devel<br />
- Zlib<br />
- librerie newt e newt-devel (per le DAHDI utilities)<br />
- Curl (pre far interagire Asterisk con i siti web)<br />
- Sendmail o Postfix (per far inviare le voicemail all&#8217;indorozzo di posta desiderato)<br />
<!-- adman --></p>
<h4>Le componenti di Asterisk</h4>
<p>Per l&#8217;installazione di Asterisk sono necessarie tre componenti (sorgenti) fondamentali<br />
- <strong>libpri</strong>: gestisce le interfaccie PRI ISDN (da installare solo se presenti schedwe T1/E1/J1)<br />
- <strong>DAHDI</strong>: driver per le schede analogiche e/o digitali. Fornisce anche il &#8220;system timing&#8221; (clock) in assensa delle schede hardware<br />
- <strong>Asterisk</strong>: codic sorgente di Asterisk<br />
- (opzionale) Asterisk-addons<br />
tutto dal seguente link: http://downloads.digium.com/pub/telephony/<span id="more-387"></span></p>
<h4>Compiliamo i codici</h4>
<p>In questa circostanza è molto importante seguire un ordine ben preciso:</p>
<p>(1) -&gt; libpri</p>
<p>(2) -&gt; DAHDI (ex Zaptel)</p>
<p>(3) -&gt; Asterisk</p>
<p>Cominciamo con lo scompattare i pacchetti:</p>
<blockquote><p><code><br />
<strong><br />
# tar -zxvf libpri-1.4.x.tar.gz<br />
# tar -zxvf dahdi-linux-complete-2.x.tar.gz<br />
# tar -zxvf asterisk-1.6.x.tar.gz<br />
</strong></code></p></blockquote>
<p>Installazione delle libpri (per la gestione delle schede dei flussi primari (ISDN PRI)</p>
<blockquote><p><code><br />
<strong><br />
# cd libpri-1.4.x<br />
# make clean<br />
# make<br />
# make install<br />
# cd ..<br />
</strong></code></p></blockquote>
<p>i driver delle  schede digium</p>
<blockquote><p><code><br />
<strong><br />
# cd dahdi-linux-complete-2.x<br />
# make all<br />
# make install<br />
# make config<br />
# cd ..<br />
</strong></code></p></blockquote>
<p>e infine Asterisk</p>
<blockquote><p><code><br />
<strong><br />
# cd asterisk-1.6.x<br />
# ./configure<br />
# make menuselect<br />
</strong></code></p></blockquote>
<p><em><strong>NB:</strong> (quest&#8217;ultimo comando permette di aprire un menu che permetterà la selezionare dei moduli da compilare e l&#8217;impostazione di aclune opzioni) In questo step sotto la sezione &#8220;PBX Modules&#8221; va deselezionato pbx_ael (AEL: Asterisk Extention Language-&gt; è linguaggio di programmazione sperimentale) . Questo perchè evitando il bulding di questo modulo si evitaeràad Asterisk di  inviare messaggi di warning o di errore durante lo start-up o durente il reload del file extension.conf</em></p>
<blockquote><p><code><br />
<strong><br />
# make<br />
# make install<br />
# make samples<br />
# make config<br />
# cd ..</strong></code></p>
<p><strong># reboot<br />
</strong></p></blockquote>
<p>Alla fine dell&#8217;installazione dovremmo avere le seguenti directory:<br />
/user/sbin/asterisk/         -&gt; il binario<br />
/etc/asterisk/             -&gt; i file di configurazione<br />
/usr/lib/asterisk/modules     -&gt; i moduli caricati, i codec e i canali<br />
/var/lib/asterisk/sound/     -&gt; gli Asterisk sound prompt<br />
/var/lib/asterisk/moh/         -&gt; musiche di attesa<br />
/var/lib/asterisk/         -&gt; il database AstDB<br />
/var/spool/asterisk/         -&gt; call information<br />
/var/log/asterisk/         -&gt; i log<br />
/var/log/asterisk/cdr-csv/     -&gt; dettagli delle chiamate</p>
<p>A questo punto Asterisk è installato come servizio (/etc/init.d/asterisk stop|start)<br />
per entrare nella modalitaà CLI basta digitare<br />
<strong># asterisk -r</strong></p>
<p>(meglio <strong>#asterisk -vvvr</strong> dove il numero delle &#8220;v&#8221; indica il grado di verbosità della CLI)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/11/asterisk-intallazione-seconda-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk &#8211; Introduzione [prima parte]</title>
		<link>http://www.ultimobyte.org/2009/02/10/asterisk-introduzione-prima-parte/</link>
		<comments>http://www.ultimobyte.org/2009/02/10/asterisk-introduzione-prima-parte/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 22:40:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articolo Tecnico]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Voip]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.ultimobyte.org/?p=371</guid>
		<description><![CDATA[Cominciamo con oggi una serie di post su questo ormai usatissimo (open source) PBX software. L&#8217;obbiettivo è quello di creare un manuale (o meglio una guida) su Asterisk  da consultare in ogni momento. Asterisk nasce nel 1999 da un idea di Mark Spencer fondatore della LSS (Linux Support Services). Trovandosi di fronte alla necessità di [...]]]></description>
			<content:encoded><![CDATA[<p><!-- adman --><br />
<a href="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk.png"><img class="alignleft size-medium wp-image-372" title="asterisk" src="http://www.ultimobyte.org/wp-content/uploads/2009/02/asterisk-300x168.png" alt="" width="226" height="133" /></a>Cominciamo con oggi una serie di post su questo ormai usatissimo (open source) PBX software. L&#8217;obbiettivo è quello di creare un manuale (o meglio una guida) su Asterisk  da consultare in ogni momento.<br />
<strong>Asterisk </strong>nasce nel 1999 da un idea di <strong>Mark Spencer</strong> fondatore della LSS (Linux Support Services). Trovandosi di fronte alla necessità di avere un centralino software gestibile a bassi costi e non trovando sul mercato nulla che lo soddisfacesse decide di implementare lui stesso un sistema che fosse il più versatile possibile. Da qui il nome Asterisk  (&#8220;<strong>*</strong>&#8221; che rappresenta il caratter jolly sotto linux), un sistema cioè in grado di fare qualsiasi cosa. Nel 2002 la LSS vien inglobata nella <strong>Digium</strong> che sviluppava ( esviluppa tuttora) le schede hardware utilizzate da Asterisk.<span id="more-371"></span></p>
<h3>Componenti e strutture di Asterisk</h3>
<p>L&#8217;architettura di asterisk può essere suddivisa in tre grandi parti<br />
1) Le componenti del nucleo centrale (Core System Components)<br />
- Dialpaln<br />
- CLI<br />
- Applicazioni<br />
- Risorse<br />
2) Le tecnologie o i protocolli (Channel Drivers) &#8211; canali per l&#8217;interfacciamento con l&#8217;esterno.<br />
Ogni canale è una tecnologia (es scheda primaria) o un protocollo (SIP)<br />
- DAHDI (ex Zaptel)<br />
- SIP<br />
- IAX2<br />
- H323<br />
3) Interfaccia esterna (Drivers &amp; Converters)<br />
- Audio &amp; Video CODEC<br />
- System Configuration Drivers</p>
<h3>Configurazione Asterisk</h3>
<p>Per default Asterisk carica la sua configurazione da una serie di file di testo che generalmente si trovano nel path <strong>/etc/asterisk</strong>.<br />
Tutti i file hanno estensione &#8220;.conf&#8221; e sono degli <em>standard ASCII text file</em> che possono essere modificati con un qualsiasi editor. Ciascuno di questi file (anche se hanno funzioni diverse) ha la stessa struttura: sono infatti divisi in <strong>sezioni</strong> (<strong>o contesti</strong>). Le sezioni dei vari file sono identificabili dal fatto che il loro nome viene racchiuso tra parentesi quadre. Un contesto può essere visto come una serie di istruzioni che Asterisk deve eseguire all&#8217;arrivo di una chiamata che noi decidiamo di far gestire da questo contesto<br />
<strong>[section-heading]<br />
setting=true ; questo è un commento<br />
; questo pure<br />
; &#8211; - questo è un commento su<br />
righe diverse &#8211; - ;</strong></p>
<p>I cinque file più importanti per la configurazione di asterisk sono (in ordine alfabetico e non di importanza):</p>
<blockquote><p><code><br />
<strong>asterisk.conf<br />
chan_dahdi.conf (vecchio zaptel.conf)<br />
externsion.conf<br />
iax.conf<br />
sip.conf</strong><br />
</code></p></blockquote>
<p><span style="color: #666699;"><strong>asterisk.conf</strong></span>: è il file che dice ad asterisk dove cercare gli altri file di configurazione<br />
Praticamente non va mai editato tranne che per qualche opzione del tipo &#8220;nocolor=no/yes&#8221; per abilitare/disabilitare l&#8217;ANSI color nella CLI</p>
<p><span style="color: #666699;"><strong>chan_dahdi.conf</strong></span>: contiene le configurazioni per tutte le schede telefoniche (digium) analogiche e/o digitali. Questo file &#8220;lavora&#8221; in congiunzione con un altro file -&gt;<strong>/etc/dahdi/system.conf </strong>che rappresenta l&#8217;astrazione tra il sistema Linux e l&#8217;hardware delle schede</p>
<p><span style="color: #666699;"><strong>extensions.conf</strong></span>: contiene la configurazione del dialplan. In pratica dice ad asterisk come maneggiare le chiamate (sia in ingresso che in uscita)</p>
<p><span style="color: #666699;"><strong>iax.conf</strong></span>: contiene la configurazione del canale IAX2 e  la configurazione per tutti di device IAX2 attestati su Asterisk</p>
<p><span style="color: #666699;"><strong>sip.conf</strong></span>: contiene la configurazione del canale SIP e  la configurazione per tutti di device (tutti gli interni e i provider esterni) SIP attestati su Asterisk</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ultimobyte.org/2009/02/10/asterisk-introduzione-prima-parte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

