Asterisk 1.2 + 1.4 (deutsch)

Vorwort
1. Howto zu diesem Buch
1. Was überhaupt ist Asterisk?
Unterschied zwischen klassischer Telefonanlage und Asterisk
2. Welche Kapitel soll ich lesen und womit anfangen?
Absoluter Asterisk-Anfänger
Die Anfänger-FAQ
Leser mit etwas Asterisk-Erfahrung
Der Asterisk-Profi
3. Updates und Versionen des Buches
4. Mitwirken und Feedback
FAQ für freiwillige Helfer
5. Hilfe, ich habe immer noch ein Problem mit Asterisk!
2. Installation und "Hello World"
1. Einleitung
2. 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 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
1. Einleitung
2. Die Apfelmus GmbH
3. Der Rufnummernplan
4. Auswahl der Infrastruktur
Netzwerk
Server-Hardware
5. Die Grundkonfiguration
sip.conf für fast 100 Teilnehmer
CallerID
Der Wählplan (Dialplan)
Platzhalter - Pattern Matching
Die Variable ${EXTEN}
Include
Die extensions.conf für die Apfelmus GmbH
voicemail.conf
6. Wie geht es weiter?
7. FAQ
4. Programmieren im Dialplan
1. Context
Syntax
2. Extension
Syntax
Priorität
Ein hello-world Beispiel
n-Priorität
Regular Expressions
Syntax
Wann matcht welches Pattern?
3. Grundlegende Applikationen
4. Includes im Dialplan
Syntax
Beispiel
Includes zeitgesteuert
Syntax
Beispiel
Reihenfolge beim Include
5. 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
6. 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
7. Macro
Macro Basics
8. Kleines Programmierer Howto
Programmstruktur
Variablen
Labels und Goto()
While() Schleifen
GotoIf() Bedingung
Gosub() Unterprogramme
9. Priority Jumping ist deprecated
10. Asterisk Extension Language (AEL)
11. 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()
12. 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
1. Einleitung
2. Netzwerkprotokolle
Transmission Control Protocol (TCP)
Allgemeines
Verbindungsaufbau und -abbau
Der Drei-Wege-Handshake
Aufbau des TCP-Headers
Datenübertragung
Flusssteuerung
Slow-Start
Überlastkontrolle
Datenintegrität und Zuverlässigkeit
User Datagram Protocol (UDP)
Funktionsweise
Eigenschaften
3. Channels
4. Peers, Users und Friends
5. IAX versus SIP
6. 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
7. 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
1. Einleitung
2. Was macht ein Codec?
3. Performance
4. Konfiguration des Codecs
5. Die wichtigsten Codecs
6. Bandbreite und Trunking
7. Voicemailsystem
1. Einleitung
2. Beispielanwendungen
Voicemailbox der Familie Meier
Aufgabenstellung
Lösung
Die Apfelmus GmbH
Aufgabenstellung
Lösung
Besonderheiten
3. Applikationen
VoiceMail()
Syntax
VoiceMailMain()
Syntax
Menü
4. voicemail.conf
[general]
[zonemessages]
Syntax
Freie Contexte
Der Default-Context
Mailbox-Definition
Syntax
5. Telefonbuch (Dial-by-Name)
Syntax
Funktionsweise
6. voicemail.conf als Passwortspeicher
8. ISDN
1. Einleitung
2. Minimalgrundlagen von ISDN
ISDN Basis-Anschluss
ISDN Multiplex-Anschluss
3. Welche ISDN-Karte soll ich nehmen?
4. Installation und Konfiguration
Junghanns („bristuffed“)
Installation Asterisk
Konfiguration der ISDN-Treiber
mISDN
Digium B410P ISDN-Karte
mISDN allgemein
9. Analoge Telefonie
1. Einleitung
2. ATA (Analog-Telefon-Adapter)
3. Analoge Karten von Digium
Installation
s-Extension
10. Asterisk-Datenbank (AstDB)
1. Einleitung
Performance
2. Asterisk-Datenbank
Werte in die Datenbank schreiben
Werte aus der Datenbank lesen
Werte aus der Datenbank löschen
DBdel() und ${DB_DELETE()}
DBdeltree()
3. 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
4. Datenbankzugriff von der Shell
5. Backup der Datenbank
6. Anwendungsbeispiel CallForwarding
Einfaches CallForwarding
Komplexes CallForwarding
7. Anwendungsbeispiel CallingCard
11. Interactive Voice Response Systeme (IVR)
1. Eine einfache IVR
Unterschied zwischen Playback() und Background()
Unterschied zwischen 10 und 1000
Falscheingaben (die i-Extension)
Pausen
2. Mehrstufige IVR-Systeme
3. Text2Speech (TTS)
Installation Cepstral Text-to-Speech
Beispiele und Tests
Pausen in Texten
12. Telefonkonferenzen
1. Einleitung
2. Installation und das Timing-Device
3. Definition von Konferenzräumen
4. Zugang im Dialplan
5. Anzahl der Teilnehmer ansagen
13. Warteschleifen für Call-Center
1. Extension zum Musiktest
2. musiconhold.conf
3. 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
4. agents.conf
autologoff
ackcall
endcall
wrapuptime
musiconhold
updatecdr
recordagentcalls
recordformat
createlink
urlprefix
savecallsin
agent
5. extensions.conf
6. Log-Datei
14. Deutsche Anpassungen
1. Töne und Signale
2. 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
1. Installation IAXmodem
2. Installation Hylafax
Faxe empfangen
Faxe versenden
Fax FAQ
16. Asterisk fernsteuern
1. asterisk -rx "Befehl"
Beispiel
2. Call Files
Parameter
Call Files in der Zukunft aufrufen
Beispiel Weckruf
3. Das Manager-Interface (AMI)
Beispiel: Anzahl der Mailbox-Nachrichten mit Expect abfragen
StarAstAPI für PHP
Beispiel: Anzahl der Mailbox-Nachrichten mit PHP abfragen
4. 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)
1. Datenströme
STDIN
AGI Headers
STDOUT
STDERR
2. Verzeichnisse und Rechte
3. Aufruf eines AGI im Dialplan
4. Perl
Schritt-für-Schritt-Analyse des agi-test.agi-Skripts
5. PHP
phpAGI
6. Andere Programmiersprachen
7. 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
1. Transfer von Gesprächen
Blind Transfer
Attended Transfer
2. Gespräche parken
19. Telefone
1. Einleitung
2. 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
1. Asterisk und Hastenix
2. Sprachausgabe
3. Abspielen von Sounddateien
4. DTMF-Eingabe
5. Sprachaufnahme
Upload von Sprachaufnahmen zum Webserver
Verarbeitung von Sprachaufnahmen auf dem Webserver
6. Anrufweiterleitung
7. Fazit
21. Upgrade Asterisk 1.2 auf 1.4
1. Einleitung
2. Das neue Buildsystem
menuselect
Neue Soundcodecs für die Voiceprompts
3. Neue Struktur bei CLI-Kommandos
22. Danksagungen
1. Das Kernteam
2. Spezialisten
3. Helfer beim Beta-Test
4. Fehler im gedruckten Buch
Glossar
A. GNU Free Documentation License
1. PREAMBLE
2. APPLICABILITY AND DEFINITIONS
3. VERBATIM COPYING
4. COPYING IN QUANTITY
5. MODIFICATIONS
6. COMBINING DOCUMENTS
7. COLLECTIONS OF DOCUMENTS
8. AGGREGATION WITH INDEPENDENT WORKS
9. TRANSLATION
10. TERMINATION
11. FUTURE REVISIONS OF THIS LICENSE
12. ADDENDUM: How to use this License for your documents
B. Spezielle SIP-Provider
1. Einleitung
2. SIP-Provider T-Online
Asterisk bei T-Online registrieren
Über T-Online telefonieren
3. SIP-Provider dus.net
Asterisk bei dus.net registrieren
Über dus.net telefonieren
C. IAX vs. SIP
1. Original-E-Mail von Mark Spencer
D. Konfigurations-Templates
1. Templates anlegen
2. Templates verwenden
Beispiel
E. dCAP-Zertifizierung
F. Standard-Datenströme
1. Standardeingabe (stdin)
Beispiel
2. Standardausgabe (stdout)
Beispiel
3. Standardfehlerausgabe (stderr)
Beispiel
Stichwortverzeichnis

Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch