Utilizzo e amministrazione di Asterisk



Похожие документы
Asterisk The Open Source PBX!

Centralino PBX Voice Over Ip

Corso di Applicazioni Telematiche


Utilizzare 4CBOX come centralino significa avere un sistema all inclusive oltre a

La funzionalità IP-PBX del Pirelli consente di effettuare chiamate utilizzando una rete IP anziché la rete standard.

Centralino telefonico OfficeServ 7100


PROGETTO ASTERISK. ITIS E. MAJORANA Cesano Maderno Articolazione TELECOMUNICAZIONI. Server di comunicazione multimediale VoIP OPEN SOURCE

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

SIEMENS GIGASET S450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

Aethra Star Voice 1042

PIATTAFORMA PROFESSIONALE PER SOLUZIONI DI TELEFONIA VOIP E SUPPORTO INTEGRAZIONE CON CRM BCOM

IL CENTRALINO VoIP. Schema progetto: Work-flow. Hydra Control

User. Belluno. Group. Soluzioni Linux per il VoIP. Soluzioni Linux per il Voip. Linux. Davide Dalla Rosa e Massimo De Nadal. Belluno, 27 novembre 2004

Asterisk* - IL centralino linux. di Pino Degan Pindeg at gmail.com

SIEMENS GIGASET C450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

19. LA PROGRAMMAZIONE LATO SERVER

ADATTATORE ANALOGICO VOISPEED V-6019

over. Soluzioni Voice.

ZEROTRUTH & ASTERISK. ZEROTRUTH AUTOREGISTRAZIONE CON ASTERISK

Receptionist 2.0. La soluzione semplice ed affidabile per il contact center

SIEMENS GIGASET S450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

Hardware delle reti LAN

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

P ROGETTO V.O.C.I. HOWTO

PROGETTO V.O.C.I. VOICE OVER CONSORTIUM INFRASTRUCTURE update Massimo Valiante Workshop Roma

Reti di Telecomunicazione Lezione 7

SIEMENS GIGASET S685 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

ASTERISK CONFIGURAZIONE EUTELIAVOIP

P R O G E T T O V. O. C. I. H O W T O

MyFRITZ!, Dynamic DNS e Accesso Remoto

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Lo scenario: la definizione di Internet

Mediatrix 3000 & Asterisk

Manuale per la configurazione di AziendaSoft in rete

HOWTO CALL PICKUP. Asterisk_Call_Pickup.doc

Dr. Andrea Niri aka AndydnA ANDYDNA.NET S.r.l.

Esercitazione di laboratorio su Asterisk

DbLan Group Srl Professional VoiP Products. Telephony Intelligence

* Sistemi Mobili e VOIP *

ENUM. fai da te. Marco Sommani CNR Ist. Informatica e Telamatica - Pisa marco.sommani@iit.cnr.it

La VPN con il FRITZ!Box Parte II. La VPN con il FRITZ!Box Parte II

Publicom Srl Direzione tecnico commerciale. Servizio VoIP RTRT

IPBX Office IPBX Office

Informazione riservata e confidenziale - Vietata la riproduzione e distribuzione non autorizzata Copyright Nextel Italia

Contact Center 2.0 BBF Roma 25 Novembre

Esercitazione di laboratorio su Asterisk

VoipExperts.it SkyStone - Introduzione

IP 500 GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

Con un click il tuo lavoro diventa semplice e produttivo.

Grandstream Networks, Inc.

Configurazione VOIspeed IP6060

Telefonare su PC Panoramica

Distribuzione internet in alberghi, internet cafè o aziende che vogliono creare una rete "ospite"

Notazioni generali di configurazione e funzionamento del servizio OlimonTel VOIP Sip2

Introduzione alle applicazioni di rete

Aethra Stargate AS2111

OfficeServ Giugno 2007

MYSUI Star Voice 1042

Contenuto del pacchetto

DSL-G604T Wireless ADSL Router

