Asterisk - Telefonserver

From Q
Jump to navigation Jump to search

Installation

In diesem Kapitel wird die Installation eines Asterisk Servers unter gentoo linux erklärt. Es ist jedoch bis auf die installation der Software, unter gentoo mit dem emerge Befehl, möglich alle Konfigurationseinstellungen für sämtliche Linux Distrubutionen zu übernehmen. Zudem wird die Konfiguration und Installation mit ISDN und CAPI unterstüzung erklärt. ISDN Karten mit Zaptel und HFC Chipsätze sowie NT / TN Mode funktionalität werden erst zu einem späteren Zeitpunkt beschrieben.

Basis Installation

Asterisk installieren

# emerge asterisk

Asterisk Add-On`s enthält verschiedene Plugins

# emerge asterisk-addons

Die Sounds enthalten Sprachausgabe und diverse Codecs

# emerge asterisk-sounds

Die Asterisk ISDN Treiber hier gibt es zwei Hauptanbieter, welcher genommen wird bleibt jedem selbst überlassen. Bitte jedoch nur eine. Dies sind nicht die Treiber für die ISDN Karte sondern die Treiber für die Komunikation zwischen ISDN-Karten-Treiber und Asterisk. Dies wird auch nur dann gebraucht wenn CAPI verwendet wird.

# emerge asterisk-chan_capi-cm

oder

# emerge asterisk-chan_capi

FAX untestützung

# emerge asterisk-app_rtxfax

Wer auch Videotelefonie machen möchte benötigt das H.323 Protokoll

# emerge asterisk-oh323

Ein Low-Cost Routing Plugin

# emerge asterisk-rate_engine

Somit wäre unsere Asterisk installation abgeschlossen es kann mit der Konfigurtion der Dateien losgehen.

Konfiguration

Konfigurationsdateien im Überblick

Zuerstmal für was ist welche Konfigurationsdatei?

Hauptverzeichniss ist /etc/asterisk

sip.conf              * Hier werden die SIP (Session Initiation Protokoll) Teilnehmer eingetragen.
                      * Die SIP Provider Registrierung und Konfiguration.

extensions.conf       * Die wohl wichtigste Datei, hier werden sämtliche Rufnummernpläne definiert
                        und alle anderen configs verweisen auf die extensions.conf

capi.conf             * Sämtliche ISDN Karten die CAPI verwenden werden hier konfiguriert.

misdn.conf            * Sämtliche ISDN Karten die mISDN verwenden werden hier konfiguriert.

zapata.conf           * ISDN Karten mit NT und TN Modes werden hier Konfiguriert.

voicemail.conf        * Mailboxen / Anrufbeantworter

features.conf         * Warteschlangen und Konferenzen

modules.conf          * gibt an welche Module beim start von Asterisk geladen werden. 
                        prinzipiell werde alle Module die sich in /usr/lib/asterisk/modules befinden geladen.
                        durch Eintragungen in modules.conf können Module ein/ausgeschlossen werden.

iax.con               * Dies ist ein Asterisk eigener Protokoll (Inter Asterisk Exchange Protokoll)
                        es wird verwendet damit mehrere Asterisk Server untereinander komunizieren                           können.


SIP (sip.conf)

Um überhaupt telefonieren zu können müssen Benutzer/SIP-Teilnehmer angelegt werden.
Am besten alles auf der Datei entfernen und folgendes eintragen.

File: /etc/asterisk/sip.conf
[general]
port=5060                             
;bindaddr=0.0.0.0
;srvlookup=yes
nat=yes
language=de
tos=lowdelay
canreinvite=no
dtmfmode=inband
disallow=all
allow=alaw
allow=ulaw
allow=gsm

register => <SIP-ID>:<SIP-Passwort>@sipgate.de/<SIP-ID>
context=sipgate_in

[sipgate-out]
type=peer
username=<SIP-ID>
fromuser=<SIP-ID>
secret=<SIP-Passwort>
host=sipgate.de
fromdomain=sipgate.de
insecure=very
qualify=yes

[20]
username=20
secret=passwort
type=friend
callerid=MySipPhone_1 <20>
host=dynamic
domain=192.168.0.100
mailbox=20
context=default

[21]
username=21
secret=passwort
type=friend
callerid=MySipPhone_2 <21>
host=dynamic
domain=192.168.0.100
mailbox=21
context=default

.
.
.

Rufnummernplan (extensions.conf)

Damit man Telefonieren kann muss Asterisk wissen was und wie er etwas machen soll. dies wird alles in die extensions.conf eingetragen. ich löche den geammten inhalt und trage folgendes in die datei ein.


File: /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=yes

[default]
include=sip20
include=sip21


[sip20]
exten => 20,1,Dial(SIP/20,30)
exten => 20,2,Hangup

[sip21]
exten => 21,1,Dial(SIP/20,30)
exten => 21,2,Hangup


Jetzt können sich SIP 20 und SIP 21 gegeseitig anrufen. Super was!


File: /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
priorityjumping=yes

;----------------------------MACRO-------------------------------------

[macro-localsip]

exten => s,1,Set(LANGUAGE()=de)
exten => s,n,Dial(SIP/${ARG1},20,tTr)
exten => s,n,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,Playback(vm-theperson)
exten => s-NOANSWER,n,SayDigits(${ARG1})
exten => s-NOANSWER,n,Playback(vm-isunavail)
exten => s-NOANSWER,n,Hangup

exten => s-BUSY,1,Playback(vm-theperson)
exten => s-BUSY,2,SayDigits(${ARG1})
exten => s-BUSY,3,Playback(vm-isonphone)
exten => s-BUSY,4,Hangup

exten => s,103,Playback(vm-theperson)
exten => s,104,SayDigits(${ARG1})
exten => s,105,Playback(vm-isunavail)
exten => s,106,Hangup

exten => _s-.,1,Goto(s-NOANSWER,1)



;------------------------DEFAULT CONTEXT---------------------------------

[default]

include => sipgate_out
include => capi_out
include => lokal
include => voicemenu
include => echotest
include => mailbox
include => mailbox_own


;---------------------SIP Teilnehmer-----------------------------

[lokal]

exten => _22X,1,Macro(localsip,${EXTEN:1})

exten => 600,1,MusicOnHold()
exten => 700,1,MusicOnHold(laut)


;---------------------VOICEMENÜ SIP Intern-------------------------

[voicemenu]

exten => 500,1,set(TIMEOUT(response)=10)
exten => 500,n,Answer
exten => 500,n,Wait(1)
exten => 500,n,Background(ansage1)

exten => 1,1,Dial(CAPI/contr1/10)
exten => 1,n,Dial,Hangup

exten => 2,1,Dial(CAPI/contr1/19)
exten => 2,n,Dial,Hangup

exten => 3,1,Dial(SIP/20,10)
exten => 3,n,Dial,Hangup

exten => 4,1,Dial(SIP/21,10)
exten => 4,n,Dial,Hangup

exten => t,1,Dial(SIP/22,10)
exten => i,1,Playback(invalid)


;-----------------------ECHOTEST & MAILBOX-----------------------

[echotest]
exten => 81,1,answer
exten => 81,2,wait,1
exten => 81,3,playback,demo-echotest
exten => 81,4,echo
exten => 81,5,playback,demo-echodone
exten => 81,6,hangup

[mailbox]
exten => 80,1,answer
exten => 80,2,wait,1
exten => 80,3,voicemailmain
exten => 80,4,hangup

[mailbox_own]
exten => 88,1,answer
exten => 88,2,wait,1
exten => 88,3,voicemailmain,s${CALLERIDNUM}
exten => 88,4,hangup

;--------------Ein & Ausgehende Gespräche über sipgate--------------

[sipgate_out]

exten => _0.,1,SetCallerID(SIP-ID)
exten => _0.,n,Dial(SIP/${EXTEN:1}@sipgate-out)
exten => _0.,n,Hangup

[sipgate_in]

exten => SIP-ID,1,Dial,(SIP/21,30,tT)
exten => SIP-ID,n,Hangup


;------------------------CAPI CONFIG--------------------------------


[capi_out]

exten => _7.,1,SetCallerID(13)
exten => _7.,n,Dial(CAPI/contr1/${EXTEN:1})
exten => _7.,n,Hangup

[capi-in]

exten => 25,1,Dial(SIP/20,45,tT)
exten => 25,n,Hangup

exten => 14,1,DISA,no-password|disa_out

;-------------------------VoiceMenü über CAPI--------------------------

exten => 13,1,set(TIMEOUT(response)=10)
exten => 13,n,Answer
exten => 13,n,Wait(1)
exten => 13,n,Background(ansage1)

exten => 1,1,Dial(CAPI/contr1/10)
exten => 1,n,Dial,Hangup

exten => 2,1,Dial(CAPI/contr1/19)
exten => 2,n,Dial,Hangup

exten => 3,1,Dial(SIP/20,10)
exten => 3,n,Dial,Hangup

exten => 4,1,Dial(SIP/21,10)
exten => 4,n,Dial,Hangup

exten => t,1,Dial(SIP/22,10)
exten => i,1,Playback(invalid)


ISDN (capi.conf)

File: /etc/asterisk/capi.conf
[general]
language=de
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8

;falls [interfaces] nicht geht dann [ISDN1] benutzen
[interfaces]

isdnmode=ptmp
incomingmsn=13,14,25
softdtmf=1
controller=1
group=1
context=capi-in
devices => 2
accountcode=

Mailbox (voicemail.conf)

File: /etc/asterisk/voicemail.conf
[general]
format=wav
serveremail=asterisk
attach=yes
maxsilence=10
silencethreshold=128
maxlogins=3
emaildateformat=%A, %d %B %Y at %H:%M:%S

[zonemessages]
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'

[default]

20 => 1234,Example Mailbox,root@localhost
21 => 1234,Example Mailbox,root@localhost
22 => 1234,Example Mailbox,root@localhost
23 => 1234,Example Mailbox,root@localhost
24 => 1234,Example Mailbox,root@localhost
25 => 1234,Example Mailbox,root@localhost
26 => 1234,Example Mailbox,root@localhost
27 => 1234,Example Mailbox,root@localhost
28 => 1234,Example Mailbox,root@localhost
29 => 1234,Example Mailbox,root@localhost

Module (modules.conf)

File: /etc/asterisk/modules.conf
[modules] 
autoload=yes 

noload => pbx_gtkconsole.so 
noload => pbx_kdeconsole.so 
noload => app_intercom.so 
noload => chan_modem.so 
noload => chan_modem_aopen.so 
noload => chan_modem_bestdata.so 
noload => chan_modem_i4l.so 
noload => chan_alsa.so 

load => res_musiconhold.so 
load => chan_capi.so 

[global] 
chan_capi.so=yes