Vorwort
1. Das How-To zu diesem Buch
1.1. Was ist Asterisk?
Unterschied zwischen klassischer Telefonanlage und Asterisk
1.2. Welche Kapitel sollten Sie lesen, und womit sollten Sie anfangen?
Absoluter Asterisk-Anfänger
Leser mit etwas Asterisk-Erfahrung
Der Asterisk-Profi
1.3. Updates und Versionen des Buches
1.4. Mitwirken und Feedback
Arten der Hilfe
FAQ für freiwillige Helfer
1.5. Hilfe, ich habe immer noch ein Problem mit Asterisk!
2. Hello World
2.1. Einleitung
Asterisk 1.4 oder 1.6?
2.2. Asterisk auf dem Server installieren
2.3. Hello-World im CLI aufrufen
Asterisk konfigurieren
Asterisk starten und Hello-World abrufen
2.4. Hello-World mit einem SIP-Telefon
sip.conf und das SIP-Telefon konfigurieren
Asterisk und Telefon starten
Der Test
Vom CLI aus das Telefon anrufen
Analyse
Kommentare in der Konfiguration
2.5. Eine Minimal-Telefonanlage mit zwei SIP-Telefonen
... und jetzt mit einem Anrufbeantworter
2.6. Rechteverwaltung mit Contexten
Quelle: Jedes Telefon ist in einem Context
Ziel: Contexte in der extensions.conf
2.7. Telefonate vom und in das öffentliche Netz
In das öffentliche Telefonnetz telefonieren
Gespräche vom öffentlichen Netz entgegennehmen
3. Dialplan – die Grundlagen
3.1. Context
Syntax
3.2. Extension
Syntax
Grundlegende Applikationen
Priorität
3.3. Pattern Matching
Syntax
Testen mit dialplan show
Wann matcht welches Pattern?
3.4. Includes im Dialplan
Syntax
Beispiel
Die Reihenfolge beim Include
Includes zeitgesteuert
3.5. Die Variable ${EXTEN} und die Funktion ${CALLERID(num)}
${EXTEN}
${CALLERID(num)}
4. Deutsche Anpassungen
4.1. Töne und Signale
4.2. Deutsche Sprachbausteine
Download und Installation deutscher Sprachprompts
Konfiguration der deutschen Prompts
Verzeichnisstruktur der Sprachbausteine
5. Case-Study einer Beispielfirma
5.1. Einleitung
5.2. Die Apfelmus GmbH
5.3. Der Rufnummernplan
5.4. Auswahl der Infrastruktur
Netzwerk
Server-Hardware
5.5. Die Grundkonfiguration
sip.conf für fast 100 Teilnehmer
Der Wählplan (Dialplan)
5.6. Wie geht es weiter?
5.7. FAQ
6. Programmieren im Dialplan
6.1. Kleines Programmierer-Howto
Programmstruktur
Variablen
Labels und Goto()
While()-Schleifen
GotoIf()-Bedingung
Gosub()-Unterprogramme
6.2. Variablen
Variablen in einer Extension auslesen
Allgemeines
Globale Variablen in der extensions.conf definieren
Variablen mit Set() definieren
Vererbung von Channel-Variablen
Feste Channel-Variablen
Variablenmanipulation
6.3. Besondere Extensions
Die h-Extension
Die i-Extension
Die o- und die a-Extension
Die t- und die T-Extension
Die s-Extension
6.4. Makro
Makro-Basics
6.5. Priority Jumping ist deprecated!
7. AEL
7.1. CLI-Befehle für AEL
7.2. aelparse
7.3. extensions.conf <-> extensions.ael
Zeilenende/Befehlsende
Kontexte, Extensions, Prioritäten
Kommentare
Includes – Andere Contexte einbinden
Globale Variablen
Ausdrücke und Zuweisungen
Labels, goto und jump
Bedingte Anweisungen (conditionals)
Schleifen (loops)
Makros (macros)
Hints
Filtern nach Anrufernummer
7.4. extensions.ael oder extensions.conf?
8. Protokolle
8.1. Einleitung
8.2. Netzwerkprotokolle
Transmission Control Protocol (TCP)
User Datagram Protocol (UDP)
8.3. Channels
8.4. Peers, Users und Friends
8.5. IAX versus SIP
8.6. SIP
Das SIP-NAT-Problem
SIP-Geräte in der extensions.conf
Globale Einstellungen
Geräte-Einstellungen
8.7. IAX
Warum IAX?
Beispiel für eine IAX-Konfiguration
Globale Einstellungen
Channel-Einstellungen
9. Codecs
9.1. Einleitung
9.2. Was macht ein Codec?
9.3. Performance
9.4. Konfiguration des Codecs
Beispiel mit einem festen Codec
Beispiel mit mehreren Codecs zur Auswahl
9.5. Die wichtigsten Codecs
9.6. Bandbreite und Trunking
10. ISDN
10.1. Einleitung
Minimalgrundlagen von ISDN
10.2. Welche ISDN-Karte soll ich nehmen?
Empfehlung für den Privathaushalt
Empfehlung für den geschäftlichen Einsatz
Hersteller und Treiber
Installationsanleitungen für ISDN-Karten
11. Analoge Telefonie
11.1. Einleitung
11.2. ATA (Analog-Telefon-Adapter)
11.3. Installationsanleitungen für Analog-Karten
12. Media Gateways
12.1. Einleitung
12.2. Vorteile
12.3. Nachteile
12.4. Fazit
13. Voicemail-System
13.1. Einleitung
13.2. Beispielanwendungen
Die Voicemailbox der Familie Meier
Die Apfelmus GmbH
13.3. Applikationen
VoiceMail()
VoiceMailMain()
13.4. voicemail.conf
[general]
[zonemessages]
Freie Contexte
Mailbox-Definition
13.5. Telefonbuch (Dial-by-Name)
Syntax
Funktionsweise
13.6. voicemail.conf als Passwortspeicher
13.7. Mini-VoiceMail (MiniVM)
Verzeichnisstruktur
minivm.conf
CLI-Befehle für Mini-VoiceMail
MiniVM-Applikationen und -Funktionen
14. Interactive-Voice-Response-Systeme (IVR)
14.1. Eine einfache IVR
Unterschied zwischen Playback() und Background()
Unterschied zwischen 10 und 1000
Falscheingaben (die i-Extension)
Pausen
14.2. Mehrstufige IVR-Systeme
Tiefe der IVR
14.3. Text-to-Speech (TTS)
Installation von Cepstral Text-to-Speech
Beispiele und Tests
Pausen in Texten
15. Die Asterisk-Datenbank (AstDB)
15.1. Einleitung
Performance
15.2. Die Asterisk-Datenbank
Werte in die Datenbank schreiben
Werte aus der Datenbank lesen
Werte aus der Datenbank löschen
15.3. Datenbankzugriff vom CLI
Werte in die Datenbank schreiben
Werte aus der Datenbank lesen
Werte aus der Datenbank löschen
Datenbankinhalt anzeigen
15.4. Datenbankzugriff von der Shell
15.5. Backup der Datenbank
15.6. Anwendungsbeispiel Call-Forwarding
Einfaches Call-Forwarding
Komplexes Call-Forwarding
15.7. Anwendungsbeispiel Calling-Card
16. Warteschleifen für Call-Center
16.1. Extension zum Musiktest
16.2. musiconhold.conf
16.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
16.4. agents.conf
autologoff
ackcall
endcall
wrapuptime
musiconhold
updatecdr
recordagentcalls
recordformat
createlink
urlprefix
savecallsin
agent
16.5. extensions.conf
16.6. Log-Datei
Queue-Log in MySQL importieren
17. Features
17.1. Transfer von Gesprächen
Blind Transfer
Attended Transfer
17.2. Gespräche parken
18. Telefonkonferenzen
18.1. Einleitung
18.2. Installation und das Timing-Device
18.3. Definition von Konferenzräumen
18.4. Zugang im Dialplan
18.5. Anzahl der Teilnehmer ansagen
19. Asterisk fernsteuern
19.1. asterisk -rx "Befehl"
Beispiel
19.2. Call Files
Parameter
Call Files in der Zukunft aufrufen
Beispiel Weckruf
19.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
19.4. Der Asynchronous Javascript Asterisk Manager (AJAM)
Beispiel: Anzahl der Mailbox-Nachrichten per AJAM abfragen
Hinweise zu AJAX und AJAM
20. Asterisk Gateway Interface (AGI)
20.1. Datenströme
STDIN
STDOUT
STDERR
20.2. Verzeichnisse und Rechte
20.3. Aufruf eines AGI-Skripts im Dialplan
20.4. Beispiele in verschiedenen Programmiersprachen
Perl
PHP
Ruby und Adhearsion
Andere Programmiersprachen
21. Fax-Server
21.1. Faxserver mit IAXmodem und HylaFax
Installation von IAXmodem
Installation von HylaFax
Faxe empfangen
Faxe versenden
Empfangene Faxe als E-Mail versenden
Hylafax-FAQ
22. SIP-Telefone
22.1. Einleitung
22.2. Snom VoIP-Telefone
Konfiguration von Asterisk
Konfiguration der Telefone
Unterschiedliche Klingeltöne
Benutzerdefinierte Menüführung
Telefone per Fernwartung neu starten
Weitere verfügbare Applikationen
23. BLF, Hints, Pickup
23.1. Ansteuerung der LEDs
sip.conf
Hints
23.2. Verfahren für SIP-Subscriptions
23.3. Konfiguration der Telefone für BLF
23.4. Test der Hints
23.5. Heranholen eines Anrufs (Pickup)
extensions.conf für Pickup
Konfiguration des Telefons für Pickup
Heranholen von einer Gruppe
23.6. Gezielte Ansteuerung der LEDs
24. Danksagungen
24.1. Einleitung
24.2. Danksagungen von Stefan Wintermeyer
24.3. Danksagungen von Philipp Kempgen
Glossar
A. Installationsanleitungen für Asterisk 1.4, 1.6, 1.8 und 10.0
A.1. Installation von Asterisk 1.4.x auf Debian Linux
A.2. Installation von Asterisk 1.6.x auf Debian Linux
A.3. Installation von Asterisk 1.8 auf Debian Linux
A.4. Installation von Asterisk 10.0 auf Debian Linux
B. Spezielle Installationsanleitungen für Asterisk mit ISDN- oder Analog-Karten
B.1. Installation der Sangoma B700 FlexBRI
Die FlexBRI-Karte einbauen
Build-Umgebung
Quellen von Zaptel und Asterisk
Installation von Wanpipe
Konfiguration für die FlexBRI
Wichtige Befehle für Wanpipe
B.2. Installation der Sangoma A500 ISDN-Karte
Einbau der A500-Karte
Build-Umgebung
Quellen von Asterisk
Installation von Wanpipe
Silent-Modus-Installation
Interaktiver-Modus-Installation
Runlevel
Konfiguration für die A500
Wichtige Befehle für Wanpipe
B.3. Installation der Digium B410p
Konfiguration der ISDN-Karte
Konfiguration der ISDN-Anschlussart
B.4. Installation der Digium TDM400p Analog-Karte
Installation
Beispiel-Dialplan
B.5. Installation einer BeroFix-Karte
Konfiguration der ISDN-Karte
C. Applikationen im Dialplan
C.1. AbsoluteTimeout()
C.2. AddQueueMember()
C.3. ADSIProg()
C.4. AgentCallbackLogin()
C.5. AgentLogin()
C.6. AgentMonitorOutgoing()
C.7. AGI()
C.8. AlarmReceiver()
C.9. AMD()
C.10. Answer()
C.11. AppendCDRUserField()
C.12. Authenticate()
C.13. Background()
C.14. BackgroundDetect()
C.15. Bridge()
C.16. Busy()
C.17. ChangeMonitor()
C.18. ChanIsAvail()
C.19. ChannelRedirect()
C.20. ChanSpy()
C.21. CheckGroup()
C.22. ClearHash()
C.23. Congestion()
C.24. ContinueWhile()
C.25. ControlPlayback()
C.26. Curl()
C.27. Cut()
C.28. DAHDIBarge()
C.29. DAHDIRAS()
C.30. DAHDIScan()
C.31. DAHDISendKeypadFacility()
C.32. DateTime()
C.33. DBdel()
C.34. DBdeltree()
C.35. DBget()
C.36. DBput()
C.37. DeadAGI()
C.38. Dial()
C.39. Dictate()
C.40. DigitTimeout()
C.41. Directory()
C.42. DISA()
C.43. DumpChan()
C.44. DUNDiLookup()
C.45. EAGI()
C.46. Echo()
C.47. EndWhile()
C.48. EnumLookup()
C.49. Eval()
C.50. Exec()
C.51. ExecIf()
C.52. ExecIfTime()
C.53. ExitWhile()
C.54. ExtenSpy()
C.55. ExternalIVR()
C.56. Festival()
C.57. Flash()
C.58. FollowMe()
C.59. ForkCDR()
C.60. GetCPEID()
C.61. GetGroupCount()
C.62. GetGroupMatchCount()
C.63. Gosub()
C.64. GosubIf()
C.65. Goto()
C.66. GotoIf()
C.67. GotoIfTime()
C.68. Hangup()
C.69. HasNewVoicemail()
C.70. HasVoicemail()
C.71. IAX2Provision()
C.72. ICES()
C.73. ImportVar()
C.74. Incomplete()
C.75. JabberSend()
C.76. JabberStatus()
C.77. KeepAlive()
C.78. Log()
C.79. LookupBlacklist()
C.80. LookupCIDName()
C.81. Macro()
C.82. MacroExclusive()
C.83. MacroExit()
C.84. MacroIf()
C.85. MailboxExists()
C.86. Math()
C.87. MD5()
C.88. MD5Check()
C.89. MeetMe()
C.90. MeetMeAdmin()
C.91. MeetMeChannelAdmin()
C.92. MeetMeCount()
C.93. Milliwatt()
C.94. MinivmAccMess()
C.95. MinivmDelete()
C.96. MinivmGreet()
C.97. MinivmNotify()
C.98. MinivmRecord()
C.99. MixMonitor()
C.100. Monitor()
C.101. Morsecode()
C.102. MP3Player()
C.103. MSet()
C.104. MusicOnHold()
C.105. NBScat()
C.106. NoCDR()
C.107. NoOp()
C.108. ODBCFinish()
C.109. Page()
C.110. Park()
C.111. ParkAndAnnounce()
C.112. ParkedCall()
C.113. PauseMonitor()
C.114. PauseQueueMember()
C.115. Pickup()
C.116. PickupChan()
C.117. Playback()
C.118. Playtones()
C.119. PrivacyManager()
C.120. Proceeding()
C.121. Progress()
C.122. Queue()
C.123. QueueLog()
C.124. RaiseException()
C.125. Random()
C.126. Read()
C.127. ReadExten()
C.128. ReadFile()
C.129. RealTime()
C.130. RealTimeUpdate()
C.131. ReceiveFAX()
C.132. Record()
C.133. RemoveQueueMember()
C.134. ResetCDR()
C.135. ResponseTimeout()
C.136. RetryDial()
C.137. Return()
C.138. Ringing()
C.139. SayAlpha()
C.140. SayDigits()
C.141. SayNumber()
C.142. SayPhonetic()
C.143. SayUnixTime()
C.144. SendDTMF()
C.145. SendFAX()
C.146. SendImage()
C.147. SendText()
C.148. SendURL()
C.149. Set()
C.150. SetAccount()
C.151. SetAMAFlags()
C.152. SetCallerID()
C.153. SetCallerPres()
C.154. SetCDRUserField()
C.155. SetCIDName()
C.156. SetCIDNum()
C.157. SetGlobalVar()
C.158. SetGroup()
C.159. SetLanguage()
C.160. SetMusicOnHold()
C.161. SetRDNIS()
C.162. SetTransferCapability()
C.163. SetVar()
C.164. SIPAddHeader()
C.165. SIPdtmfMode()
C.166. SIPGetHeader()
C.167. SMS()
C.168. SoftHangup()
C.169. Sort()
C.170. StackPop()
C.171. StartMusicOnHold()
C.172. StopMixMonitor()
C.173. StopMonitor()
C.174. StopMusicOnHold()
C.175. StopPlaytones()
C.176. System()
C.177. Transfer()
C.178. TryExec()
C.179. TrySystem()
C.180. TXTCIDName()
C.181. UnpauseMonitor()
C.182. UnpauseQueueMember()
C.183. UserEvent()
C.184. Verbose()
C.185. VMAuthenticate()
C.186. VoiceMail()
C.187. VoiceMailMain()
C.188. Wait()
C.189. WaitExten()
C.190. WaitForNoise()
C.191. WaitForRing()
C.192. WaitForSilence()
C.193. WaitMusicOnHold()
C.194. WaitUntil()
C.195. While()
C.196. Zapateller()
C.197. ZapBarge()
C.198. ZapRAS()
C.199. ZapScan()
C.200. ZapSendKeypadFacility()
D. Funktionen im Dialplan
D.1. AGC()
D.2. AGENT()
D.3. ARRAY()
D.4. AST_CONFIG()
D.5. BASE64_DECODE()
D.6. BASE64_ENCODE()
D.7. BLACKLIST()
D.8. CALLERID()
D.9. CALLERPRES()
D.10. CDR()
D.11. CHANNEL()
D.12. CHANNELS()
D.13. CHECK_MD5()
D.14. CHECKSIPDOMAIN()
D.15. CURL()
D.16. CUT()
D.17. DB()
D.18. DB_DELETE()
D.19. DB_EXISTS()
D.20. DENOISE()
D.21. DEVICE_STATE()
D.22. DIALGROUP()
D.23. DIALPLAN_EXISTS()
D.24. DUNDILOOKUP()
D.25. DUNDIQUERY()
D.26. DUNDIRESULT()
D.27. ENUMLOOKUP()
D.28. ENUMQUERY()
D.29. ENUMRESULT()
D.30. ENV()
D.31. EVAL()
D.32. EXCEPTION()
D.33. EXISTS()
D.34. EXTENSION_STATE()
D.35. FIELDQTY()
D.36. FILE()
D.37. FILTER()
D.38. GLOBAL()
D.39. GROUP()
D.40. GROUP_COUNT()
D.41. GROUP_LIST()
D.42. GROUP_MATCH_COUNT()
D.43. HASH()
D.44. HASHKEYS()
D.45. HINT()
D.46. IAXPEER()
D.47. IAXVAR()
D.48. ICONV()
D.49. IF()
D.50. IFMODULE()
D.51. IFTIME()
D.52. IMPORT()
D.53. ISNULL()
D.54. JABBER_STATUS()
D.55. KEYPADHASH()
D.56. LANGUAGE()
D.57. LEN()
D.58. LOCAL()
D.59. LOCK()
D.60. MAILBOX_EXISTS()
D.61. MATH()
D.62. MD5()
D.63. MEETME_INFO()
D.64. MINIVMACCOUNT()
D.65. MINIVMCOUNTER()
D.66. MUSICCLASS()
D.67. ODBC_ANTIGF()
D.68. ODBC_FETCH()
D.69. ODBC_funktionsname()
D.70. ODBC_PRESENCE()
D.71. ODBC_SQL()
D.72. QUEUE_MEMBER()
D.73. QUEUE_MEMBER_COUNT()
D.74. QUEUE_MEMBER_LIST()
D.75. QUEUE_MEMBER_PENALTY()
D.76. QUEUE_VARIABLES()
D.77. QUEUE_WAITING_COUNT()
D.78. QUEUEAGENTCOUNT()
D.79. QUOTE()
D.80. RAND()
D.81. REALTIME()
D.82. REALTIME_DESTROY()
D.83. REALTIME_STORE()
D.84. REGEX()
D.85. SET()
D.86. SHA1()
D.87. SHARED()
D.88. SHELL()
D.89. SIP_HEADER()
D.90. SIPCHANINFO()
D.91. SIPPEER()
D.92. SMDI_MSG()
D.93. SMDI_MSG_RETRIEVE()
D.94. SORT()
D.95. SPRINTF()
D.96. SQL_ESC()
D.97. STAT()
D.98. STRFTIME()
D.99. STRPTIME()
D.100. SYSINFO()
D.101. TIMEOUT()
D.102. TOLOWER()
D.103. TOUPPER()
D.104. TRYLOCK()
D.105. TXTCIDNAME()
D.106. UNLOCK()
D.107. URIDECODE()
D.108. URIENCODE()
D.109. VALID_EXTEN()
D.110. VERSION()
D.111. VMCOUNT()
D.112. VOLUME()
E. AGI-Befehle
E.1. ANSWER
E.2. ASYNCAGI BREAK
E.3. CHANNEL STATUS
E.4. CONTROL STREAM FILE
E.5. DATABASE DEL
E.6. DATABASE DELTREE
E.7. DATABASE GET
E.8. DATABASE PUT
E.9. EXEC
E.10. GET DATA
E.11. GET FULL VARIABLE
E.12. GET OPTION
E.13. GET VARIABLE
E.14. GOSUB
E.15. HANGUP
E.16. NOOP
E.17. RECEIVE CHAR
E.18. RECEIVE TEXT
E.19. RECORD FILE
E.20. SAY ALPHA
E.21. SAY DATE
E.22. SAY DATETIME
E.23. SAY DIGITS
E.24. SAY NUMBER
E.25. SAY PHONETIC
E.26. SAY TIME
E.27. SEND IMAGE
E.28. SEND TEXT
E.29. SET AUTOHANGUP
E.30. SET CALLERID
E.31. SET CONTEXT
E.32. SET EXTENSION
E.33. SET MUSIC
E.34. SET PRIORITY
E.35. SET VARIABLE
E.36. STREAM FILE
E.37. TDD MODE
E.38. VERBOSE
E.39. WAIT FOR DIGIT
F. AMI-Befehle
F.1. AbsoluteTimeout
F.2. AgentCallbackLogin
F.3. AgentLogoff
F.4. Agents
F.5. AGI
F.6. Atxfer
F.7. Bridge
F.8. Challenge
F.9. ChangeMonitor
F.10. Command
F.11. CoreSettings
F.12. CoreShowChannels
F.13. CoreStatus
F.14. CreateConfig
F.15. DAHDIDialOffhook
F.16. DAHDIDNDoff
F.17. DAHDIDNDon
F.18. DAHDIHangup
F.19. DAHDIRestart
F.20. DAHDIShowChannels
F.21. DAHDITransfer
F.22. DBDel
F.23. DBDelTree
F.24. DBGet
F.25. DBPut
F.26. Events
F.27. ExtensionState
F.28. GetConfig
F.29. GetConfigJSON
F.30. Getvar
F.31. Hangup
F.32. IAXnetstats
F.33. IAXpeerlist
F.34. IAXpeers
F.35. JabberSend
F.36. ListCategories
F.37. ListCommands
F.38. Login
F.39. Logoff
F.40. MailboxCount
F.41. MailboxStatus
F.42. MeetmeList
F.43. MeetmeMute
F.44. MeetmeUnmute
F.45. ModuleCheck
F.46. ModuleLoad
F.47. Monitor
F.48. Originate
F.49. Park
F.50. ParkedCalls
F.51. PauseMonitor
F.52. Ping
F.53. PlayDTMF
F.54. QueueAdd
F.55. QueueLog
F.56. QueuePause
F.57. QueuePenalty
F.58. QueueRemove
F.59. QueueRule
F.60. Queues
F.61. QueueStatus
F.62. QueueSummary
F.63. Redirect
F.64. Reload
F.65. SendText
F.66. SetCDRUserField
F.67. Setvar
F.68. ShowDialPlan
F.69. SIPnotify
F.70. SIPpeers
F.71. SIPqualifypeer
F.72. SIPshowpeer
F.73. SIPshowregistry
F.74. Status
F.75. StopMonitor
F.76. UnpauseMonitor
F.77. UpdateConfig
F.78. UserEvent
F.79. VoicemailUsersList
F.80. WaitEvent
F.81. ZapDialOffhook
F.82. ZapDNDoff
F.83. ZapDNDon
F.84. ZapHangup
F.85. ZapRestart
F.86. ZapShowChannels
F.87. ZapTransfer
G. Konfigurations-Templates
G.1. Templates anlegen
G.2. Templates verwenden
Beispiel
H. Upgrade von Asterisk 1.4 auf 1.6
H.1. AEL
H.2. Kern
H.3. Voicemail
H.4. Dialplan-Applikationen und -Funktionen
H.5. CDR
H.6. Audio-Formate
H.7. Channel-Treiber
H.8. Konfiguration
H.9. Manager-Interface (AMI)
I. Zaptel zu DAHDI
I.1. Geschichte
I.2. Konsequenzen
I.3. DAHDI
I.4. Interview mit Kevin P. Fleming
J. IAX vs. SIP
J.1. Original-E-Mail von Mark Spencer
K. GNU Free Documentation License
Stichwortverzeichnis