Inizializzazione degli Host. BOOTP e DHCP

Blue s Hotel Pro Il software che hai sempre desiderato per il tuo Hotel!

eprogress la soluzione completa per la gestione della relazione e del contatto

VIPA 900-2E641 PSTN VPN

Una Soluzione di NAT Traversal per un sistema di comunicazione VOIP per una PMI

Account SIP Multi User Manuale di Configurazione (Versione Company)

Manuale Utente Portale utente, codici di accesso & Casella vocale per il centralino 3CX Versione 7.0


INDIRIZZI IP AUTORIZZATI

Prima di iniziare la procedura d installazione, verificare che siano disponibili tutte le informazioni e le attrezzature necessarie

Guida per la configurazione dei Gateway beronet con SIP Trunk VoIP Voice

RETI DI COMPUTER Reti Geografiche. (Sez. 9.8)

Centralino Telefonico Samsung OfficeServ 7030

Presentazione Data Base

SIP-Phone 302 GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

FRITZ!Box come centralino telefonico

Un architettura di servizi integrati di comunicazione su rete IP per una PMI

Panasonic. KX-TDA Hybrid IP-PBX Systems Installazione PAServices. Centrali Telefoniche KX-TDA e TDE Informazione Tecnica N 047

l'introduzione a Voice over IP

Interfacciare un ponte ripetitore DMR Hytera con un centralino telefonico (PBX) digitale VOIP - PARTE 1

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g

App Android Client 1

Aethra Star Voice 1204

Reti di Telecomunicazione Lezione 6

Adattatore FXS CISCO SPA112

La VPN con il FRITZ!Box - parte II. La VPN con il FRITZ!Box Parte II

SIP PHONE Perfectone IP301 Manuale Operativo PHONE IP301 GUIDA ALL INSTALLAZIONE

Office e Applicativi sw

Guida Google Cloud Print

SOLUZIONI PER LA TELEASSISTENZA Server Privato

UNICO WEB DbLan Group SRL

Транскрипт:

Linux Day 25 ottobre 2014 Giuseppe Fabiano Utilizzo e amministrazione di Asterisk fabianosoftware.it @beppefabiano

PBX Private Branch Exchange E' una centrale telefonica per uso privato, utilizzata nelle aziende per fornire una rete telefonica interna.

Perchè un PBX? Funzioni principali di un PBX: Risparmio sul numero di canali di fonia da attivare sulla rete pubblica Comunicazione diretta tra le utenze interne senza utilizzare la rete pubblica Trasferimento delle chiamate Servizi e funzionalità aggiuntivi (interni ed esterni)

Qualche esempio... Menù vocale (IVR, Interactive Voice Response) Segreteria telefonica unificata Documentazione del traffico in entrata ed uscita Automatic Call Distribution (ACD) Molto altro, ma soprattutto: Computer Telephony Integration (CTI)

Computer Telephony Integration Tecnologia che permette di interfacciare un sistema telefonico con un sistema informatico aziendale.

Computer Telephony Integration Le interazioni tra sistema telefonico ed informatico avvengono tipicamente: mediante interrogazioni ad un database mediante interfacce API

Quale PBX? Si possono individuare due tipi di soluzioni PBX: PBX proprietario Basato su hardware specifico, modifiche al software costose o impossibili Esempi: Siemens, Samsung, Ericsson/Aastra,... PBX software, open source Basato su hardware generico, software con codice aperto, gratuito e modificabile Esempi: Asterisk, Elastix, Freeswitch,...

PBX Open Source Implementazione libera (GPL) di un software PBX, con le stesse funzioni di altri sistemi proprietari, ma con un costo inferiore ed una maggiore flessibilità.

Asterisk Principali caratteristiche: codice sorgente in C, licenza GPL utilizza hardware generico in ambiente linux esistono varie distribuzioni pronte all'uso estremamente modulare e flessibile non è soltanto un centralino, ma un vero e proprio framework per applicazioni CTI

