Introduksjon Asterisk, Asterisk logoene og dCap logoen er copyright Digium, og er brukt med tillatelse. Foredraget er  © 2006, Magnus Espeland, Oyatel AS. Ta kontakt om du vil bruke dette til noe  
Innhold Telefoni før og etter VoIP Asterisk Intro Oppbygning Grensesnitt Eksempler Komme i gang Oppsummering Ordliste
Magnus Espeland Bachelor of Network Computing  Monash University, Melbourne, 2002 Utviklet og driftet flere større Asterisk systemer siden høsten 2002 Teknisk sjef Oyatel AS [email_address]
Oyatel AS Etablert juni 2005 Erfaring med Asterisk siden 2002 Leverer konsulenttjenester, produkter og telefoni Er med i BTV’s kompetanseutviklings prosjekt Eid av ICT Group og de ansatte
Telefoni før og etter VoIP
Før Dedikert kobber til hvert abonnement Timeslots på linjene mellom sentraler Garantert båndbredde, timing og kvalitet A B C A B C A B C A Vår samtale
Før Lokal abo til lokal sentral Routing mellom sentraler A -> B -> C  A -> X  (dersom stor trafikk mellom disse sentralene) Funksjonalitet ute i nettet NRDB  (Norsk Referanse Database, nrdb.no) Routing mellom teleoperatører
Etter Ikke dedikert medium, går over IP Pakke nettverk Ingen garanti for noe som helst Pakketap (UDP) Latency QoS hjelper A B A A B C A Vår samtale B B C
Etter Mer sentralisert Må koble til sentral VoIP server
Asterisk - Intro
Begynnelsen I 1999 trengte Mark Spencer en liten telefonsentral til Linux Support Services. Han synes det var for dyrt å kjøpe en, så han bestemte seg for å lage en selv. Hardware fra Zapata i Mexico. Etter hvert begynte andre å bygge videre på programvaren han la ut på nettet.
Nå Astricon, flere steder, flere ganger i året Største stand på VON Spring 2006 Jon ’Maddog’ Hall  (Linux International) :  "I predict that over next three years, VoIP using an open-source solution, such as Asterisk; will generate more business than the entire Linux marketplace today".
Er Asterisk klar for oppgavene? Begynner å bli virkelig stabilt Relativt stabile interfacer Forking (openpbx.org) Utviklings kostnader
Lisens Dobbel lisensiert GPL Kommersiell (bla pga patenter, G.729a, SS7) For å få kode inn i Asterisk må man enten Si fra seg copyright Gi Digium, fri tilgang til å bruke koden i sin kommersielle versjon av Asterisk, for alltid Legge til i Asterisk-Addons
Asterisk - Oppbygning Kjernenen / Moduler Konfigurasjon
Kjernen Bygd opp rundt en kjerne (som Linux) Mange forskjellige modul klasser Channels (IAX, SIP, Zap) Codec / Format Resource / PBX Application / Functions CDR (Call Data Record) (litt overlapping)
Channels Driver de forskjellige kanalene data kommer inn IAX – Inter Asterisk eXhange En nett, liten og enkel protokoll (men best!) SIP – Session Initiation Protocol Tusenvis av sider med RFC Varierende implementasjoner Dessverre svært utbredt
Channels Zap – Zapata / Zaptel Hardware kort Fra 1 linje (FXS/FXO) Til 240 linjer (8 E1) Andre H.323, MGCP, Skinny, ALSA/OSS (forts.)
Codec / Format Codec er formatet på lyden som kommer fra en Channel Format er formatet på lyden som kommer fra en fil Støtter mange G.711 (aLaw/uLaw), G.723/726, G.729, GSM, iLBC, Speex, LPC10….
PBX / Resource PBX (mer om disse seinere) Config og Realtime (ARA) (mer seinere) Asterisk Extension Language (AEL) Resource Music on hold AGI Monitor
Applications / Functions Applications MeetMe, Echo kobler til andre moduler Functions MD5 CallerID Math MYE overlapping mellom disse
CDR Call Data Records Billing osv, det som lagres om samtalen CVS Diverse SQL (ODBC, TDS, SQLite, PG) MySQL er i Asterisk-Addons, pga MySQL lisensen
Konfigurasjon Filer iax.conf, sip.conf extensions.conf  Hjertet  i Asterisk – dialplan Mer etterpå Asterisk Realtime Architecture (ARA) Dialplan, bruker og konfigurasjons database
Asterisk - Grensesnitt CLI – Asterisk Console Spool file AGI – Asterisk Gateway Interface AMI – Asterisk Manager Interface Debugging
CLI Konsollen til Asterisk Her kan man kontrollere stort sett alt Asterisk gjør, og få mye debug info Startes ved å kjøre  ’asterisk –r ’
Spool file Den enkleste måten å la eksterne programmer bruke Asterisk Kan bare brukes til å starte samtaler, og man angir begge ender av samtalen. Slik kan man gjøre en god del triks
AGI Asterisk Gateway Inteface Likt CGI for web Tenk på det som at STDIN og STDOUT er koblet til CLI (Asterisk konsollet) EAGI – Lar deg få raw lyd i en egen FH FastAGI – Kjør AGI scriptet på ekstern server (via TCP)
AMI Asterisk Manager Interface Manageren er en TCP socket (plaintext) Den dumper mange Events Man kjører Actions og får Responses fra den Mange ferdige pakker, både for Java, .NET, PHP og Perl (inkl POE)
Debugging For å debugge bruker  jeg  disse verktøyene CLI: set verbose n, set debug n, iax2 debug, .. Logfiler (feks /var/log/asterisk/messages) AGI: Åpne filehandle til en logfil, og skrive debug info dit (vansklig å debuge AGI script via CLI) AMI: Filtrere events, evt kjøre status kommandoer
Asterisk - Eksempler The Dialplan! Konfigurasjons (filer / ARA) Eksempler på bruksområder
The Dialplan! Det er her alt skjer (nesten) Denne angir hvordan samtaler skal routes og hvilke applikasjoner som skal kjøres mot dem Ligger i extensions.conf, eller lastes via ARA. Kan manipuleres via AMI. Man kan skrive logikken i AEL, slik at den blir mer oversiktlig. (Asterisk Extension Language) Eksempler…
Konfigurasjon iax.conf og sip.conf angir peers, users og friends Peer er en vi kobler oss til User er en som kobler til oss Friend er begge deler Man angir for eksempel hvilke dialplan context samtaler skal routes til
Konfigurasjon features.conf manager.conf (forts.)
Basis eksempler Ringe ut, se på CLI Spool fil mot playback(), se på CLI AMI – nc mot manager porten, se på events AGI –
Fax to/from mail gateway Fax to/from whatever gateway Men dessverre: FoIP er ikke bra nok (timing og lydkvalitet) Bruk kommersielle produkter med T.38 support Spandsp + rxfax() / txfax() IAXModem + Hylafax Fax
IVR Interactive Voice Response  (tast 1 for ditt, 2 for datt) Bygge enkle rett i dialplan Bruke AGI til litt mer avanserte systemer Enklere å holde orden på mer avansert kode Enklere å bruke mot andre systemer  (DB, mail, etc) Bruke AMI for virkelig avanserte systemer Kan ta tak i samtaler og flytte dem
Telefonkonferanser Planlagte Automatisk opprettet av overvåkings systemer Nagios Gode administrasjonsmuligheter
Voicemail Bedre enn den du har? Integrasjon mot dine systemer Videresending til mail Store muligheter for tilpassede løsninger
Telefonkø Hjelper i peak situasjoner Kombiner med IVR (’Vi har fortiden nedetid på XX, feilen utbedres’) Diverse algoritmer for eksempel: Support personer Junior utviklere Senior utviklere
Egen PBX Kan livet ditt bli enklere med en? Ett nummer, routing etter regler Talemeny Telefonsvarer Konferanser Køing
Service provider En enkel måte å teste ut Asterisk på med liten risiko Mulige tjenester: IVR, VoIP Gateway, Fax, ...
Service provider PSTN IVR VoIP provider VoIP - Gateway
CTI  (Callcenter greier) Computer Telephony Interface Brukes mellom applikasjon og telefonisystem (for eksempel Asterisk) Trenger det egentlig å være forbeholdt callcenter lenger? NEI!
CTI Produkter Computer Telephony Interface (CTI) Asterisk Manager Interface (AMI) AstManProxy Asterisk Java / .NET Asterisk-CTI OrderlyCalls (OrderlySoftware)
Filter Øker kapasiteten på gammelt utstyr ved å flytte funksjonalitet ett lag ut Mulige tjenester: IVR, Køer, Fax, ...
Filter VoIP provider IVR Kø Overvåke VoIP GW PSTN VoIP - Gateway IVR
Brukere av Asterisk Briiz Telecom – Bruker kun Asterisk, og er åpene om det Andre mot privatmarkedet bruker SER + Asterisk (Asterisk til terminering, voicemail etc) Minst en stor callcenter aktør bruker asterisk i stor skala Buskerud fylkeskommune (se egen slide)
Asterisk – Komme i gang
Hvordan få tak i Asterisk Subversion http://svn.digium.com/svn/asterisk/trunk  http://svn.digium.com/svn/asterisk/branches/1.2  FTP / HTTP http://ftp.digium.com/pub/ ftp://ftp.digium.com/pub/
Asterisk@Home  ( nå Trixbox ) CentOS (Redhat fork) basert Sett inn CD, boot, og den overskriver HD på maskinen Mange features samt administrasjons verktøy ’ Automagisk’ installasjon av hardware
Andre produkter Diptel PBX løsning, plassert lokalt hos kunde. Intel basert maskin med USB drive Bjørn og gjengen Utvikler GPL telefonsentral for bruk i det offentlige (og andre) Diverse internasjonale
Ordliste AEL – Asterisk Extension Language (C-style extensions) AGI – Asterisk Gateway Interface (Som CGI for web) AMI – Asterisk Manager Interface (TCP socket til Asterisk) ARA – Asterisk Realtime Architecture (dialplan og config i database) CDR – Call Data Record (info lagret om samtaler i ettertid) CLI – Command Line Interface(?) CTI – Computer Telephony Interface (AMI wrapper for andre programmer) G.711 – 64kbits Codec for ISDN i Norge (aLaw / uLaw) G.729a – Kommersiell Codec (lite CPU, lite BW og god lydkvalitet) GSM – 8kbits (?) Codec for GSM nettet IAX – Inter Asterisk eXhange (bedre enn SIP) PBX – Private Branch eXhange (telefonsentral i bedriften) SIP – Session Initiation Protocol VoIP – Voice over IP  
Asterisk som hussentral 11 kommuner på Sørlandet og Buskerud fylkeskommune skal sammen med et utvalg av bedrifter utvikle en komplett hussentralløsning basert på bl.a. Asterisk. Løsningen blir fritt tilgjengelig fra  www.asterisk.no Info om prosjektet blir også lagt ut på asterisk.no.
Ledig stilling!! Vi trenger mer folk! Stort marked, få aktører Ungt, energisk og spennende miljø Mulighet for eierskap i din egen jobb Spennende samarbeidspartnere!
Besøk til avdelingen i Oslo Gjett hvem som er meg… han andre kjører bil (fort)
Kollega kjører rally
Kollega får konkuranse
GEEK POWER!
Spørsmål og diskusjon Foredraget ligger på http://asterisk.no [email_address]
 

