Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


Kapitel 4. Programmieren im Dialplan

Inhaltsverzeichnis

1. Context
1.1. Syntax
2. Extension
2.1. Syntax
2.2. Priorität
2.2.1. Ein hello-world Beispiel
2.2.2. n-Priorität
2.2.3. Prioritäten mit Label
2.3. Regular Expressions
2.3.1. Syntax
3. Grundlegende Applikationen
4. Includes im Dialplan
4.1. Syntax
4.2. Beispiel
4.3. Reihenfolge beim Matching von Patterns
5. Variablen
5.1. Variablen in einer Extension auslesen
5.2. Allgemeines
5.2.1. Strings
5.2.2. Quoting
5.2.3. Integer
5.3. Globale Variablen in der extensions.conf definieren
5.4. Variablen mit Set() definieren
5.4.1. Syntax
5.5. Vererbung von Channel-Variablen
5.5.1. Einstufige Vererbung
5.5.2. Mehrstufige Vererbung
5.6. Feste Channel-Variablen
5.7. Variablenmanipulation
5.7.1. Substring
6. Besondere Extensions
6.1. Die h-Extension
6.1.1. Beispiel
6.2. Die i-Extension
6.2.1. Beispiel
6.3. Die o- und a-Extension
6.4. Die t- und T-Extension
6.4.1. t-Extension
6.4.2. T-Extension
6.5. Die s-Extension
7. Kleines Programmierer Howto
7.1. Programmstruktur
7.2. Variablen
7.3. Labels und Goto()
7.4. While() Schleifen
7.5. GotoIf() Bedingung
7.6. Gosub() Unterprogramme
8. Priority Jumping ist deprecated
9. Asterisk Extension Language (AEL)
10. Applikationen im Dialplan
10.1. AddQueueMember()
10.2. ADSIProg()
10.3. AgentCallbackLogin()
10.4. AgentLogin()
10.5. AgentMonitorOutgoing()
10.6. AGI()
10.7. AlarmReceiver()
10.8. Answer()
10.9. Authenticate()
10.10. Background()
10.11. BackgroundDetect()
10.12. Busy()
10.13. CallingPres()
10.14. ChangeMonitor()
10.15. ChanIsAvail()
10.16. ChanSpy()
10.17. Congestion()
10.18. ControlPlayback()
10.19. DBdel()
10.20. DBdeltree()
10.21. DeadAGI()
10.22. Dial()
10.23. Dictate()
10.24. Directory()
10.25. DISA()
10.26. DumpChan()
10.27. EAGI()
10.28. Echo()
10.29. EndWhile()
10.30. Exec()
10.31. ExecIf()
10.32. FastAGI()
10.33. Festival()
10.34. Flash()
10.35. ForkCDR()
10.36. GetCPEID()
10.37. Gosub()
10.38. GosubIf()
10.39. Goto()
10.40. GotoIf()
10.41. GotoIfTime()
10.42. Hangup()
10.43. IAX2Provision()
10.44. ImportVar()
10.45. LookupBlacklist()
10.46. LookupCIDName()
10.47. Macro()
10.48. MailboxExists()
10.49. MeetMe()
10.50. MeetMeAdmin()
10.51. MeetMeCount()
10.52. Milliwatt()
10.53. MixMonitor()
10.54. Monitor()
10.55. MP3Player()
10.56. MusicOnHold()
10.57. NBScat()
10.58. NoCDR()
10.59. NoOp()
10.60. Park()
10.61. ParkAndAnnounce()
10.62. ParkedCall()
10.63. PauseQueueMember()
10.64. Perl()
10.65. PHP()
10.66. Playback()
10.67. Playtones()
10.68. PrivacyManager()
10.69. Progress()
10.70. Queue()
10.71. Random()
10.72. Read()
10.73. RealTime()
10.74. RealTimeUpdate()
10.75. Record()
10.76. RemoveQueueMember()
10.77. ResetCDR()
10.78. RetryDial()
10.79. Return()
10.80. Ringing()
10.81. SayAlpha()
10.82. SayDigits()
10.83. SayNumber()
10.84. SayPhonetic()
10.85. SayUnixTime()
10.86. SendDTMF()
10.87. SendImage()
10.88. SendText()
10.89. SendURL()
10.90. Set()
10.91. SetAMAFlags()
10.92. SetCallerPres()
10.93. SIPAddHeader()
10.94. SIPdtmfMode()
10.95. SMS()
10.96. SoftHangup()
10.97. StopMonitor()
10.98. StopPlaytones()
10.99. System()
10.100. Transfer()
10.101. TryExec()
10.102. TrySystem()
10.103. UnpauseQueueMember()
10.104. UserEvent()
10.105. Verbose()
10.106. VMAuthenticate()
10.107. VoiceMail()
10.108. VoiceMailMain()
10.109. Wait()
10.110. WaitExten()
10.111. WaitForRing()
10.112. WaitForSilence()
10.113. WaitMusicOnHold()
10.114. While()
10.115. Zapateller()
10.116. ZapBarge()
10.117. ZapRAS()
10.118. ZapScan()
11. Funktionen im Dialplan
11.1. AGENT()
11.2. ARRAY()
11.3. BASE64_DECODE()
11.4. BASE64_ENCODE()
11.5. CALLERID()
11.6. CDR()
11.7. CHANNEL()
11.8. CHECKSIPDOMAIN()
11.9. CURL()
11.10. CUT()
11.11. DB()
11.12. DB_DELETE()
11.13. DB_EXISTS()
11.14. DUNDILOOKUP()
11.15. ENUMLOOKUP()
11.16. ENV()
11.17. EVAL()
11.18. EXISTS()
11.19. FIELDQTY()
11.20. FILTER()
11.21. GLOBAL()
11.22. GROUP()
11.23. GROUP_COUNT()
11.24. GROUP_LIST()
11.25. GROUP_MATCH_COUNT()
11.26. IAXPEER()
11.27. IF()
11.28. IFTIME()
11.29. ISNULL()
11.30. KEYPADHASH()
11.31. LANGUAGE()
11.32. LEN()
11.33. MATH()
11.34. MD5()
11.35. MUSICCLASS()
11.36. ODBC_SQL()
11.37. ODBC_USER_DATABASE()
11.38. QUEUEAGENTCOUNT()
11.39. QUEUE_MEMBER_COUNT()
11.40. QUEUE_MEMBER_LIST()
11.41. QUOTE()
11.42. RAND()
11.43. REGEX()
11.44. SET()
11.45. SHA1()
11.46. SIPCHANINFO()
11.47. SIPPEER()
11.48. SIP_HEADER()
11.49. SORT()
11.50. STAT()
11.51. STRFTIME()
11.52. STRPTIME()
11.53. TIMEOUT()
11.54. TXTCIDNAME()
11.55. URIDECODE()
11.56. URIENCODE()
11.57. VMCOUNT()

Die Erstellung von intelligenten Funktionen oder Programmen kann in Asterisk extern über ein AGI-Skript oder intern in der extensions.conf erfolgen. In diesem Kapitel beschäftigen wir uns mit der internen Variante.

In der Konfigurationsdatei extensions.conf wird der so genannte Dialplan definiert. Dabei ähnelt der Dialplan häufig einem BASIC-Programm. Der Admin kann in einer einfachen Skriptsprache Programmabläufe und damit auch das Routing von Telefonaten erstellen. Ohne diesen Dialplan kann weder raus- noch reintelefoniert werden!