Asterisk: non solo VoIP Asterisk supporta tutti i principali protocolli VoIP: SIP, H.323, IAX Ma anche le tradizionali linee digitali e analogiche: ISDN, PSTN

Asterisk: non solo VoIP Esempio di hardware per il supporto di linee analogiche: Digium TDM400P One (1) - four (4) analog ports PCI or PCI Express bus architectures Combine line (FXO) and station (FXS) modules Accepts up to four (4) single-port modules Optional DSP-based carrier grade echo cancellation module La struttura modulare permette di configurare la scheda con interfacce FXO ed FXS secondo le necessità.

Asterisk: non solo VoIP Esempio di hardware per il supporto di linee ISDN: Patton SmartNode 4630 Series 3/5 ISDN BRI So ports, 4/8 low-bandwidth voice or T.38 fax calls CLIP/CLIR, hold, transfer, and much more Web-based management, SNMP, command line interface, & autoprovisioning for automated configuration & SW upgrades Two 10/100 Ethernet ports, access router with NAT, Firewall, PPPoE, DHCP, DynDNS & VPN with IPsec SIPv2, H.323v4, ISDN, DSS1, QSIG, T.38, fax bypass

Asterisk: il concetto di canale Il canale rende trasparenti per Asterisk i dettagli relativi alla comunicazione con una specifica tecnologia o protocollo. Ogni tecnologia o protocollo supportato da Asterisk deve disporre di un proprio driver di canale E' un esempio di struttura modulare e flessibile.

Asterisk: il concetto di canale CANALE DRIVER SIP chan_sip.so DRIVER H.323 chan_ooh323.so DRIVER IAX2 chan_iax2.so DRIVER DAHDI chan_dahdi.so VoIP ISDN/PSTN

Asterisk: esempi di canale canale SIP canale H.323 canale IAX2 canale DAHDI (ISDN, PSTN) Ogni canale possiede un file di configurazione specifico, di solito in /etc/asterisk Vediamo un esempio: sip.conf

Struttura di sip.conf [general] language=it_it [SIP-1001] type=friend host=dynamic secret=1234 context=office [SIP-1002]... Parametri generali di configurazione del canale Definizione del dispositivo SIP-1001 Password autenticazione dispositivo Contesto che gestirà le chiamate in ingresso Definizione di un altro dispositivo SIP-1002

Registrazione dispositivo SIP Host: 192.168.X.X Username: SIP-1001 Password: 1234 Verifichiamo se il dispositivo è registrato correttamente: $ asterisk -r *CLI> sip show peers

Altre tipologie di canale Altri tipi di canale si configurano attraverso uno specifico file di configurazione: h323.conf, iax.conf, ecc. Per ogni dispositivo collegato deve essere definito un contesto per le chiamate in ingresso. La struttura modulare caratterizza ogni aspetto funzionale di Asterisk, e non soltanto la comunicazione sui canali.

Gestione dei moduli All'avvio Asterisk carica dinamicamente una serie di moduli, ognuno dei quali implementa determinate funzionalità. Si tratta fisicamente di file.so (shared object) presenti nella cartella /usr/lib/asterisk/modules Il caricamento dinamico dei moduli è gestito attraverso il file di configurazione modules.conf, presente in /etc/asterisk.

modules.conf [modules] autoload=yes Carica automaticamente tutti i moduli in /usr/lib/asterisk/modules... noload => chan_modem.so... tranne quelli specificati (es. obsoleti)

Tipologie di moduli Ciascun modulo di Asterisk appartene ad una specifica area funzionale: Applications Bridging Call detail recording (CDR) Channel event logging (CEL) Channel drivers Codec translators Format interpreters Dialplan functions PBX Resource Il prefisso del nome identifica la tipologia (es. chan_sip, app_dial, res_odbc)

