IP telefonipakke. Howto guide. Cand. It. Sune Kloppenborg Jeppesen Ingeniør. Claus Lavdal



Relaterede dokumenter
IP telefonipakke. Drift guide. Cand. It. Sune Kloppenborg Jeppesen Ingeniør. Claus Lavdal

MobileCTI Dialer Installations og konfigurations vejledning

Quick Guide for Mobil Reception (Omhandler mobil reception også kaldet isymphony)

Cloud Hosted IP telefoni. Hosted IP telefoni. ConnectionCloud Produktvejledning. Version 1.5

IP telefonipakke. Bruger guide. Cand. It. Sune Kloppenborg Jeppesen Ingeniør. Claus Lavdal

IP Telefoni II. IP Telefoni introduktion II. TDC IP telefoni Scale

IP0027/WIP0020 Supplerende

LAB ØVELSE KONFIGURATION AF DHCP PÅ DANSK AF KIM DONNERBORG / RTS

Telefoni før og nu. Telefoni og Telefoni begreber

UNO vejledning. Indhold

IP telefonipakke. Support guide. Cand. It. Sune Kloppenborg Jeppesen Ingeniør. Claus Lavdal

IP Telefoni. Modul 3

2x50 ETHERNET MODUL. RS485 slave med Ethernet-IP. Gælder for: Program nr.: AUXSLAVE v1 Dokument nr.: 0422md2x50-2v1 Dato:

Telefoni og Telefoni begreber

Application Note: AN-Z05

Quick Guide for Hosted Omstillingsanlæg! (Publiseret af ipvision februar 2014)!

IP Modul report / Netværks software manual 1.0 Funktions beskrivelse:

Ruko SmartAir. Updater installation

IP Telefoni II. IP Telefoni introduktion II. TDC IP telefoni Scale

Vejledning til Teknisk opsætning

MobileIVR Brugervejledning

Sektornet VPN. Opsætning af Novell 4.1x server og klient på. Windows 2000/NT/XP

Netværk & elektronik

FleeDa (DBK Fleetmap Database) Installationsvejledning til installation af VPN og FleeDa klient på egen PC (Juli 2017)

Business Call Quick guide SNOM360 Juli 2012

Kvik guide Mitel MC Klient iphone

IP0027. Brugervejledning ver Side 1 af 5. IP0027 Dansk brugervejledning - tillæg til brugervejledning på CD-rom på engelsk.

PBX Online Brugervejledning

Kvik guide Mitel MC Klient Android

IP Telefoni. Modul 4

H.323. Protocol suite. En ITU standard til VoIP

UNO brugervejledning ERHVERV. Indhold. Viderestilling på Softphonen... 2

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

HELLO INSTALLATIONS GUIDE - DANSK RACKPEOPLE

Citrix CSP og Certificate Store Provider

Business Call Quick guide SNOM 320 Version 1,0/juli 2012

Communicator Omstilling giver overblik og effektiviserer virksomhedens telefonomstilling.

FairSSL Fair priser fair support

Brugervejledning. TDC Scale Assistent til iphone. Copyright NOMADICCIRCLE All rights reserved

Introduktion til FoIP (Fax over IP)

OptiCaller Client v2.0

AFN2208N+ Wi-Fi forstærker 300mBit op til 2500 meters rækkevidde vandtæt.

Netteknik 1 Byg et netværk med SO-HO router Øvelse

Kvik guide AMC Klient Android

FONET Viderestilling. Funktionen opdeles, som vist på nedenstående diagram i 3 naturlige led: - Tilringe Grupper - Tilringe Styring - Aktion

FairSSL Fair priser fair support

Oversigts billedet: Statistik siden:

Quick Start brugervejledning for Nagios systemovervågning

SOSIGW. - Driftsvejledning for SOSIGW 1.0. Indeks

Mobiltelefon. Brugervejledning

Brugermanual. OpenScape Voice. Siemens OpenStage 40. Opsætning på bordtelefon. Version 07/15

Call Recorder Apresa Brugermanual

FairSSL Fair priser fair support

Bredbånd. Vejledning til opsætning af bredbåndsmodem Pace V5500

KOM GODT I GANG MED DIN ICOTERA FIBERBOKS MED INDBYGGET ROUTER

Vejledning til at tjekke om du har sat manuel IP på din computer.

Installationsmanual IP-Kamera Integration

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: APP: SMARTEYES PRO PORT: SecVision - Quick Manual v1.0

3. Menuen Start -> Programs -> OpenVPN åbnes, og "My Certificate Wizard" vælges:

PID2000 Archive Service

Kom godt i gang med. Tilgin HG2301 router TRE BRE booklet 120x120 router TILGIN HG2301 rev04.indd 1

I kan styre samtlige funktioner beskrevet i nærværende dokument, gennem jeres personlige side (selfcare) på

QUICK GUIDE SNOM300 VOIP BUSINESS PHONES JULI 2010

OptiCaller Client v2.0

Sammenlænkning af to PABC er

Opsætning af din computer med DLG Bredbånd

JED Services Nordmarksvej Odense N CVR: Telefon Telefax info@jed.dk

Routeren. - og lag 3 switchen! Netteknik 1

En open source løsning til bibliotekernes publikumspc ere

Business Call Quick guide SNOM370 Version 1.0 / juli 2012

I kan styre samtlige funktioner beskrevet i nærværende dokument, gennem jeres personlige side (selfcare) på

Programmering af CS7050 TCP/IP modul

Brugervejledning. TDC Scale Assistent til Android. Copyright NOMADICCIRCLE All rights reserved

Åbning af porte og UPnP

Spørgsmål: Hvordan kan jeg sætte routeren op uden brug af CD en? Svar: Routeren kan sættes op manuelt iht. step by step guiden nedenfor!

Telefonadministration

Internet Videophone Quick Guide

MANUAL SKIOLD GØR EN FORSKEL DISTRIWIN SERVICE INSTALLATION

OrCAD Capture TCL IDE med Eclipse

UNIVERSE. Administrators guide til Universe

Kom godt i gang med. Icotera fiberboks. med indbygget router

Quick guide SNOM370 Version 1.0 / okt. 2011

Montering af CSE-H55N til REFUsol invertere (rev 1.0)

Installation af CSE-H55N til SMA inverters/units

QUICK GUIDE SNOM320 VOIP BUSINESS PHONES REV. 2010

Sådan kommer du på nettet med din Fullrate forbindelse. Opsætning af router, computer og telefon. ZyXEL VMG8924-B10A

AgroSoft A/S AgroSync

Communicator effektiviserer virksomhedens aktuelle telekommunikation i ét vindue på din pc.

Indholdsfortegnelse. PBX Switchboard. Manual. Introduktion Grafisk omstillingsbord Let at tilpasse layout Om manualen...

Introduktion til funktioner, moduler og scopes i Python

TDC Scale LG IP Brugervejledning

Telsome s Linksys/Sipura spa-1001 Vejledning

Kom godt i gang med. Tilgin HG2301 router

Vejledning til installation af Outlook Kalender Integration

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Programmering af CS7002 GSM/GPRS modul Version 5

OS2faktor. Windows Credential Providers. Version: Date: Author: BSG

Resumé NSI har udviklet en funktionel prototype med en visuel brugergrænseflade, der giver ikke-teknikere mulighed for at tilgå adviseringsservicen.

Brugervejledning for. Telenor Dialer

Transkript:

IP telefonipakke Howto guide Cand. It. Sune Kloppenborg Jeppesen Ingeniør. Claus Lavdal

