Asterisk 1.2 + 1.4 (deutsch)

Vorwort
1. Howto zu diesem Buch
Was überhaupt ist Asterisk?
Unterschied zwischen klassischer Telefonanlage und Asterisk
Welche Kapitel soll ich lesen und womit anfangen?
Absoluter Asterisk-Anfänger
Die Anfänger-FAQ
Leser mit etwas Asterisk-Erfahrung
Der Asterisk-Profi
Updates und Versionen des Buches
Mitwirken und Feedback
FAQ für freiwillige Helfer
Hilfe, ich habe immer noch ein Problem mit Asterisk!
2. 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?
Asterisk 1.2
Installation Asterisk 1.2.x auf Debian Linux
Installation Asterisk 1.2.x auf Ubuntu Linux
Installation Asterisk 1.2.x auf OpenSUSE Linux
Installation Asterisk 1.2.x auf Fedora Linux
Installation Asterisk 1.2.x auf FreeBSD
Installation Asterisk 1.2.x auf Mac OS X
Asterisk automatisch beim Hochfahren starten
Asterisk 1.4
Installation Asterisk 1.4.x auf Debian Linux
Installation Asterisk 1.4.x auf Ubuntu Linux
Installation Asterisk 1.4.x auf Fedora Linux
Installation Asterisk 1.4.x mit AsteriskNOW
Installation Asterisk 1.4.x auf Mac OS X
Weitere Sprachprompts
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
3. Die große Telefonanlage
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)
Platzhalter - Pattern Matching
Beispiele für Patterns
Die Variable ${EXTEN}
Include
Die extensions.conf für die Apfelmus GmbH
Schwarze Löcher im Rufnummernplan
voicemail.conf
Wie geht es weiter?
FAQ
4. Programmieren im Dialplan
Context
Syntax
Extension
Syntax
Priorität
Ein hello-world Beispiel
n-Priorität
Regular Expressions
Syntax
Wann matcht welches Pattern?
Grundlegende Applikationen
Includes im Dialplan
Syntax
Beispiel
Includes zeitgesteuert
Syntax
Beispiel
Reihenfolge beim Include
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
Kleines Programmierer Howto
Programmstruktur
Variablen
Labels und Goto()
While() Schleifen
GotoIf() Bedingung
Gosub() Unterprogramme
Priority Jumping ist deprecated
Asterisk Extension Language (AEL)
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()
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()
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
Flusssteuerung
Slow-Start
Überlastkontrolle
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. Codecs
Einleitung
Was macht ein Codec?
Performance
Konfiguration des Codecs
Die wichtigsten Codecs
Bandbreite und Trunking
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. ISDN
Einleitung
Minimalgrundlagen von ISDN
ISDN Basis-Anschluss
ISDN Multiplex-Anschluss
Welche ISDN-Karte soll ich nehmen?
Installation und Konfiguration
Junghanns („bristuffed“)
Installation Asterisk
Konfiguration der ISDN-Treiber
mISDN
Digium B410P ISDN-Karte
Installation
Konfiguration des mISDN-Treibers
Incoming
Outgoing
Echo Cancellation
Zusätzliche Informationen und Support
mISDN allgemein
Installation
Konfiguration der mISDN-Treiber
Asterisk-Konfiguration (misdn.conf)
Zusätzliche Informationen und Support
9. Analoge Telefonie
Einleitung
ATA (Analog-Telefon-Adapter)
Analoge Karten von Digium
Installation
s-Extension
10. Asterisk-Datenbank (AstDB)
Einleitung
Performance
Asterisk-Datenbank
Werte in die Datenbank schreiben
Werte aus der Datenbank lesen
Werte aus der Datenbank löschen
DBdel() und ${DB_DELETE()}
DBdeltree()
Datenbankzugriff vom CLI
Werte in die Datenbank schreiben
Werte aus der Datenbank lesen
Werte aus der Datenbank löschen
database del
database deltree
Datenbankinhalt anzeigen
Datenbankzugriff von der Shell
Backup der Datenbank
Anwendungsbeispiel CallForwarding
Einfaches CallForwarding
Komplexes CallForwarding
Anwendungsbeispiel CallingCard
11. Interactive Voice Response Systeme (IVR)
Eine einfache IVR
Unterschied zwischen Playback() und Background()
Unterschied zwischen 10 und 1000
Falscheingaben (die i-Extension)
Pausen
Mehrstufige IVR-Systeme
Text2Speech (TTS)
Installation Cepstral Text-to-Speech
Beispiele und Tests
Pausen in Texten
12. Telefonkonferenzen
Einleitung
Installation und das Timing-Device
Definition von Konferenzräumen
Zugang im Dialplan
Anzahl der Teilnehmer ansagen
13. 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
14. Deutsche Anpassungen
Töne und Signale
Deutsche Sprachbausteine
Verzeichnisstruktur der Sprachbausteine
Asterisk 1.4
Sprachbausteine der Stadt Pforzheim installieren
Sprachbausteine der amooma GmbH installieren
Sprachbausteine von Digium installieren
15. Asterisk als Faxserver
Installation IAXmodem
Installation Hylafax
Faxe empfangen
Faxe versenden
Fax FAQ
16. 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
17. Asterisk Gateway Interface (AGI)
Datenströme
STDIN
AGI Headers
STDOUT
STDERR
Verzeichnisse und Rechte
Aufruf eines AGI im Dialplan
Perl
Schritt-für-Schritt-Analyse des agi-test.agi-Skripts
PHP
phpAGI
Andere Programmiersprachen
AGI-Befehle
ANSWER
CHANNEL STATUS
DATABASE DEL
DATABASE DELTREE
DATABASE GET
DATABASE PUT
EXEC
GET DATA
GET FULL VARIABLE
GET OPTION
GET VARIABLE
HANGUP
NOOP
RECEIVE CHAR
RECEIVE TEXT
RECORD FILE
SAY ALPHA
SAY DATE
SAY DATETIME
SAY DIGITS
SAY NUMBER
SAY PHONETIC
SAY TIME
SEND IMAGE
SEND TEXT
SET AUTOHANGUP
SET CALLERID
SET CONTEXT
SET EXTENSION
SET MUSIC
SET PRIORITY
SET VARIABLE
STREAM FILE
TDD MODE
VERBOSE
WAIT FOR DIGIT
18. Features
Transfer von Gesprächen
Blind Transfer
Attended Transfer
Gespräche parken
19. Telefone
Einleitung
snom VoIP-Telefone
Konfiguration von Asterisk
Konfiguration der Telefone
Manuelle Konfiguration
Automatische Konfiguration
Unterschiedliche Klingeltöne
Benutzerdefinierte Menüführung (nur snom 360)
Ansteuerung der Leitungstasten und -LEDs
Konfiguration der Rufanzeige
Rufannahme (PickUp) eines angezeigten Gesprächs
Gezielte Ansteuerung der LEDs
Telefone per Fernwartung neu starten
Weitere verfügbare Applikationen
20. Asterisk und VoiceXML
Asterisk und Hastenix
Sprachausgabe
Abspielen von Sounddateien
DTMF-Eingabe
Sprachaufnahme
Upload von Sprachaufnahmen zum Webserver
Verarbeitung von Sprachaufnahmen auf dem Webserver
Anrufweiterleitung
Fazit
21. Upgrade Asterisk 1.2 auf 1.4
Einleitung
Das neue Buildsystem
menuselect
Neue Soundcodecs für die Voiceprompts
Neue Struktur bei CLI-Kommandos
22. Danksagungen
Das Kernteam
Spezialisten
Helfer beim Beta-Test
Fehler im gedruckten Buch
Glossar
A. 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
B. Spezielle SIP-Provider
Einleitung
SIP-Provider T-Online
Asterisk bei T-Online registrieren
Über T-Online telefonieren
SIP-Provider dus.net
Asterisk bei dus.net registrieren
Über dus.net telefonieren
C. IAX vs. SIP
Original-E-Mail von Mark Spencer
D. Konfigurations-Templates
Templates anlegen
Templates verwenden
Beispiel
E. dCAP-Zertifizierung
F. Standard-Datenströme
Standardeingabe (stdin)
Beispiel
Standardausgabe (stdout)
Beispiel
Standardfehlerausgabe (stderr)
Beispiel
Stichwortverzeichnis