res_odbc Attraverso il modulo res_odbc Asterisk è in grado di interagire con varie tipologie di database esterni, utilizzando il layer ODBC. A cosa può servire? Configurazione di Asterisk su tabelle invece che su file Gestione strutturata dei log chiamate (CDR) Computer Telephony Integration (CTI)

Struttura del collegamento ODBC ASTERISK LINUX DATABASE MODULO ASTERISK che necessita di collegamento al database res_odbc unixodbc ODBC driver res_odbc.conf /etc/odbc.ini /etc/odbcinst.ini MySQL, Postgres SQL, SQL Server e qualsiasi altro DB che disponga di driver ODBC Il layer ODBC astrae la particolare tecnologia di database utilizzata. Ogni implementazione di una particolare tecnologia di database è confinata all'interno del driver ODBC.

Asterisk al lavoro: il dialplan Il dialplan è il cuore del funzionamento di Asterisk: attraverso script, controlla il flusso delle chiamate e definisce il comportamento del sistema in risposta a particolari eventi. Il dialplan si configura in /etc/asterisk/extensions.conf

Struttura di extensions.conf [general] Impostazioni generali del dialplan [global] Definizione delle variabili globali [context1] exten => 1000,1,Answer() exten => 1000,2,Playback(hello-world) exten => 1000,3,Hangup() Definizione del contesto context1 [context2]... Definizione di un altro contesto

Contesto Il contesto è il punto di ingresso nel dialplan per un dispositivo: sip.conf [SIP-1001] host = dynamic secret = 1234 context = context1 extensions.conf [general] [global] [context1] exten => 1000,1,Answer() exten => 1000,2,Playback(hello-world) exten => 1000,3,Hangup() [context2]... Usando i contesti è possibile implementare politiche di sicurezza.

Estensione In Asterisk l'estensione è una serie univoca di passi, ognuno contenente una priorità ed un'applicazione, con i quali Asterisk gestirà la chiamata entrante. Definiamo nel dialplan l'estensione 1000 : Estensione Priorità exten => 1000,1,Answer() exten => 1000,2,Playback(hello-world) exten => 1000,3,Hangup() Applicazione

Miglioriamo la scrittura [context1] exten => 1000,1,Answer() exten => 1000,2,Playback(hello-world) exten => 1000,3,Hangup() [context1] exten => 1000,1,Answer() same => n,playback(hello-world) same => n,hangup()

Applicazione Dial() Scenario due dispositivi SIP registrati nello stesso contesto (SIP-1001 e SIP-1002) Obiettivo inviare e ricevere chiamate tra i due dispositivi exten => _100Z,1,Answer() same => n,playback(stai-chiamando) same => n,saydigits(${exten}) same => n,dial(sip/sip-${exten}) same => n,hangup() Pattern matching Lettura del numero chiamato Collegamento dei due dispositivi

Esempio: menù vocale (IVR) Scenario tre dispositivi SIP registrati (SIP-1001, SIP-1002, SIP-1003) Obiettivo il terzo dispositivo chiama l'estensione 1011, risponde un menù vocale che lo mette in contatto con 1001 se digita 1, oppure con 1002 se digita 2 digitando 9, la conversazione termina digitando un numero non valido viene pronunciato un messaggio di errore se non si digita nulla, viene ripetuto il messaggio di benvenuto

Esempio: menù vocale (IVR) [office] exten => 1011,1,Goto(voice-menu,start,1) [voice-menu] exten => start,1,answer() same => n,background(custom/voice-menu) same => n,waitexten(5) exten => 1,1,Playback(digits/1) same => n,playback(followme/pls-hold-while-try) same => n,wait(2) same => n,dial(sip/sip-1001) exten => 2,1,Playback(digits/2) same => n,playback(followme/pls-hold-while-try) same => n,wait(2) same => n,dial(sip/sip-1002) exten => 9,1,Playback(custom/goodbye) same => n,wait(2) same => n,hangup() exten => i,1,playback(custom/invalid-option) same => n,wait(1) same => n,goto(voice-menu,start,1) exten => t,1,goto(voice-menu,start,1)

