Asterisk 1.4 (deutsch - unstable)

Vorwort
1. Installation und "Hello World"
Einleitung
Eine Minimal-Telefonanlage
Die Aufgabe
Voraussetzungen
Welche Asterisk-Version ist empfehlenswert?
Welche Linux-Distribution ist die richtige für einen Asterisk-Server?
Warum keine fertigen Asterisk-Pakete mit rpm oder apt-get installieren?
Die Installation aus den aktuellen Asterisk-Sourcen
Den Asterisk-Server konfigurieren
Die SIP-Telefone konfigurieren
Und jetzt mit einem Anrufbeantworter
Was haben wir gerade gemacht?
extensions.conf - der Dialplan
voicemail.conf - der Anrufbeantworter
Ins öffentliche Telefonnetz telefonieren
Gespräche vom öffentlichen Netz entgegennehmen
2. Dialplan Grundlagen
Context
Syntax
Extension
Syntax
Grundlegende Applikationen
Priorität
Ein hello-world Beispiel
n-Priorität
Pattern Matching
Syntax
Testen mit dialplan show
Wann matcht welches Pattern?
Sonderregel für das Pattern _. in Asterisk 1.2
Includes im Dialplan
Syntax
Beispiel
Reihenfolge beim Include
Includes zeitgesteuert
Syntax
Beispiel
Die Variable ${EXTEN} und die Funktion ${CALLERID(num)}
${EXTEN}
${CALLERID(num)}
3. Case-Study einer Beispielfirma
Einleitung
Die Apfelmus GmbH
Der Rufnummernplan
Auswahl der Infrastruktur
Netzwerk
Server-Hardware
Die Grundkonfiguration
sip.conf für fast 100 Teilnehmer
CallerID
Der Wählplan (Dialplan)
Die extensions.conf für die Apfelmus GmbH
Schwarze Löcher im Rufnummernplan
voicemail.conf
Wie geht es weiter?
FAQ
4. Programmieren im Dialplan
Kleines Programmierer Howto
Programmstruktur
Variablen
Labels und Goto()
While() Schleifen
GotoIf() Bedingung
Gosub() Unterprogramme
Variablen
Variablen in einer Extension auslesen
Allgemeines
Strings
Quoting
Integer
Globale Variablen in der extensions.conf definieren
Variablen mit Set() definieren
Syntax
Vererbung von Channel-Variablen
Einstufige Vererbung
Mehrstufige Vererbung
Feste Channel-Variablen
Variablenmanipulation
Substring
Syntax
Beispiele
Besondere Extensions
Die h-Extension
Beispiel
Die i-Extension
Beispiel
Die o- und a-Extension
Die t- und T-Extension
t-Extension
T-Extension
Die s-Extension
Macro
Macro Basics
Priority Jumping ist deprecated
5. Protokolle
Einleitung
Netzwerkprotokolle
Transmission Control Protocol (TCP)
Allgemeines
Verbindungsaufbau und -abbau
Der Drei-Wege-Handshake
Verbindungsaufbau
Verbindungsabbau
Aufbau des TCP-Headers
Datenübertragung
TCP- / IP-Paket-Größe
Aufteilen der Anwendungsdaten auf TCP- / IP-Pakete
Datenintegrität und Zuverlässigkeit
User Datagram Protocol (UDP)
Funktionsweise
Eigenschaften
Channels
Peers, Users und Friends
IAX versus SIP
SIP
Das SIP-NAT-Problem
SIP-Geräte in der extensions.conf
Globale Einstellungen
context
allowguest
allowtransfer
realm
bindport
bindaddr
TOS-Flags (tos_sip, tos_audio, tos_video)
Sprach-Codecs (allow, disallow)
language
dtmfmode
videosupport
maxcallbitrate
g726nonstandard
rtpkeepalive
t38pt_udptl
register
externip
externhost
localnet
canreinvite
jbenable
jbforce
jbmaxsize
jbresyncthreshold
jbimpl
Channel-Einstellungen
type
context
secret
username
fromuser
host
defaultip
port
call-limit
callerid
nat
mailbox
subscribemwi
vmexten
Sprach-Codecs (allow, disallow)
regexten
qualify
callgroup
pickupgroup
IP-Adressen-Beschränkung (deny, permit)
setvar
rfc2833compensate
IAX
Warum IAX?
Beispiel für eine IAX-Konfiguration
Aufgabenstellung
Konfiguration ast1
Konfiguration ast2
Globale Einstellungen
bandwidth
allow
disallow
codecpriority
authdebug
autokill
amaflags
bindaddr
bindport
delayreject
language
mailboxdetail
tos
adsi
register
Channel-Einstellungen
type
accountcode
bandwidth
allow
disallow
codecpriority
amaflags
callerid
host
defaultip
permit
deny
auth
secret
inkeys
outkey
mailbox
language
context
regcontext
regexten
jitterbuffer
forcejitterbuffer
maxjitterbuffer
resyncthreshold
trunk
trunkfreq
qualify
qualifysmoothing
6. ISDN
Einleitung
Minimalgrundlagen von ISDN
ISDN Basis-Anschluss
ISDN Multiplex-Anschluss
Welche ISDN-Karte soll ich nehmen?
Installation Asterisk 1.4.x mit ISDN Treiber für Digium B410P auf Debian Linux 4.0 (Etch)
Konfiguration der ISDN-Karte
Start- und Stopskripte
Konfiguration der ISDN-Anschlussart
Anlagenanschluss
Mehrgeräteanschluss
7. Voicemailsystem
Einleitung
Beispielanwendungen
Voicemailbox der Familie Meier
Aufgabenstellung
Lösung
Die Apfelmus GmbH
Aufgabenstellung
Lösung
Besonderheiten
Applikationen
VoiceMail()
Syntax
VoiceMailMain()
Syntax
Menü
voicemail.conf
[general]
[zonemessages]
Syntax
Freie Contexte
Der Default-Context
Mailbox-Definition
Syntax
Telefonbuch (Dial-by-Name)
Syntax
Funktionsweise
voicemail.conf als Passwortspeicher
8. Interactive Voice Response Systeme (IVR)
Eine einfache IVR
Unterschied zwischen Playback() und Background()
Unterschied zwischen 10 und 1000
Eigenintelligenz
Falscheingaben (die i-Extension)
Pausen
Mehrstufige IVR-Systeme
Tiefe der IVR
Text2Speech (TTS)
Installation Cepstral Text-to-Speech
Beispiele und Tests
Pausen in Texten
9. Warteschleifen für Call-Center
Extension zum Musiktest
musiconhold.conf
queues.conf
musiconhold
announce
strategy
servicelevel
context
timeout
retry
weight
wrapuptime
maxlen
announce-frequency
announce-holdtime
announce-round-seconds
Sprachbausteine
periodic-announce-frequency
monitor-format
monitor-join
joinempty
leavewhenempty
eventwhencalled
eventmemberstatus
reportholdtime
memberdelay
timeoutrestart
autopause
ringinuse
member
agents.conf
autologoff
ackcall
endcall
wrapuptime
musiconhold
updatecdr
recordagentcalls
recordformat
createlink
urlprefix
savecallsin
agent
extensions.conf
Log-Datei
Queue-Log in MySQL importieren
10. Asterisk fernsteuern
asterisk -rx "Befehl"
Beispiel
Call Files
Parameter
Call Files in der Zukunft aufrufen
Beispiel Weckruf
Das Manager-Interface (AMI)
Beispiel: Anzahl der Mailbox-Nachrichten mit Expect abfragen
StarAstAPI für PHP
Beispiel: Anzahl der Mailbox-Nachrichten mit PHP abfragen
Der Aynchronous Javascript Asterisk Manager (AJAM)
Beispiel: Anzahl der Mailbox-Nachrichten per AJAM abfragen
HTML
Plain-Text
XML
Hinweise zu AJAX und AJAM
JSON
Ping
AJAM Demo
Apache
11. Faxserver
Faxserver mit IAXmodem und Hylafax
Installation IAXmodem
Installation Hylafax
Faxe empfangen
Faxe versenden
Empfangene Faxe als E-Mail versenden
IAXmodem und Hylafax FAQ
Glossar
A. Installationsanleitungen für Asterisk 1.4
Installation Asterisk 1.4.x auf Debian Linux 4.0 (Etch)
Start- und Stopskripte
B. Applikationen im Dialplan
AddQueueMember()
ADSIProg()
AgentCallbackLogin()
AgentLogin()
AgentMonitorOutgoing()
AGI()
AlarmReceiver()
AMD()
Answer()
AppendCDRUserField()
Authenticate()
Background()
BackgroundDetect()
Busy()
CallingPres()
ChangeMonitor()
ChanIsAvail()
ChannelRedirect()
ChanSpy()
Congestion()
ContinueWhile()
ControlPlayback()
DateTime()
DBdel()
DBdeltree()
DeadAGI()
Dial()
Dictate()
Directory()
DISA()
DumpChan()
EAGI()
Echo()
EndWhile()
Exec()
ExecIf()
ExecIfTime()
ExitWhile()
ExtenSpy()
ExternalIVR()
FastAGI()
Festival()
Flash()
FollowMe()
ForkCDR()
GetCPEID()
Gosub()
GosubIf()
Goto()
GotoIf()
GotoIfTime()
Hangup()
IAX2Provision()
ImportVar()
Log()
LookupBlacklist()
LookupCIDName()
Macro()
MacroExclusive()
MacroExit()
MacroIf()
MailboxExists()
MeetMe()
MeetMeAdmin()
MeetMeCount()
Milliwatt()
MixMonitor()
Monitor()
Morsecode()
MP3Player()
MusicOnHold()
NBScat()
NoCDR()
NoOp()
Page()
Park()
ParkAndAnnounce()
ParkedCall()
PauseMonitor()
PauseQueueMember()
Perl()
PHP()
Pickup()
Playback()
Playtones()
PrivacyManager()
Progress()
Queue()
QueueLog()
Random()
Read()
ReadFile()
RealTime()
RealTimeUpdate()
Record()
RemoveQueueMember()
ResetCDR()
RetryDial()
Return()
Ringing()
SayAlpha()
SayDigits()
SayNumber()
SayPhonetic()
SayUnixTime()
SendDTMF()
SendImage()
SendText()
SendURL()
Set()
SetAMAFlags()
SetCallerPres()
SetCDRUserField()
SetGlobalVar()
SetMusicOnHold()
SetTransferCapability()
SIPAddHeader()
SIPdtmfMode()
SMS()
SoftHangup()
StopMonitor()
StopPlaytones()
System()
Transfer()
TryExec()
TrySystem()
UnpauseMonitor()
UnpauseQueueMember()
UserEvent()
Verbose()
VMAuthenticate()
VoiceMail()
VoiceMailMain()
Wait()
WaitExten()
WaitForRing()
WaitForSilence()
WaitMusicOnHold()
While()
Zapateller()
ZapBarge()
ZapRAS()
ZapScan()
C. Funktionen im Dialplan
AGENT()
ARRAY()
BASE64_DECODE()
BASE64_ENCODE()
CALLERID()
CDR()
CHANNEL()
CHECKSIPDOMAIN()
CURL()
CUT()
DB()
DB_DELETE()
DB_EXISTS()
DUNDILOOKUP()
ENUMLOOKUP()
ENV()
EVAL()
EXISTS()
FIELDQTY()
FILTER()
GLOBAL()
GROUP()
GROUP_COUNT()
GROUP_LIST()
GROUP_MATCH_COUNT()
IAXPEER()
IF()
IFTIME()
ISNULL()
KEYPADHASH()
LANGUAGE()
LEN()
MATH()
MD5()
MUSICCLASS()
ODBC_SQL()
ODBC_USER_DATABASE()
QUEUEAGENTCOUNT()
QUEUE_MEMBER_COUNT()
QUEUE_MEMBER_LIST()
QUOTE()
RAND()
REGEX()
SET()
SHA1()
SIPCHANINFO()
SIPPEER()
SIP_HEADER()
SORT()
STAT()
STRFTIME()
STRPTIME()
TIMEOUT()
TXTCIDNAME()
URIDECODE()
URIENCODE()
VMCOUNT()
D. Konfigurations-Templates
Templates anlegen
Templates verwenden
Beispiel
E. GNU Free Documentation License
PREAMBLE
APPLICABILITY AND DEFINITIONS
VERBATIM COPYING
COPYING IN QUANTITY
MODIFICATIONS
COMBINING DOCUMENTS
COLLECTIONS OF DOCUMENTS
AGGREGATION WITH INDEPENDENT WORKS
TRANSLATION
TERMINATION
FUTURE REVISIONS OF THIS LICENSE
ADDENDUM: How to use this License for your documents
Stichwortverzeichnis