IP telefonipakke: Howto guide af Cand. It. Sune Kloppenborg Jeppesen og Ingeniør. Claus Lavdal Ophavsret 2006, 2007 Ministeriet for Videnskab, Teknologi og Udvikling Åben dokumentlicens Version 1.0 - Licensen kan findes på: http://www.sslug.dk/linuxbog/licens.html [http://www.sslug.dk/linuxbog/licens.html] 1. Kopiering og distribution af værket i uændret form Du må frit kopiere dette værk uændret og distribuere det på ethvert medium, forudsat at du sammen med hver kopi bibeholder denne licens og en henvisning til værkets kilde. Du kan vælge at kræve penge for kopiering og distribution af indholdet, for undervisning i indholdet, for brugerstøtte og garantier i forbindelse med indholdet. Hvis du videregiver værket til andre, har du pligt til at se til, at du selv eller andre giver modtageren gratis adgang i minimum 3 år til en elektronisk udgave af indholdet - i et åbent redigérbart format - for eksempel via internettet, og at der i hvert eksemplar tydeligt angives, hvordan man kan få den elektroniske udgave. 2. Ændring af indhold Du må gerne ændre i dette værk eller dele af det (og dermed lave et nyt værk baseret på dette værk) og distribuere det som nævnt ovenfor, forudsat at du opfylder alle følgende krav: a. Du skal sørge for at det nye værk indeholder en tydelig anmærkning om at du ændrede det, hvad du ændrede og datoen for ændringerne. b. Det skal være omfattet af samme rettigheder og betingelser ("licens"), som det oprindelige værk. Alternativt kan det nye værk bære en anden licens eller almindelig ophavsretlig beskyttelse, forudsat at samtlige dele, der oprindeligt stammer fra dette værk, tydeligt er markeret (f.eks i sidefoden på hver side) som værende under denne licens, og at licensen følges for disse dele af værket, herunder at der gives gratis elektronisk adgang som nævnt under afsnittet om kopiering og distribution. 3. Pligter Enhver anvendelse, kopiering eller distribuering betragtes som en accept af denne licens og dens betingelser. Ved overtrædelse af licensbetingelserne, vil almindelig ophavsretlig beskyttelse være gældende for hele værket og vil dermed gøre person eller personer erstatningspligtige for enhver uautoriseret anvendelse. 4. Garanti Indholdet leveres "som det er", uden nogen form for garanti for købs-, brugs- eller nytteværdi, medmindre der er givet en særskilt skriftlig garanti herom.

1. Indledning... 1 2. Dialplan... 2 2.1. Asterisk dialplan... 2 2.2. Standard funktioner... 5 2.3. Din egen dialplan... 9 3. ISDN... 15 3.1. ISDN BRI... 15 3.2. ISDN PRI... 17 4. Værktøjskassen... 26 4.1. SSH server... 26 4.2. SSH klient... 27 4.3. Webserver... 35 4.4. DHCP server... 36 4.5. rw-sync.sh... 36 4.6. Fjern logning... 37 5. Auto provisioning... 39 5.1. Indledning... 39 5.2. Opsætning... 39 6. Asterisk Manager Interface... 42 6.1. Indledning... 42 6.2. AMI eksempel... 43 7. Tilgængelighed og skalering... 46 7.1. Indledning... 46 7.2. Komponenterne... 46 7.3. Skalering... 47 7.4. Høj tilgængelighed... 48 7.5. Høj tilgængelighed og skalering... 50 7.6. Afslutning... 51 8. Lyde... 52 8.1. Manuelt med mikrofon... 52 8.2. Ekstern leverandør... 53 8.3. Manuelt med telefon... 53 9. Ekstern terminering... 55 9.1. SIP serviceudbyder... 55 9.2. IAX serviceudbydere... 57 Litteraturliste... 59 A. DocBook... 60 A.1. Installation... 60 A.2. Elementer... 61 iv