Esempio: interazione con database (CTI) Scenario implementazione di un servizio CTI per la comunicazione dell'autolettura Obiettivo Nota l'utente chiama il servizio e digita il proprio codice cliente e l'autolettura viene chiesta conferma all'utente dei dati inseriti viene verificata l'esistenza del codice cliente nel database CRM se il cliente esiste, l'autolettura viene registrata nel database CRM In un contesto reale, sarebbe probabilmente necessaria qualche forma di autenticazione dell'utente (PIN), che in questo esempio viene tralasciata

Esempio: interazione con database (CTI) [USER_EXISTS] dsn=asterisk-crm readsql = SELECT IF(COUNT(1)>0, 1, 0) FROM users WHERE id = '${SQL_ESC(${ARG1})}' func_odbc.conf [REGISTER _VALUE] writesql = UPDATE users SET counter = '${SQL_ESC(${VAL1})}' WHERE id = '${SQL_ESC(${ARG1})}'

Esempio: interazione con database (CTI) exten => start,1,answer() same => n,playback(welcome&prompt-user) same => n,read(userid) same => n,playback(prompt-value) same => n,read(uservalue)... riascolta il valore immesso e premi 1 per confermare extensions.conf exten => 1, 1, GotoIf($[${ODBC_USER_EXISTS(${USERID})}]? register : unknown) same => n(register), Set(ODBC_REGISTER_VALUE(${USERID})=${USERVALUE}) same => n, GotoIf($[${ODBCROWS} > 0]? ok : ko)... conferma esito della registrazione

Esempio: pulsante di chiamata da CRM Scenario implementazione del pulsante chiama nel software CRM Obiettivo l'ultilizzatore del software CRM clicca sul pulsante chiama accanto al nome il software CRM invia comandi attraverso la Asterisk Manager Interface (AMI) il telefono sulla scrivania dell'utente squilla quando l'utente alza il ricevitore, viene automaticamente composto il numero di telefono presente nel CRM

Asterisk Manager Interface (AMI) $ telnet localhost 5038... Action: Login Username: admin Connessione attraverso TCP socket sulla porta 5038 (default) Richiesta di autenticazione Secret: 1234 <CR> Response: Success Message: Authentication accepted Action: Ping Invio del comando ping <CR> Response: Success Ping: Pong

Esempio: organizzazione del dialplan Scenario gestione di logiche complesse nel dialplan Obiettivo implementare funzionalità che richiedono molto codice, o che necessitano dell'utilizzo di un vero e proprio linguaggio di programmazione rendere robusto e mantenibile il codice del dialplan riutilizzare codice già scritto per le funzionalità da implementare superare il limiti del linguaggio di "scripting" di Asterisk

Asterisk Gateway Interface (AGI) Dialplan Asterisk inbound.php [phpagi] exten => 800,1,AGI(inbound.php) #!/usr/bin/php -q <?php require('phpagi.php'); $agi = new AGI(); $agi->answer(); $agi->stream_file("hello-world"); $agi->hangup();?>

Asterisk Gateway Interface (AGI) STDOUT comunicazione bidirezionale con lo script esterno STDIN indipendente dal linguaggio di programmazione utilizzato STDOUT STDIN comunicazione attraverso STDIN / STDOUT, implementabile con qualsiasi linguaggio di programmazione inbound.php

Esempio: scalabilità Scenario ambiente domestico o micro azienda budget molto limitato impossibilità a mantenere attivo 24/7 un server fisico o virtuale

Asterisk... in una tasca Scheda Raspberry PI Scheda SD Alimentatore USB... circa 50 euro! Ingombro e consumo minimi fino a 8-10 conversazioni simultanee ideale per sperimentare o per utenze domestiche

Linux Day 25 ottobre 2014 fabianosoftware.it @beppefabiano