Introduksjon til Asterisk

  • 1.
    Introduksjon Asterisk, Asterisklogoene og dCap logoen er copyright Digium, og er brukt med tillatelse. Foredraget er © 2006, Magnus Espeland, Oyatel AS. Ta kontakt om du vil bruke dette til noe 
  • 2.
    Innhold Telefoni førog etter VoIP Asterisk Intro Oppbygning Grensesnitt Eksempler Komme i gang Oppsummering Ordliste
  • 3.
    Magnus Espeland Bachelorof Network Computing Monash University, Melbourne, 2002 Utviklet og driftet flere større Asterisk systemer siden høsten 2002 Teknisk sjef Oyatel AS [email_address]
  • 4.
    Oyatel AS Etablertjuni 2005 Erfaring med Asterisk siden 2002 Leverer konsulenttjenester, produkter og telefoni Er med i BTV’s kompetanseutviklings prosjekt Eid av ICT Group og de ansatte
  • 5.
    Telefoni før ogetter VoIP
  • 6.
    Før Dedikert kobbertil hvert abonnement Timeslots på linjene mellom sentraler Garantert båndbredde, timing og kvalitet A B C A B C A B C A Vår samtale
  • 7.
    Før Lokal abotil lokal sentral Routing mellom sentraler A -> B -> C A -> X (dersom stor trafikk mellom disse sentralene) Funksjonalitet ute i nettet NRDB (Norsk Referanse Database, nrdb.no) Routing mellom teleoperatører
  • 8.
    Etter Ikke dedikertmedium, går over IP Pakke nettverk Ingen garanti for noe som helst Pakketap (UDP) Latency QoS hjelper A B A A B C A Vår samtale B B C
  • 9.
    Etter Mer sentralisertMå koble til sentral VoIP server
  • 10.
  • 11.
    Begynnelsen I 1999trengte Mark Spencer en liten telefonsentral til Linux Support Services. Han synes det var for dyrt å kjøpe en, så han bestemte seg for å lage en selv. Hardware fra Zapata i Mexico. Etter hvert begynte andre å bygge videre på programvaren han la ut på nettet.
  • 12.
    Nå Astricon, fleresteder, flere ganger i året Største stand på VON Spring 2006 Jon ’Maddog’ Hall (Linux International) : "I predict that over next three years, VoIP using an open-source solution, such as Asterisk; will generate more business than the entire Linux marketplace today".
  • 13.
    Er Asterisk klarfor oppgavene? Begynner å bli virkelig stabilt Relativt stabile interfacer Forking (openpbx.org) Utviklings kostnader
  • 14.
    Lisens Dobbel lisensiertGPL Kommersiell (bla pga patenter, G.729a, SS7) For å få kode inn i Asterisk må man enten Si fra seg copyright Gi Digium, fri tilgang til å bruke koden i sin kommersielle versjon av Asterisk, for alltid Legge til i Asterisk-Addons
  • 15.
    Asterisk - OppbygningKjernenen / Moduler Konfigurasjon
  • 16.
    Kjernen Bygd opprundt en kjerne (som Linux) Mange forskjellige modul klasser Channels (IAX, SIP, Zap) Codec / Format Resource / PBX Application / Functions CDR (Call Data Record) (litt overlapping)
  • 17.
    Channels Driver deforskjellige kanalene data kommer inn IAX – Inter Asterisk eXhange En nett, liten og enkel protokoll (men best!) SIP – Session Initiation Protocol Tusenvis av sider med RFC Varierende implementasjoner Dessverre svært utbredt
  • 18.
    Channels Zap –Zapata / Zaptel Hardware kort Fra 1 linje (FXS/FXO) Til 240 linjer (8 E1) Andre H.323, MGCP, Skinny, ALSA/OSS (forts.)
  • 19.
    Codec / FormatCodec er formatet på lyden som kommer fra en Channel Format er formatet på lyden som kommer fra en fil Støtter mange G.711 (aLaw/uLaw), G.723/726, G.729, GSM, iLBC, Speex, LPC10….
  • 20.
    PBX / ResourcePBX (mer om disse seinere) Config og Realtime (ARA) (mer seinere) Asterisk Extension Language (AEL) Resource Music on hold AGI Monitor
  • 21.
    Applications / FunctionsApplications MeetMe, Echo kobler til andre moduler Functions MD5 CallerID Math MYE overlapping mellom disse
  • 22.
    CDR Call DataRecords Billing osv, det som lagres om samtalen CVS Diverse SQL (ODBC, TDS, SQLite, PG) MySQL er i Asterisk-Addons, pga MySQL lisensen
  • 23.
    Konfigurasjon Filer iax.conf,sip.conf extensions.conf Hjertet i Asterisk – dialplan Mer etterpå Asterisk Realtime Architecture (ARA) Dialplan, bruker og konfigurasjons database
  • 24.
    Asterisk - GrensesnittCLI – Asterisk Console Spool file AGI – Asterisk Gateway Interface AMI – Asterisk Manager Interface Debugging
  • 25.
    CLI Konsollen tilAsterisk Her kan man kontrollere stort sett alt Asterisk gjør, og få mye debug info Startes ved å kjøre ’asterisk –r ’
  • 26.
    Spool file Denenkleste måten å la eksterne programmer bruke Asterisk Kan bare brukes til å starte samtaler, og man angir begge ender av samtalen. Slik kan man gjøre en god del triks
  • 27.
    AGI Asterisk GatewayInteface Likt CGI for web Tenk på det som at STDIN og STDOUT er koblet til CLI (Asterisk konsollet) EAGI – Lar deg få raw lyd i en egen FH FastAGI – Kjør AGI scriptet på ekstern server (via TCP)
  • 28.
    AMI Asterisk ManagerInterface Manageren er en TCP socket (plaintext) Den dumper mange Events Man kjører Actions og får Responses fra den Mange ferdige pakker, både for Java, .NET, PHP og Perl (inkl POE)
  • 29.
    Debugging For ådebugge bruker jeg disse verktøyene CLI: set verbose n, set debug n, iax2 debug, .. Logfiler (feks /var/log/asterisk/messages) AGI: Åpne filehandle til en logfil, og skrive debug info dit (vansklig å debuge AGI script via CLI) AMI: Filtrere events, evt kjøre status kommandoer
  • 30.
    Asterisk - EksemplerThe Dialplan! Konfigurasjons (filer / ARA) Eksempler på bruksområder
  • 31.
    The Dialplan! Deter her alt skjer (nesten) Denne angir hvordan samtaler skal routes og hvilke applikasjoner som skal kjøres mot dem Ligger i extensions.conf, eller lastes via ARA. Kan manipuleres via AMI. Man kan skrive logikken i AEL, slik at den blir mer oversiktlig. (Asterisk Extension Language) Eksempler…
  • 32.
    Konfigurasjon iax.conf ogsip.conf angir peers, users og friends Peer er en vi kobler oss til User er en som kobler til oss Friend er begge deler Man angir for eksempel hvilke dialplan context samtaler skal routes til
  • 33.
  • 34.
    Basis eksempler Ringeut, se på CLI Spool fil mot playback(), se på CLI AMI – nc mot manager porten, se på events AGI –
  • 35.
    Fax to/from mailgateway Fax to/from whatever gateway Men dessverre: FoIP er ikke bra nok (timing og lydkvalitet) Bruk kommersielle produkter med T.38 support Spandsp + rxfax() / txfax() IAXModem + Hylafax Fax
  • 36.
    IVR Interactive VoiceResponse (tast 1 for ditt, 2 for datt) Bygge enkle rett i dialplan Bruke AGI til litt mer avanserte systemer Enklere å holde orden på mer avansert kode Enklere å bruke mot andre systemer (DB, mail, etc) Bruke AMI for virkelig avanserte systemer Kan ta tak i samtaler og flytte dem
  • 37.
    Telefonkonferanser Planlagte Automatiskopprettet av overvåkings systemer Nagios Gode administrasjonsmuligheter
  • 38.
    Voicemail Bedre ennden du har? Integrasjon mot dine systemer Videresending til mail Store muligheter for tilpassede løsninger
  • 39.
    Telefonkø Hjelper ipeak situasjoner Kombiner med IVR (’Vi har fortiden nedetid på XX, feilen utbedres’) Diverse algoritmer for eksempel: Support personer Junior utviklere Senior utviklere
  • 40.
    Egen PBX Kanlivet ditt bli enklere med en? Ett nummer, routing etter regler Talemeny Telefonsvarer Konferanser Køing
  • 41.
    Service provider Enenkel måte å teste ut Asterisk på med liten risiko Mulige tjenester: IVR, VoIP Gateway, Fax, ...
  • 42.
    Service provider PSTNIVR VoIP provider VoIP - Gateway
  • 43.
    CTI (Callcentergreier) Computer Telephony Interface Brukes mellom applikasjon og telefonisystem (for eksempel Asterisk) Trenger det egentlig å være forbeholdt callcenter lenger? NEI!
  • 44.
    CTI Produkter ComputerTelephony Interface (CTI) Asterisk Manager Interface (AMI) AstManProxy Asterisk Java / .NET Asterisk-CTI OrderlyCalls (OrderlySoftware)
  • 45.
    Filter Øker kapasitetenpå gammelt utstyr ved å flytte funksjonalitet ett lag ut Mulige tjenester: IVR, Køer, Fax, ...
  • 46.
    Filter VoIP providerIVR Kø Overvåke VoIP GW PSTN VoIP - Gateway IVR
  • 47.
    Brukere av AsteriskBriiz Telecom – Bruker kun Asterisk, og er åpene om det Andre mot privatmarkedet bruker SER + Asterisk (Asterisk til terminering, voicemail etc) Minst en stor callcenter aktør bruker asterisk i stor skala Buskerud fylkeskommune (se egen slide)
  • 48.
  • 49.
    Hvordan få taki Asterisk Subversion http://svn.digium.com/svn/asterisk/trunk http://svn.digium.com/svn/asterisk/branches/1.2 FTP / HTTP http://ftp.digium.com/pub/ ftp://ftp.digium.com/pub/
  • 50.
    Asterisk@Home (nå Trixbox ) CentOS (Redhat fork) basert Sett inn CD, boot, og den overskriver HD på maskinen Mange features samt administrasjons verktøy ’ Automagisk’ installasjon av hardware
  • 51.
    Andre produkter DiptelPBX løsning, plassert lokalt hos kunde. Intel basert maskin med USB drive Bjørn og gjengen Utvikler GPL telefonsentral for bruk i det offentlige (og andre) Diverse internasjonale
  • 52.
    Ordliste AEL –Asterisk Extension Language (C-style extensions) AGI – Asterisk Gateway Interface (Som CGI for web) AMI – Asterisk Manager Interface (TCP socket til Asterisk) ARA – Asterisk Realtime Architecture (dialplan og config i database) CDR – Call Data Record (info lagret om samtaler i ettertid) CLI – Command Line Interface(?) CTI – Computer Telephony Interface (AMI wrapper for andre programmer) G.711 – 64kbits Codec for ISDN i Norge (aLaw / uLaw) G.729a – Kommersiell Codec (lite CPU, lite BW og god lydkvalitet) GSM – 8kbits (?) Codec for GSM nettet IAX – Inter Asterisk eXhange (bedre enn SIP) PBX – Private Branch eXhange (telefonsentral i bedriften) SIP – Session Initiation Protocol VoIP – Voice over IP 
  • 53.
    Asterisk som hussentral11 kommuner på Sørlandet og Buskerud fylkeskommune skal sammen med et utvalg av bedrifter utvikle en komplett hussentralløsning basert på bl.a. Asterisk. Løsningen blir fritt tilgjengelig fra www.asterisk.no Info om prosjektet blir også lagt ut på asterisk.no.
  • 54.
    Ledig stilling!! Vitrenger mer folk! Stort marked, få aktører Ungt, energisk og spennende miljø Mulighet for eierskap i din egen jobb Spennende samarbeidspartnere!
  • 55.
    Besøk til avdelingeni Oslo Gjett hvem som er meg… han andre kjører bil (fort)
  • 56.
  • 57.
  • 58.
  • 59.
    Spørsmål og diskusjonForedraget ligger på http://asterisk.no [email_address]
  • 60.