1. Indledning Howto guiden er en samling af forskellige tekniske emner som ligger i forlængelse af Quick guide. Det er ikke meningen at Howto guiden skal læses fra ende til anden, men bruge de afsnit som er relevante for organisationen. De enkelte kapitler vil variere i sværhedsgrad. Der anvendes tre sværhedsgrader, lav, mellem og høj. Graden bestemmes ud fra den generelle kompleksitet og antallet af berørte systemer. Sværhedsgraden angives i indledning sammen med målet for kapitlet. Der veksles mellem manualer og overvejelser. Manualer er trin for trin procedurer til konkrete opgaver som f.eks. opsætning af ISDN kort. Overvejelser er mindre konkrete og vil typiske belyse en problemstilling fra flere vinkler, for at vejlede læseren omkring emnet. Typen angives ligeledes i indledningen til kapitlet. Der forudsættes at Quick guiden er gennemgået, eller at man har en fungerende Asterisk installation. Målgruppen er som i Quick guiden teknikere, som har forståelse for netværks eknologier, switche, routere og netværksdrift samt serveradministration. Det er ikke en forudsætning, at man har kendskab til Linux/Unix, men det vil være en fordel. Opgaven vil primæt blive udført i en tekst konsol, som også i dag findes på meget netværksudstyr fra f.eks. 3Com og Cisco. Målet med guiden er at give anvisninger til mulige løsninger. Ingen af de enkelte guides er udtømmende. Til gengæld skulle de gerne give en god begyndelse. Der er to primære referencer som er sædeles relevante i forbindelse med denne guide. Generelt for Asterisk er der en bog - Asterisk - The Future of Telephony som kan købes som bog eller hentes gratis på nettet som PDF (http://www.asteriskdocs.org/modules/tinycontent/index.php?id=11). Bogen er en meget grundig indføring i de fleste aspekter omkring Asterisk. Bogen egner sig, hvis man gerne vil sætte sig grundigt ind i hele applikationen. Er man mere til at søge informationer i forbindelse med, at man har brug for dem kan vi anbefale wiki'en www.voip-info.org [http://www.voip-info.org] hvor der er meget relevant og opdateret information. 1

2. Dialplan Følgende afsnit omhandler mulighederne i Asterisk dialplan. Målet med afsnittet er at gøre læseren i stand til selv at designe en dialplan. Afsnittet vil have karakter af en manual med en grundig introduktion. Desuden er der sammen med IP telefonipakken en række standard funktioner som vil blive gennemgået. Disse eksempler kan bruges som byggesten og efter gennemgang af guiden vil du let kunne bruge og tilrette disse, således at du kan begynde at udforske mulighederne i Asterisk. Programmeringserfaring vil være en fordel, men ikke nødvendigt. Dialplan sproget er simpelt og letforståeligt og mulighederne mange. Guiden er af middel sværhedsgrad. 2.1. Asterisk dialplan Context Extension Asterisks dialplan er defineret i /etc/asterisk/extensions.conf. Dialplanen håndterer alle indkommende og udgående opkald og, hvad der sker med dem. Dialplanen består af en række linjer med kommandoer, der behandles sekventielt. Der er en lang række applikationer, som udfører forskellige opgaver som f.eks. at afspille en besked, inden et nummer ringes op. I det følgende vil vi forsøge at give en hurtig gennemgang af de relevante styrings mekanismer i Asterisk. På Internettet er der flere gode guides f.eks. http://www.voip-info.org/wiki-asterisk+config+extensions.conf. Desuden beskriver dialplan applikationerne i kapitel 5 i Asterisk - The Future of Telephony som kan hentes gratis på nettet. Dialplanen er opdelt med kontekster der definere med [context_navn]. Disse kontekster hjælper til at strukturere dialplanen i mindre og logiske enheder. For eksempel vil det være relevant at have en [Incoming] kontekst som definerer, hvad der skal gøres ved indkommende opkald. På samme måde kan man have en [outgoing] kontekst, hvor man definere hvordan man sender opkald ud af telefoncentralen. Man kan inkludere og springe mellem de enkelte kontekster, og der er ingen begrænsninger på, hvor mange kontekster man kan have i sin dialplan. I dialplanen er der to standard kontekster. [general] beskriver en række valgmuligheder og [globals], hvor en række variabler defineres. I kontekster bruges der extensions til at definere, hvad der skal ske med opkald på baggrund af input fra brugerne. Syntaksen for extensions er følgende: exten = extension,priority,command(parameters) Et simpelt eksempel med Answer applikationen er: [context] exten => 123,1,Answer() Alle linier i vores kontekster starter med exten => mens 123 er det input som i får. I denne sammenhæng vil det betyde, at et opkald som kommer ind i vores context og som har ringet 123 vil blive udsat for en Answer applikation. 1 tallet mellem 123 og Answer er en prioritering. Næste linje vil hedde 2 og så videre. 2

Dialplan Det er også muligt at bruge n i stedet for 2, 3 osv. Første prioritet skal defineres som 1, mens de efterfølgende n'er behandles sekventielt. Der er også en række muligheder for at bruge nogle standard extensions som i for invalid/fejl hvor fejl bliver håndteret eller h for Hangup/læg på for at udføre applikationer på opkald efter de er lagt på. Læs mere om disse på http://www.voip-info.org/wiki-asterisk+config+extensions.conf. Mønster sammenligning Som vi så i Extension vil der blive udført en applikation hvis der blev ringet 123. På samme måde kan man lave en ny linje for nummer 124. [context] exten => 123,1,Answer() exten => 124,1,Answer() For at undgå at skulle lave disse ens linier, kan man bruge mønster variabler. X fanger alle numre fra 0 til 9 Z fanger alle cifre fra 1 til 9 N fanger alle cifre fra 2 til 9 [1347-9] fanger cifre inden for klammerne Her 1, 3, 4, 7 til 9. fanger alt Disse mønstre startes altid med et _. På denne måde kan man samle mange numre og behandle dem på samme måde. [context] exten => _12[3-4],1,Answer() Applikationer Man kunne også have brugt _12X men så var alle 120-129 blevet behandlet. Asterisk har en række applikationer som eksekveres via extensions. Disse applikationer er alle beskrevet her http://www.voip-info.org/wiki/index.php?page=asterisk+-+documentation+of+application+commands. Nedenfor lister vi et par af de mest brugte. Answer() Dial(type/identifier, timeout, options, URL) tager opkaldet og bruges hvis man f.eks. vil læse en besked op, før brugeren sættes i en kø via queue. ringer op. Applikationen tager en række argumenter. Første argument består af to dele, først er type af kanal, f.eks. SIP for en IP telefon eller ZAP for at ringe via en ZAP kanal (ISDN kort), derefter nummeret eller navnet der skal ringes op til. Timeout angives i sekunder der ringes. Desuden er der en række options, som 3

Dialplan kan anvendes efter ønske. Goto([[context ]extension ]priority) Playback(filename,options...) springer i rækkefølgen i dialplanen. context og extension er frivillige. Man vil altså kunne springe til en f.eks. 10 prioritet. Applikation GotoIf der kan springe til forskellige steder afhængigt af argumenterne. afspiller en fil som man angiver. Asterisk kommer med en række standard lyde. Variabler Macroer Dette var bare et lille udpluk af applikationer, der er mange flere som til sammen gør Asterisk yderst fleksibel. I dialplanen er der mulighed for at bruge diverse variabler. Der er mulighed for selv at definere en række variabler i [globals] konteksten. Der er også en række standardvariabler som kan benyttes. Variablerne bruges på formen ${VARIABLE-NAVN}. En af de meget brugte standardvariabler er ${EXTEN} som beskrives i forbindelse med Macroer. Se mere om hvilke variabler, som kan bruges i dialplanen http://www.voip-info.org/wiki-asterisk+variables#predefinedchannelvariables. På denne side er der også beskrevet, hvordan man let klipper variablerne til. Hvis man har en række linier, man gerne vil have kørt i flere tilfælde, kan man lave en macro, i stedet for at kopiere disse linier ind alle de steder, hvor de skal bruges. Der kan også angives argumenter til makroer. En makro defineres som [macro-navn], hvor makrodelen er fast og navn er navnet på vores makro. I makroen kan argumenterne anvendes ved at bruge variablerne ${ARGn} hvor n er nummeret på argumentet. ${ARG1} er den første og ${ARG2} er nummer 2. Makroen bruges med at applikationen Macro(navn, ARG1, ARG2). [context] exten => _12[3-4],1,Macro(ring, ${EXTEN}) [macro-ring] exten => s,1,answer() exten => s,n,playback(velkommen.gsm) exten => s,n,dial(sip/${arg1},20) Det kan være en fordel i makroen at skrive en kommentar om, hvad den gør og hvilket input værdier, der er. Det gør dem som regel lettere at genbruge.... [macro-ring] ; Plays soundfile and dial exten. ; ${ARG1} Extension exten => s,1,answer()... I [context] sender vi nu kaldet til vores makro [macro-ring]. Vi sender et arguemt med (${EXTEN}) som svarer til nummeret, der er ringet - her enten 123 eller 124. I vores makro bruger vi nu s der er standard start extension for makroer. Vi laver først en Answer på 4

Dialplan opkaldet og afspiller så en velkomst besked. Til sidst ringer vi en SIP kanal op med ${ARG1} som svare til ${EXTEN} som var det nummer som vi der var blevet ringet i begyndelsen. En del af de standard dialplans som ligger i IP telefonipakke er lavet som makroer. 2.2. Standard funktioner I IP telefonipakken er der lavet en række makroer som kan benyttes. Disse makroer er eksempler på hvordan man kan bygge sin dialplan op. I det følgende at de enkelte makroer beskrevet. Dialplanen kan med fordel deles op i flere filer. På denne måde bliver det lettere at overskue en stor dialplan. For at inkludere en anden fil i dialplanen skal følgende liner inkluderes i / etc/asterisk/extensions.conf som er standard dialplanfilen: #include dialplan_services.conf #include dialplan_functions.conf # (havelåge) er ikke et udkommenterings tag. ; (semikolon) bruges til at udkommentere. For at øge mulighederne for at debugge har har vi præfikset alle kontekst navnene med typen. for eksempel [S_context] for service og [F_context] for funktioner. Vores / etc/asterisk/dialplan_functions.conf fil indholder kontekster som tilbyder diverse services, mens /etc/asterisk/dialplan_functions.conf indholder funktioner (typisk makroer) som benyttes i den øvrige dialplan. Dialplan_services.conf S_conference Indholder en simpel konference implementation, der er dog rigtig mange muligheder for at udvide den til at lave særdeles avancerede konferencer. Denne kontekst matcher på en variabel som skal defineres i [globals] som f.eks. CONFERENCE=45X sådan at 450 til 459 matches. Desuden skal [S_conference] inkluderes i de brugerkontekster, som skal have adgang til servicen. Se mere om dette i Afsnit 2.3, Din egen dialplan [S_conference] ;Joins conference number ${CONFERENCE} which is the same as ${EXTEN} exten => _${CONFERENCE},1,Answer() exten => _${CONFERENCE},n,MeetMe(${EXTEN}) exten => _${CONFERENCE},n,Hangup() S_wrongcall En simpel kontekst der anvender standard extension i for at samle opkald op som fejler. Vi afspiller en standard lyd invalid.gsm som siger "Dette er desværre ikke et gyldigt telefon nummer - prøv igen". Alternativt kunne man afspille en "treklang". [S_wrongcall] ; Plays invalid.gsm telling the user that they dialed a wrong number exten => i,1,answer exten => i,n,playback(invalid) exten => i,n,hangup() S_voicemail Til at indspille sin egen telefonsvarerbesked. Nummeret gemmes i ${VM} variablen. 5

Dialplan [S_voicemail] exten => _${VM},1,VoiceMailMain(${CHANNEL:4:2}) S_Call_forwarding_national En af tre forskellige kontekster til at lave viderestillinger med. For at sikre, at der ikke viderestilles til eksterne telefoner deles viderestilling op i tre kontekster. På denne måde kan man håndtere rettigheder på forskellige bruger grupper. Se mere under Afsnit 2.3, Din egen dialplan. Der er fire typer viderestillinger. CFIM CFNA CFUN CFBS Call Forward IMmediately. Alle opkald stilles videre uden at telefonen ringer. Call Forward Not Available. Opkald som ikke besvares viderestilles. Call Forward UNavailable. Hvis telefonen ikke er registreret. Call Forwarding BuSy. Hvis telefonen er optaget. De enkelte koder skal defineres i [globals]. Vi har brugt koderne som også bruges på mobiltelefoner som f.eks. 21, 61, 62 og 63. I denne kontekst fanger vi alle 8 cifrede numre altså f.eks. *21*77896615. Selve implementeringen ligger i en makro som tager tre argumenter. Første argument er ${EXTEN} variablen som svarer til det kaldte nummer, :4 betyder at de første fire cifre klippes væk(f.eks., *21*). Den anden variabel er viderestillingskoden og sidste argument er en lydfil. [S_Call_forwarding_national] ; Sets callforwarding key for national calls and check for loops exten => _*${CFIM}*XXXXXXXX,1,Macro(F_CF,${EXTEN:4},CFIM,call-fwd-unconditional) exten => _*${CFNA}*XXXXXXXX,1,Macro(F_CF,${EXTEN:4},CFNA,call-fwd-no-an) exten => _*${CFUN}*XXXXXXXX,1,Macro(F_CF,${EXTEN:4},CFUN,call-fwd-unav) exten => _*${CFBS}*XXXXXXXX,1,Macro(F_CF,${EXTEN:4},CFBS,call-fwd-on-busy) S_Call_forwarding_all Som S_Call_forwarding_national. Her matches der på alt og ikke bare et 8 cifret nummer. [S_Call_forwarding_all] ; Sets callforwarding key for all calls and check for loops. ;NOTE: This can probably be abused to call foreign numbers exten => _*${CFIM}*X.,1,Macro(F_CF,${EXTEN:4},CFIM,CFIM,call-fwd-unconditional) exten => _*${CFNA}*X.,1,Macro(F_CF,${EXTEN:4},CFNA,call-fwd-no-an) exten => _*${CFUN}*X.,1,Macro(F_CF,${EXTEN:4},CFUN,call-fwd-unav) exten => _*${CFBS}*X.,1,Macro(F_CF,${EXTEN:4},CFBS,call-fwd-on-busy) S_Call_forwarding_intern Som S_Call_forwarding_national. Her matches der på alt fra 1000 til 9999, hvilket typisk vil være lokalnumre. [S_Call_forwarding_intern] ; Sets callforwarding key for all internal calls + check for loops exten => _*${CFIM}*ZXXX,1,Macro(F_CF,${EXTEN:4},CFIM,call-fwd-unconditional) exten => _*${CFNA}*ZXXX,1,Macro(F_CF,${EXTEN:4},CFNA,call-fwd-no-ans) exten => _*${CFUN}*ZXXX,1,Macro(F_CF,${EXTEN:4},CFUN,call-fwd-unav) exten => _*${CFBS}*ZXXX,1,Macro(F_CF,${EXTEN:4},CFBS,call-fwd-on-busy) S_call_forwarding_revoke 6

Dialplan Her matches der på #kode#. Koderne er de samme som i forbindelse med viderestilling. Desuden matches der på #${R_CF}# som giver mulighed for at fjerne alle vidertillinger på en gang. R_CF skal defineres i [globals]. Som tidligere er implementeringen lagt ud i en makro som vi af præfiks kan se ligger i dialplan_functions.conf. [S_Call_forwarding_revoke] ; Remove all callforwarding keys from the database exten => #${CFIM}#,1,Macro(F_CF_revoke,CFIM,call-fwd-unconditional-off) exten => #${CFNA}#,1,Macro(F_CF_revoke,CFNA,call-fwd-no-ans-off) exten => #${CFUN}#,1,Macro(F_CF_revoke,CFUN,call-fwd-unav-off) exten => #${CFBS}#,1,Macro(F_CF_revoke,CFBS,call-fwd-on-busy-off) exten => #${R_CF}#,1,Macro(F_CF_revoke_all,,call-fwd-off) exten => #${R_CF}#,n,Hangup dialplan_functions.conf macro-f_dodial En simpel dial makro. Man kan diskutere, hvorvidt den er relevant, men dens formål er at standardisere opkald. I tilfælde hvor man vil udføre applikationer på alle udgående opkald som optagelser eller registreringer ville dette være stedet, hvor man let kan implementere dette. [macro-f_dodial] ; Simple dial macro ; ${ARG1} = channeltype ; ${ARG2} = exten exten => s,1,dial(${arg1}/${arg2}) macro-f_simple_dial Følgende er et eksempel på en dial makro med flere funktioner. Denne håndtere viderestillinger. Hvis den telefon der ringes til er viderestillet vil den ringe til dette nummer i stedet for. For at den kan dette skal det være muligt at matche disse numre der er viderestillet til. Derfor inkludere vi 3 kontekst (Incoming, E_mobil og E_pstn). E_ præfikset er til for at vise at der er tale om eksterne nummer. Det vil sige at vi denne kontekst matcher de interne nummer, defineret i [Incoming] og eksterne numre som f.eks. XXXXXXXX i E_pstn. I forbindelse med at der bruges n i stedet for direkte nummereret prioritering kan det være vanskeligt at springe til et andet sted i samme kontekst. Men det er muligt at bruge labels på følgende måde:... exten => s,n,gotoif($["${temp}"!= ""]?:dialnorm)... exten => s,n(dialnorm),dial(sip/${a_trunk}${arg1},${calltime},t) Her springer GotoIf til label dialnorm hvis betingelserne ikke er opfyldte. Lablen er defineret i linien: s,n(dialnorm)... 7

Dialplan [macro-f_simple_dial] ; Simple dial macro with call forwarding features ; ${ARG1} = exten ; Include contexts for call forwarding include => Incoming include => E_pstn ; Get database key exten => s,1,set(temp=${db(cfim/${arg1})}) ; Jump to dialnorm label if no call forwarding is set exten => s,n,gotoif($["${temp}"!= ""]?:dialnorm) ; Jump to call forward destitnation exten => s,n,goto(${temp},1) ; Forwarded to wrong number exten => s,n(namsg),playback(error) exten => s,n,hangup() ; Dial the local SIP user exten => s,n(dialnorm),dial(sip/${a_trunk}${arg1},${calltime},t) exten => s,n,goto(s-${dialstatus},1) ; Handle DIALSTATUS messages exten => s-noanswer,1,macro(f_simple_dialstatus,${arg1},cfna) exten => s-busy,1,macro(f_simple_dialstatus,${arg1},cfbs) exten => s-chanunavail,1,macro(f_simple_dialstatus,${arg1},cfun) exten => s-congestion,1,macro(f_simple_dialstatus,${arg1},cfun) ; Jump to dialnorm if database operation in priority 1 fails exten => s,102,goto(dialnorm) macro-f_simple_dialstatus En makro som benyttes af macro-f_simple_dial i tilfælde af at der ikke blev etableret en forbindelse f.eks., fordi der var optaget. Igen skal vi inkludere de kontekster, som matcher de numre som der evt. er viderestillet til. [macro-f_simple_dialstatus] ; Simple dialstatus handling ; ${ARG1} = exten ; ${ARG2} = Call forwarding type (CFIM CFBS CFNA CFUN) ; Include contexts for call forwarding include => Incoming include => E_pstn ; Get database key exten => s,1,set(temp=${db(${arg2}/${arg1})}) ; Jump to vm if no call forwarding is set exten => s,n,gotoif($["${temp}"!= ""]?cf:vm) ; Jump to call forward destination exten => s,n(cf),goto(${temp},1) ;No Call Forwardning - goto mailbox exten => s,n(vm),voicemail(${exten}) macro-f_cf_check_all [macro-f_cf_check_all] ; Check all call forwarding keys ; ${ARG1} Call forwarding destination exten => s,1,macro(f_cf_check,${arg1},cfim) exten => s,n,macro(f_cf_check,${arg1},cfna) exten => s,n,macro(f_cf_check,${arg1},cfun) exten => s,n,macro(f_cf_check,${arg1},cfbs) macro-f_cf_check En kontrol i forbindelse med oprettelse af viderestillinger. For at sikre at vi ikke laver en løkke af viderestillinger som kan optage ressourcer. 8

Dialplan [macro-f_cf_check] ; Check call forwarding key ; ${ARG1} Call forwarding destination ; ${ARG2} Call forwarding type (CFIM CFBS CFNA CFUN) ; Check CF key exten => s,1,set(temp=${db(${arg2}/${arg1})}) ; Exit of no CF key is set exten => s,n,gotoif($["${temp}"!= ""]?:out) ; If CF key is set to our own number exten => s,n,gotoif($[${temp} = ${CHANNEL:8:4}]?loop:noloop) ; Loop detected exten => s,n(loop),playback(cirkel) exten => s,n,hangup() ; Continue checking for loop exten => s,n(noloop),macro(f_cf_check,${temp},${arg2}) ; No loops where detected for leave macro macro-f_cf En del af viderestillings rutinerne. I denne macro sættes viderestillingen, såfremt den er lovlig. [macro-f_cf] ; ${ARG1} Call forwarding destination ; ${ARG2} Call forwarding type (CFIM CFBS CFNA CFUN) ; ${ARG3} playback file exten => s,1,macro(f_cf_check,${arg1},${arg2}) exten => s,n,set(db(${arg2}/${channel:8:4})=${arg1}) exten => s,n,playback(${arg3}) exten => s,n,saydigits(${arg1}) exten => s,n,hangup() macro-f_cf_revoke Denne macro afstiller viderestillingen. [macro-f_cf_revoke] ; Remove call forwarding key from database ; ${ARG1} Call forwarding type (CFIM CFBS CFNA CFUN) ; ${ARG2} playback file exten => s,1,dbdel(${arg1}/${channel:8:4}) exten => s,n,playback(${arg2}) exten => s,n,hangup() macro-f_cf_revoke_all Denne macro fjerner alle viderestillinger [macro-f_cf_revoke_all] ; Remove all call forwarding keys from database exten => s,1,dbdel(cfna/${channel:8:4}) exten => s,n,dbdel(cfbs/${channel:8:4}) exten => s,n,dbdel(cfim/${channel:8:4}) exten => s,n,dbdel(cfun/${channel:8:4}) exten => s,n,playback(call-fwd-off) 2.3. Din egen dialplan I det følgende skal vi prøve at gennemgå et konkret eksempel som gør brug af de enkelte standard funktioner som er gennemgået i Afsnit 2.2, Standard funktioner 9

Dialplan 1. Definering af setup Vi vil tage udgangspunkt i en mindre organisation med 10 telefoner. Den har 12 numre i serie 88881000 til 88881011. 88881000 er hovednummeret, hvor der bliver sagt velkommen inden opkaldene bliver håndteret i en kø. Numrene fra 88881001 til 88881010 er direkte numre til medarbejderne. Hvis medarbejderne ikke tager telefonen eller er optaget går opkaldet til en telefonsvarer. Telefonsvarerbeskeder sendes direkte til medarbejderens e-mail med vedhæftet lydfil. Internt bruges lokalnumrene 1001 til 1010. Medarbejderne har mulighed for at viderestille opkaldene til hinanden og chefen (88881010) har mulighed for at viderestille til en ekstern mobil. 88881001 og 88881002 er receptionstelefoner og besvarer opkald fra køen. Der skal være mulighed for at lave en konference på nummeret 10000. Hvis man ringer eksternt fra skal man ringe til 88881011. Det skal være muligt at parkere et opkald ved at omstille til 10 og det skal være muligt at trække et opkalde ved at trykke *8 Setuppet passer til de brugerguides, som er defineret i Bruger guiden. 2. Bruger oprettelse 1001,John,Smith,JS,john@example.com,Intern_SIP,4567, 1002,Bob,Builder,BB,bob@example.com,Intern_SIP,5678, 1003,Mary,Me,MM,mary@example.com,Intern_SIP,6789,... 1010,chef,boss,cb,chef@example.com,Intern_SIP_adv,2323, Brugeren oprettes som beskrevet i Support guide. Der bruges ikke Auto provisioning til håndtering af telefonerne. 3. Definering af køen På hovednummeret 88881000 skal der være en kø. Køen skal oprettes i / etc/asterisk/queues.conf I pakken er der en lang række eksempler på opsætningen, samt beskrivelse af mulighederne. Hvorvidt man sletter alt indholdet, udkommenterer det eller sletter filen og opretter en ny er en temperamentssag. Hvis man vælger at udkommentere alt indholdet for at bevare kommentarerne bliver filerne let uoverskuelige og dermed vanskelige at debugge. Vi anbefaler, at man sletter filerne og derefter lave en ny f.eks: pbx ~ # rm /etc/asterisk/queues.conf pbx ~ # nano -w /etc/asterisk/queues.conf Hvis man se den gamle fil ligger denne stadig på CD'en: pbx ~ # nano /mnt/livecd/etc/asterisk/queues.conf I /etc/asterisk/queues.conf defineres følgende: 10

Dialplan [general] persistentmembers = yes [hovednummer] musiconhold = default strategy = ringall context = from_queues timeout = 15 retry = 5 wrapuptime=15 announce-frequency = 90 periodic-announce-frequency=60 queue-youarenext = queue-youarenext ; ("You are now first in line.") queue-thereare = queue-thereare ; ("There are") queue-callswaiting = queue-callswaiting ; ("calls waiting.") queue-holdtime = queue-holdtime ; ("The current est. holdtime is") queue-minutes = queue-minutes ; ("minutes.") queue-seconds = queue-seconds ; ("seconds.") queue-thankyou = queue-thankyou ; ("Thank you for your patience.") queue-lessthan = queue-less-than ; ("less than") queue-reporthold = queue-reporthold ; ("Hold time") periodic-announce = queue-periodic-announce ; ("All reps busy / wait for next") joinempty = yes leavewhenempty = yes member => SIP/1001 member => SIP/1002 Det er muligt at lade brugeren logge sig ind og ud af køen. Se mere på http://www.voip-info.org. 4. Definering af kontekst Indkommende opkald sendes til konteksten [Incoming]. Ved indkommende opkald forstår vi opkald, som kommer ude fra. For at sikre at disse opkald ender i [Incoming] skal vi definere dette i vores channel konfigurationsfil. Hvis der er tale om et CAPI kort gøres dette i / etc/asterisk/capi.conf på følgende måde: [general] nationalprefix=0... [ISDN1]... context=incoming På lignende måde kan man angive konteksten for ZAP channels i / etc/asterisk/zapata.conf og for SIP channels i /etc/asterisk/sip.conf (Hvis man f.eks. køber sin trunkering hos en SIP service provider). På denne måde kommer alle opkald fra den channelen til at blive behandlet i [Incoming] konteksten i vores dialplan. 5. Opbygning af dialplan Selve dialplanen ligger i /etc/asterisk/extension.conf. Slet filen og opret en ny med samme navn og definer så følgende: pbx ~ # pbx ~ # rm /etc/asterisk/extensions.conf nano -w /etc/asterisk/extensions.conf [general] #include /etc/asterisk/dialplan_functions.conf #include /etc/asterisk/dialplan_services.conf [globals] 11

Dialplan CFBS=63 CFUN=62 CFNA=61 CFIM=21 R_CF=20 CONFERENCE=1X000 CALLTIME=20 VM=6000 A_TRUNK=8888 [Incoming] include => S_wrongcall exten => _${A_TRUNK}1000,1,Answer() exten => _${A_TRUNK}1000,n,Queue(hovednummer) exten => _${A_TRUNK}100Z,1,Macro(F_simple_dial,${EXTEN:-4}) exten => _${A_TRUNK}1010,1,Macro(F_simple_dial,${EXTEN:-4}) exten => _${A_TRUNK}1011,1,Goto(S_conference,10000,1) Først inkluderes vores standard funktioner under [general] og en række globale variabler under [globals]. Det gælder primært variabler som bruges f.eks. til viderestilling i S_Call_forwarding_national. Desuden angives de første 4 cifre i vores nummerserie, ringe tiden og nummeret til telefonsvarer servicen. I [Incoming] konteksten har vi først en include af en anden kontekst, som håndtere fejl, der kan ses mere om den i S_wrongcall. Dernæst defineres hovednummeret som bliver lagt over i vores kø som vi definerede i Trin 3. Efterfølgende tager vi alle numrene fra 88881001 til 88881009 og sender dem til makroen [macro-f_simple_dial] beskrevet i macro-f_simple_dial. For at få chefens nummer med er det nødvendigt med endnu en linie som matcher 1010 - men med samme indhold. :-4 klipper alt bortset fra de sidste fire karakterer væk, så vi i vores [macro-f_simple_dial]] kun ringer de sidste 4 cifre (= lokal nummeret). Til sidst sender vi opkald til 88881011 til den første konference på det interne nummer 10000. 6. Udgående opkald Linier ud af huset håndteres i en selvstændig kontekst - På denne måde kan vi let ændre, hvordan der skal ringes ud. Følgende kontekst tilføjes /etc/asterisk/extensions.conf: [E_pstn] exten => _XXXXXXXX,1,SetCIDNum(${A_TRUNK}${CALLERIDNUM} exten => _XXXXXXXX,n,Dial(CAPI/${EXTEN}) exten => _XXX,1,SetCIDNum(${A_TRUNK}${CALLERIDNUM} exten => _XXX,n,Dial(CAPI/${EXTEN}) [E_pstn_udland] exten => _00XXX.,1,SetCIDNum(${A_TRUNK}${CALLERIDNUM} exten => _00XXX.,n,Dial(CAPI/${EXTEN}) I første kontekst [E_pstn] behandles alle 8 cifrede numre. Først sætter vi vores første del af telefonnummeret på vores lokalnummer inden vi ringer. I dette tilfælde via en CAPI channel, men dette afhænger af, hvilken forbindelse man har til PSTN nettet. Vi matcher også alle 3 cifrede numre - herunder 112 og andre service numre. Med hensyn til 112 kan man implementere en mere avanceret løsning som lægger samtaler på, hvis en prøver at komme igennem til alarmcentralen, og der ikke er flere åbne linier. Efterfølgende kommer en ny kontekst, som tillader at ringe 00 + landekode + nummer. Ved at ligge denne i den selvstændig kontekst kan man afskære nogle af sine brugere fra at ringe til udlandet. 12

Dialplan På samme måde kan man også specificere de tre cifrede numre således at der bliver lukket for diverse ikke relevante service numre. 7. Interne numre Nu har vi håndteret indkommende opkald og udgående opkald. Til sidst skal vi have håndteret de interne opkald mellem de lokale numre samt diverse services. Disse håndteres også i / etc/asterisk/extensions.conf. [Intern] include => S_wrongcall include => S_conference include => parkedcalls exten => _1000,1,Answer() exten => _1000,n,Queue(hovednummer) exten => _100Z,1,Macro(dodial,SIP,${EXTEN}) exten => _1010,1,Macro(dodial,SIP,${EXTEN}) Minder meget om [Incoming], men vi matcher ikke på hele nummeret, men kun lokal nummeret. Desuden bruger vi ikke macro-f_simple_dial men derimod macro-f_dodial hvilket betyder at der ikke viderestilles ved interne numre. Desuden har vi her mulighed for at bruge alle konferencerne og ikke kun den først fordi vi inkludere [S_conference]. Desuden inkluderer vi parkedcalls som vi senere definerer i Trin 9. 8. Bruger håndtering For at sikre at der ikke viderestilles til eksterne numre fra andre end chefens telefon (88881010) skal vi håndtere brugeren. Det meste af vores dialplan er nu på plads - og derfor skal vi nu have tilføjet disse til brugerens kontekst. Vi har følgeden bruger (se under Trin 2) Intern_SIP og Intern_SIP_adv. I disse kontekst skal vi have inkluderet de rigtige servicekontekster. [Intern_SIP] include => Intern include => E_pstn include => S_call_forwarding_intern include => S_call_forwarding_revoke include => S_voicemail [Intern_SIP_adv] include => Intern include => E_pstn include => E_pstn_udland include => S_call_forwarding_national include => S_call_forwarding_revoke include => S_voicemail 9. Parkering og trækning Det sidste vi mangler for at opfylde Trin 1 er at håndtere parkering af opkald og trækning. Dette defineres i /etc/asterisk/features.conf. [general] parkext => 10 parkpos => 11-15 ; What extension to dial to park ; What extensions to park calls on. These needs to be ; numeric, as Asterisk starts from the start position pickupexten = *8 ; Configure the pickup extension. Default is *8 10. Test 13

Dialplan Tillykke - du har nu en simpel dialplan og der er kun tilbage at teste om alle funktionerne fungerer som forventet. Lav eventuelt en testprocedure som også er beskrevet i Drift guide. Brug konsollen til at debugge. Dette er kun et lille eksempel på de mest simple funktioner og skulle gerne give en grundlæggende forståelse for opbygningen. Mulighederne er uendelig mange og sproget meget fleksibelt. Skulle du alligevel støde på noget som der ikke umiddelbart understøttes kan du enten selv ændre i Asterisk kildekoden eller løse opgaven uden for Asterisk via f.eks. Asterisk Gateway Interface (AGI) i et andet programeringssprog som f.eks. Perl, PHP, C# eller Java. Hvis du har fået mod på nogen af de mange muligheder kan du læse om dem på http://www.voip-info.org/ og specifik om alle standard dialplan applikation på http://www.voip-info.org/wiki/index.php?page=asterisk+-+documentation+of+application+comma nds 14

3. ISDN ISDN (Integrated Services Digital Network) forbindelser anvendes ofte til at forbinde en Asterisk server med det offentlige telefonnet PSTN. Dette afsnit beskriver hvordan der kan termineres til ISDN forbindelser, både små private BRI(ISDN2) og erhvervs PRI(ISDN30/flexISDN) forbindelser. Sværhedsgraden vil være fra mellem til høj. For yderligere information omkring dimensionering af antallet af linier se: http://www.voip-info.org/wiki/view/asterisk+dimensioning. 3.1. ISDN BRI FRITZ!Card PCI De mindste ISDN forbindelser er BRI (Basic Rate Interface) forbindelser. De består af to 64 kbit/s "bearer" (B) kanaler og en 16 kbit/s "delta" (D) kanal. B kanalerne bruges til tale og data, mens D kanalen bruges til kontrol og signalering. Der er flere måder, hvorpå Asterisk understøtter BRI kort. IP telefoni pakken understøtter passive CAPI kompatible ISDN BRI kort vha. chan_capi kanal driveren og BRISTUFF. BRI kort fås generelt i to udgaver, aktive og passive. De aktive håndterer protokollerne til B og D kanalerne i hardware, mens de passive håndterer det i software. Forskellen er, hvor meget CPU kraft computeren skal bruge på at drive kortet. For en almindelig Pentium maskine er det dog intet problem at håndtere et enkelt eller et par BRI kort. BRI kort opererer i to forskellige modus: NT (Network Terminator) mode og TE (Terminal Equipment) mode. Hvis to forskellige PBX'er skal forbindes skal den ene køre i TE mode og den anden i NT mode. Til en standard ISDN BRI forbindelse leveres typisk en NT boks med. Den kører netop i NT mode. Så normalt skal ISDN BRI kort køre i TE mode. Uafhængigt af NT/TE mode er der to andre modus BRI kort kan operere i: p2p/p2mp for punkt til punkt og punkt til multipunkt. p2mp bruges normalt til almindelige private ISDN BRI forbindelser og til dem kan der tilsluttes flere ISDN enheder til. p2p bruges normalt til erhvervsforbindelser. Hertil kan der kun tilsluttes en ISDN enhed. Typisk vil denne enhed være en PBX der håndtere alle opkald. FRITZ!Card PCI er et forholdsvist billigt passivt BRI ISDN kort, der understøtter CAPI (Common ISDN API) protokollen. Det kan med fordel bruges til test og backup linier. Kortet sælges også under andre navne. Specifikationer kan findes her: http://www.avm.de/en/produkte/fritzcard/fritz_card_pci/index.html Det følgende beskriver, hvordan kortet sættes op i p2mp samt TE mode med en NT boks leveret af telefonudbyder. 15

ISDN 1. Første trin er at teste, at systemet har genkendt BRI kortet: pbx ~ # lspci 00:13.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 02) Derefter kan vi gå i gang med at forberede systemet. 2. Som standard er CAPI deaktiveret på IP telefonipakken, så først skal den reaktiveres. Dette gøres ved at rette følgende i /etc/conf.d/gnap: USE_CAPI=yes Derefter skal konfigurationen gemmes med rw-sync.sh -w og serveren genstartes med reboot. Asterisk starter ikke korrekt op hvis CAPI er aktiveret og der ikke findes nogle CAPI kompatible kort, derfor slettes en række filer fra det filsystemet i hukommelsen. Filerne kan kopieres manuelt fra CD'en: pbx ~ # pbx ~ # pbx ~ # pbx ~ # cp /mnt/livecd/etc/init.d/capi /etc/init.d/ cp /mnt/livecd/etc/asterisk/capi.conf /etc/asterisk/ cp /mnt/livecd/etc/capi.conf /etc/ cp /mnt/livecd/etc/runlevels/default/capi /etc/runlevels/default/ Konfigurer derefter /etc/capi.conf som nedenfor og kør: pbx ~ # pbx ~ # /etc/init.d/capi start /etc/init.d/asterisk restart 3. Derefter skal den korrekte CAPI driver vælges i /etc/capi.conf, ved at indkommentere følgende linie: fcpci - - - - - - Driveren har form af et modul, der læses ind i Linux kernen. 4. Endelig skal Asterisk konfigureres til at anvende CAPI. Dette gøres i filen / etc/asterisk/capi.conf: context=your_incoming_context Bemærk 16

ISDN Bemærk at CAPI driveren konfigureres i /etc/capi.conf mens Asterisk konfigureres til at bruge et CAPI kort i /etc/asterisk/capi.conf. 5. Derefter kan Asterisk startes med: pbx ~ # /etc/init.d/asterisk restart Hvis der redigeret i /etc/asterisk/modules.conf skal man sikre sig, at man har en load => chan_capi.so linie og under [global] afsnittet chan_capi.so=yes. 6. Nu er vi parat til at modtage kald via ISDN BRI kortet. Se under dialplan for yderligere informationer om hvordan dialplanen konfigureres. Til dial applikationen skal type sættes til CAPI, f.eks. dial(capi/g1/70101155), der ringer via CAPI på gruppe 1 ti1 "klokken". Gruppe nummer sættes i /etc/asterisk/capi.conf. 3.2. ISDN PRI Til mere seriøst brug hvor der kræves flere linier kan ISDN PRI (Primary Rate Interface) benyttes. I stedet for BRI's to B kanaler og en D kanal, har PRI 30 B kanaler og en D kanal. Kanalerne kan både anvendes til tale og data. Kombineres alle linier opnås en kapacitet på 2Mbit/s. Til at håndtere dataudvekslingen på det fysiske lag anvendes protokollen E1. I Nordamerika anvendes betegnelsen T1 om en forbindelse med 23 B kanaler og en D kanal og en data kapacitet på 1,544 Mbit/s. Ved brug af analoge telefonlinier foregår signaleringen som toner der sendes i talekanalen og kan høres, ISDN PRI har mulighed for at sende den type informationer digitalt. De fleste PRI kort herunder alle Digium PRI kort understøtter både E1 og T1. Flere udbydere tilbyder PRI forbindelser med mindre end 30 aktive B kanaler, f.eks. FlexISDN. Ovenpå E1 protokollen kan der anvendes to grupper af signalleringsprotokoller, CAS og CSS. Protokollerne i kategorien CAS (Channel Associated Signalling) giver information som hvilket nummer, der er ringet til og hvilken tilstand opkaldet er i. De er langsomme til at sætte kald og det er begrænset hvilken type information de kan håndtere. Et bit set bruges til at simulere åbningen og slutningen af 17

ISDN kredsløbet. Alternativt kan de anvende toner til signalering. FXO og FXS der anvendes på almindelige analoge telefon forbindelser anvender CAS. Ved konfiguration af Asterisk anvendes framing til at refere til disse protokoller. En nyere gruppe af protokoller er CCS (Common Channel signalling) løser nogle af de problemer der var forbundet med CAS. CCS protokollerne sender korte beskeder over en signalerings kanal, det kan f.eks. være information om opkaldsnummer. CCS anvendes af E1 og T1 forbindelser, der bruger en signalerings kanal (helt eller delvist) til at udveksle informationer mellem de to ender om hvordan kanalerne anvendes. ISDN anvender CCS og bruger en D kanal til signalering. Q.SIG. er en udvidelse af ISDN der giver mulighed for at udveksle ekstra informationer når kald opsættes mellem to PBX'er. Pt. har Asterisk kun begrænset understøttelser af Q.SIG. På en E1 anvendes EuroISDN som standard for ISDN signalering, mens der på T1 forbindelse anvendes flere forskellige standarder. ISDN udbydere anvender normalt PRI CPE (Customer Premises Equipment) signalering i deres ende og i kunde enden anvendes der PRI NET. Bemærk Forkortelserne NET og CPE referere til hvad de forbinder til og ikke hvor de fysisk er lokaliseret. Kodning angiver hvordan enkelte bits sendes over forbindelsen. E1 forbindelser anvender normalt HDB3 (High-Density Bipolar 3) eller AMI (Alternate Mark Inversion). Ved konfiguration af Asterisk coding til at refere til disse protokoller. Til PRI forbindelser er det nødvendigt med en præcis tidskilde (timing source) for at synkronisere forbindelserne. Tidskilden kan være både selve PRI kortet eller i den anden ende af den forbindelse der forbindes til. Hvis der skal bruges flere Digium kort i samme maskine, skal der bruges et timing cable til at synkronisere tidskilderne over alle kort. For mere information om ISDN signalering se: http://www.asteriskguru.com/tutorials/e1t1.html 18

ISDN Understøttelsen af PRI kort håndteres i Asterisk af chan_zap. Udover PRI understøttelse giver chan_zap også en tidskilde (timing source) der bl.a. anvendes til at synkronisere konferencer. Derfor er Zaptel servicen startet som standard og modulet ztdummy indlæst. I de følgende eksempel vises, hvordan et Digium TE110P kan opsætts med VOIP pakken, men opsætningen af alle Digium PRI kort er generelt tilsvarende. Bemærk Digium TE110P Digium kortene er ikke kompatible med alle servere og fås i forskellige udgaver til forskellige PCI slot typer. For flere informationer se: http://www.digium.com Følgende procedure beskriver, hvordan et Digium TE110P PRI kort konfigureres med VOIP pakken. 1. Første trin er at teste at systemet har genkendt PRI kortet: pbx ~ # lspci 0000:01:00.0 Network controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface Bemærk Det vigtigste er ikke at outputtet stemmer 100% overens med ovenstående, men at systemet har fundet kortet. Derefter kan vi gå igang med at forberede systemet. 2. Først skal vi sørge for at systemet indlæser det kerne modul. Det gøres ved at tilføje wcte11xp til MODULES i /etc/conf.d/zaptel. Det sørger for at loade modulet hver gang zaptel servicen startes. En liste over modul navne og understøttede kort kan findes her: ftp://ftp.digium.com/pub/zaptel/readme-1.2.12. 3. For at zaptel driveren kan konfigurere kortet skal der ændres en del i /etc/zaptel.conf a. For at konfigurere den fysiske port (span) på kortet skal følgende ændres: span=1,1,0,ccs,hdb3,crc4 span defineres efter følgende syntaks: span=<span num>,<timing source>,<line build out(lbo)>,<framing>,<coding>[,yellow] Ovenstående opsætter kortet til at have et span num 1, med den anden ende som foretrukket 19

ISDN timing source, CCS framing, HDB3 coding og CRC4 error correction. span num angiver hvilken fysiske port på kortet der skal konfigureres. b. Dernæst skal der defineres B og D kanaler: bchan=1-15,17-31 dchan=16 c. Endelig skal der anvendes danske toner: loadzone = dk defaultzone=dk /etc/zaptel.conf er yderst velkommenteret og indeholder mange informationer. For flere informationer om opsætning af PRI kort med Zaptel driverense: http://www.asteriskguru.com/tutorials/pri_zaptel.html. 4. For at asterisk kan konfigurere anvende zaptel kortet korrekt skal følgende ændringer indkommenteres/tilføjes i /etc/asterisk/zapata.conf a. trunkgroup => 1,16 spanmap => 1,1,1 Ovenstående definere en trunkgroup 1 med kanal 16 som D kanal. Derefter et spanmap 1 bestående af trunkgroup 1 der udgør logicalspan 1. b. Dernæst skal de enkelte kanaler defineres. Først defineres hvilken context i dialplanen, der skal behandle opkald, der kommer ind via denne kanal: context=default_zap c. Derefter defineres hvilken ISDN dialekt og signalering der skal anvendes: switchtype=euroisdn signalling=pri_net d. For at minimere ekko slås ekko træning til: echotraining=yes e. Kanalen skal tilhøre trunkgroup 1: 20

ISDN group=1 f. Endelig defineres kanalerne med ovenstående egenskaber: channel => 1-15,17-31 Bemærk Det er vigtigt at channel står til sidst. Ønskes der kanaler med andre egenskaber defineres deres egenskaber efterfølgende af afsluttes med en channel linie. 5. Nu er hardware konfigurationen fuldført og vi er parate til at genstarte Asterisk: pbx ~ # /etc/init.d/asterisk restart Det er nødvendigt at genstarte for at Asterisk indlæser alle Zaptel ændringer, en reload af chan_zap er ikke nok. Til dial applikationen skal type sættes til ZAP, f.eks. dial(zap/g1/70101155), der ringer via ZAP på gruppe 1 ti1 "klokken". Kabling I forbindelse med ISDN kort skal man være opmærksom på at kablingen er korrekt. De beskrevne kort er alle sammen udstyret med RJ45 stik, men dette betyder ikke at man kan bruge et standard kategori 5 Ethernet kabel. Der findes nemlig to forskelige standarder for ISDN kabling. På trods af de 8 ledere der er plads til i et RJ45 stik bruges der kun 4 ledere til såvel BRI som PRI forbindelser. Disse deles i to par, par 1 og par 2. Hvert par har + og - leder. Det ene par er Rx som står for Receiver mens det andet par er Tx for Transmitter. Rx+ skal forbindes til Tx- og Rx- til Tx+. I forbindelse med BRI og PRI terminering i Danmark anvendes en standarden TIA568B, hvor kun par 1 og 3 anvendes. Figur 3.1. TIA568B 21

ISDN Til en BRI forbindelse leveres der normalt en NT boks. I denne boks er kablerne normalt krydset således at man kan bruge et ukrydset kabel, som f.eks. et alm. kategori 5 Ethernet kabel eller det medfølgende ISDN kabel med kun 4 ledere. Hvis dette ikke er tilfældet skal man selv lave et kabel, hvor man krydser pin 3 og 4 samt pin 5 og 6 og omvendt. Figur 3.2. TIA568B til TIA568B Fritz!PCI kortet anvender TIA568B standarden og kan bruge et ukrydset kategori 5 Ethernet kabel til NT boksen. For PRI forbindelser er terminerings udstyret ofte lidt mere varieret, så her er det typisk nødvendigt med 22

ISDN special kabler. Desuden bruger Digium på deres kort en lidt anden standard nemlig TIA568A Figur 3.3. TIA568A Som det fremgår af tegningen ligger par 1 og 3 anderleds end TIA568B. TIA568A benyttes bla. på TE110P. Hvis man skal forbinde to enheder med TIA568A skal man alstå forbinde pin 1 og 4 samt 2 og 5 og omvendt. Figur 3.4. TIA568A til TIA568A 23

ISDN Skal man derimod forbinde mellem en enhed med TIA568A og en enhed med TIA568B skal man forbinde pin 4 og 3, pin 5 og 6, pin 1 og 4 samt pin 2 og 5. Figur 3.5. TIA568A til TIA568B Termineringen af en PRI kanal variere mere end en BRI. Derfor skal man være opmærksom på dette i forbindelse med sammenkoblingen af de to enheder. På Digums kort er der en link lampe. Hvis kortet ikke er loaded lyser lampen rød/orange. Hvis driveren til kortet er loadet korekt blinker det grønt. Når der er link på kortet lyser det permanent grønt. Det er muligt at lave en loop-back test. Hvis man forbinder pin 1 og 4 og pin 2 og 5 skal lampen gerne lyse rødt. Figur 3.6. TIA568A loop-back test 24

ISDN Hvis der er problemer med opsætning af ISDN kan det være en god ide at teste kablet inden der fejlfindes i Asterisk konfigurationen. 25

4. Værktøjskassen Dette kapitel indeholder en række selvstændige afsnit der beskriver forskellige værktøjer der kan bruges i forbindelse med IP telefonipakke. 4.1. SSH server Til sikker konsolbaseret fjernadministration er der også en SSH server i pakken. Serveren er ikke aktiveret som standard. For at aktivere den kan følgende procedure følges. Den indlejrede SSH server er Dropbear. For yderligere informationer se: http://matt.ucc.asn.au/dropbear/dropbear.html 1. SSH serveren startes med pbx ~ # /etc/init.d/dropbear start * Generating DSS-Hostkey... Will output 1024 bit dss secret key to '/etc/dropbear/dropbear_dss_host_key' Generating key, this may take a while... Public key portion is: ssh-dss AAAAB3NzaC1kc3MAAACBALTFamWDaq/tNKqNN0WAZjNIRgRMt5Agso7OCZh4aybs9d4hv PqqLjzEaO44Uo/MxKpBe0nGFaVDY8F157SapuFqBo5fHcW0BAy8xy70g/u7fzjenjQns/fMOdp59g pd7h13ch1emymolkm99cgacokn/lrofs1kl1njwzjsy2zhaaaafqd4+myyb4fh5osrf1mmxnao/7n PPwAAAIEAsBjG6qxYfez6wZLe4ntmpHvSZZhK4bcHu+gpWD1U2PHza0MlkllKBsxhHHDUDZ3oDcCy crlva/auik5hontr433yheipxrz2qqitqhuyeuqbu+fgreub7fpwpeq8jidhrm9902cerfv5b92/6 gpyrqt/u/a2xrbqml+tbkhejwmaaacauqgespj4uvrdk/gy664xvxvga2qvvsdf6nerd/2y2cqewm ybgsz+5gi/gz3qx2j+8tgxg0zef9mt5ruaecygmcfnghxq3ye1s1zfeuyyg9etm7g9bpwgpisb/z3 CgVSBMWx+J6b0O1ovPVU7Aa35tr0do7wqD5tyU+9CsIWDHfI= Fingerprint: md5 a4:57:b9:47:7b:e5:41:52:9c:b7:9d:02:16:7e:b3:40 * Generating RSA-Hostkey... Will output 1024 bit rsa secret key to '/etc/dropbear/dropbear_rsa_host_key' Generating key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCCNq9apOBpW601LFFFEPxCD/2cecgaBfTgVngKu yz/rwxzqjf0ihcp1xluha0xddkll4obuzt4mjbjezdydn+rx6/kcsiwbyr9hdlrlodebq3gbcpvdd VthaS/tU+1L1OMjjZeXLPfejILQK9jXJCqRHZaFt2vejokoHyXhXN5fEDZ Fingerprint: md5 da:05:34:04:06:20:f7:4a:c6:5b:c0:10:4f:c2:17:b9 * Starting dropbear... Når Dropbear startes første gang genererer den RSA og DSS nøgler til SSH serveren. Som outputtet viser gemmes disse i filerne dropbear_dss_host_key,dropbear_rsa_host_key i biblioteket /etc/dropbear/. Hvis der kun ønskes login med nøgler der tilføjes -s til DROPBEAR_OPTS i /etc/conf.d/dropbear. For mere information om SSH se: http://en.wikipedia.org/wiki/ssh 2. For at Dropbear starter op efter hver genstart skal der ændres i /etc/conf.d/gnap.conf: USE_SSH=yes 26

Værktøjskassen Dermed er SSH serveren klar til brug. 4.2. SSH klient For at opnå sikker konsol adgang til voip serveren skal der installeres en SSH klient. Den følgende procedure beskriver hvordan der opsættes sikker login vha. nøgler. PuTTY SSH er en Open Source SSH klient til Windows. 1. Først downloades putty.exe fra http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Filen kan gemmes hvor man ønsker det. 2. Start putty.exe og indtast følgende: a. Host Name: ip.addr.paa.server b. Connection type: SSH 27

Værktøjskassen PuTTY SSH login. 3. Vælg Open for at åbne SSH forbindelsen. For at gemme indstillingerne kan man indtaste et navn i Saved Sessions og trykke Save. 4. Kontroller serverens rsa2 fingerprint og tryk Ja. Bemærk Dette skal stemme overens med RSA-Hostkey fra Trin 1 i Afsnit 4.1, SSH server. 28

Værktøjskassen PuTTY SSH kontroller RSA fingerprint. 5. Derefter indtastes brugernavn og password: login as: root root@172.16.50.131's password: Istedet for at skrive bruger navn hver gang kan man i stedet under Host Name angiver root@172.16.50.131. For mere information om hvordan man sætter PuTTY SSH op se: http://www.unixwiz.net/techtips/putty-openssh.html PuTTY SSH er nu klar til brug med password login. For at højne sikkerheden kan det være en ide at aktivere nøgle login. (Forklar lidt mere om nøgler)for at gøre dette følges følgende procedure: 1. Først downloades puttygen.exe fra http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html der bruges til at generere nøglepar med. Filen kan gemmes hvor man ønsker det. 2. Kør puttygen.exe. 29

Værktøjskassen 3. Sæt Type of key to generate til SSH-2 RSA nøgle og sæt Number of bits in a generated key til 1024. Bemærk Det er ligegyldigt, om der vælges SSH-2 RSA eller SSH-2 DSA. Men det er vigtigt, ikke at vælge SSH-1 (RSA) PuTTY Gen. 4. Vælg Generate. 5. Gem nøglen. a. Udfyld Key comment med din email adresse (eller en anden kommentar). b. Udfyld Key passphrase med et godt password og gentag det i Confirm passphrase. 30

Værktøjskassen c. Vælg Save public key. F.eks. med filnavnet mykey.pub. d. Vælg Save private key og gem den et sikkert sted, hvor ingen andre kan få fat på den. F.eks. med filnavnet mykey.ppk. 6. Nu er nøglen genereret og vi er klar til at foretage de nødvendige ændringer på PBX'en. Marker hele feltet under Public key for pasting into OpenSSH authorized_keys file og vælg kopier. Kopier nøgle. 7. Forbind til serveren som beskrevet i Trin 2 under. 8. Lav.ssh ved at køre mkdir.ssh. 9. Så skal indholdet fra før gemmes i filen /root/.ssh/authorized_keys. Dette gøres ved i SSH sessionen at køre nano -w.ssh/authorized_keys, derefter trykkes på højre museknap for at indsætte det kopierede i filen. 31

Værktøjskassen Kopier nøgle. 10. Derefter skal den private nøgle bruges i PuTTY SSH. a. Kør putty.exe. b. I Category træet til venstre vælges Connection->SSH->Auth. 32

Værktøjskassen Vælg nøgle. c. Forbind som beskrevet tidligere. For lettere at kopiere filer mellem Windows og VOIP pakken kan man anvende WinSCP, der giver en grafisk brugergrænseflade til SCP (Secure CoPy) og SFTP (Secure File Transfer Protocol). For at installere WinSCP følges følgende procedure: 1. Download Standalone application fra: http://winscp.net/eng/download.php. 2. Kør winscp382.exe. For at forbinde til VOIP pakken skal følgende sættes op: a. Udfyld Host name med serverens IP adresse. b. Udfyld User name med root. 33

Værktøjskassen c. Udfyld Private key file med lokationen for PuTTY SSH private nøgle. d. Vælg Protocol SCP. Bemærk VOIP pakken understøtter kun SCP og ikke SFTP. WinSCP login. 3. Kontroller serverens rsa2 fingerprint og tryk Yes. WinSCP godkend RSA nøgle. 4. Indtast password til din RSA nøgle. 34

Værktøjskassen WinSCP password. 5. WinSCP er nu klar til brug. WinSCP fungerer meget ligesom Windows stifinderen. WinSCP har en indbygget editork der kan bruges til at redigere UNIX tekst filer. 4.3. Webserver Pakken indeholder også en indlejret webserver. Denne giver bl.a. adgang til et meget simpelt administrativt web interface. Webserveren er ikke aktiveret i standard konfigurationen. I Quick guide er beskrevet hvordan webserveren startes op. Webserveren understøtter bl.a. PHP5. Den indlejrede webserver er lighttpd. For yderligere informationer se: http://www.lighttpd.net. For at webserveren starter op ved hvert reboot gøres følgende: 35