@@ -1,58 +1,173 @@
Asterisk Documentation
-Asterisk Development Team <asteriskteam@digium.com> 1. Home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1 Asterisk 1.8 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1.1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1.1.1 Precursors, Background and Business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1.1.1.1 Asterisk Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1.1.2 Beginning Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.1.1.2.1 Installing Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.1.1.2.2 Installing Asterisk From Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.1.1.2.3 Getting Started with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.1.1.2.4 Asterisk Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.1.1.2.5 Asterisk Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.1.1.2.6 Basic PBX Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 1.1.1.2.7 Dialplan Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.1.1.2.8 Auto-attendant and IVR Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.1.1.2.9 Dialplan Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 1.1.2 Configuration and Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 1.1.2.1 Asterisk Calendaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 1.1.2.1.1 Configuring Asterisk Calendaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 1.1.2.1.2 Calendaring Dialplan Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 1.1.2.1.3 Calendaring Dialplan Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 1.1.2.2 Asterisk Channel Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 1.1.2.2.1 Inter-Asterisk eXchange protocol, version 2 (IAX2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 1.1.2.2.2 mISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 1.1.2.2.3 Local Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 1.1.2.2.4 Mobile Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 1.1.2.3 Asterisk Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 1.1.2.3.1 General Configuration Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 1.1.2.3.2 Database Support Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 1.1.2.3.3 Privacy Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 1.1.2.4 Asterisk Extension Language (AEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 1.1.2.4.1 Introduction to AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 1.1.2.4.2 AEL and Asterisk in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 1.1.2.4.3 Getting Started with AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 1.1.2.4.4 AEL Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 1.1.2.4.5 About "aelparse" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.4.6 General Notes about AEL Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 1.1.2.4.7 AEL Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 1.1.2.4.8 AEL Procedural Interface and Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 1.1.2.4.9 AEL Example Usages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 1.1.2.4.10 AEL Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 1.1.2.4.11 AEL Semantic Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 1.1.2.4.12 Differences with the original version of AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 1.1.2.4.13 AEL Hints and Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 1.1.2.4.14 The Full Power of AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 1.1.2.5 Asterisk Manager Interface (AMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 1.1.2.5.1 The Asterisk Manager TCP IP API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 1.1.2.5.2 AMI Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 1.1.2.5.3 AMI Manager Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 1.1.2.5.4 AMI Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 1.1.2.5.5 Ensuring all modules are loaded with AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 1.1.2.5.6 Device Status Reports with AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 1.1.2.5.7 Some Standard AMI Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 1.1.2.5.8 Asynchronous Javascript Asterisk Manger (AJAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 1.1.2.6 Asterisk Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 1.1.2.6.1 Configuring Call Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 1.1.2.6.2 Queue Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 1.1.2.7 Asterisk Security Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 1.1.2.7.1 Security Framework Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 1.1.2.7.2 Security Event Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 1.1.2.7.3 Asterisk Security Event Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 1.1.2.7.4 Security Events to Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 1.1.2.7.5 Security Log File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 1.1.2.8 Asterisk Sounds Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 1.1.2.8.1 Getting the Sounds Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 1.1.2.8.2 About the Sounds Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 1.1.2.9 Call Completion Supplementary Services (CCSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 1.1.2.9.1 CCSS Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 1.1.2.9.2 The Call Completion Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
+Asterisk Development Team <asteriskteam@digium.com> 1. Asterisk Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 Creating a Build Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3 Updating an Ubuntu Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4 rebuildd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.5 Working with Source Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2. Home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1 Asterisk 1.8 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1.1 Precursors, Background and Business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1.1.1 Asterisk Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.1.2 Beginning Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.1.2.1 Installing Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.1.2.2 Asterisk Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.1.2.3 Basic PBX Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.1.2.4 Dialplan Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.1.1.2.5 Auto-attendant and IVR Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.1.1.2.6 Dialplan Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.1.2.7 Installing Asterisk From Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.1.1.2.8 Getting Started with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2.1.1.2.9 Asterisk Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.1.1.2.10 Asterisk on (Open)Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.1.2 Configuration and Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 2.1.2.1 Asterisk Calendaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 2.1.2.1.1 Configuring Asterisk Calendaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 2.1.2.1.2 Calendaring Dialplan Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.1.2.1.3 Calendaring Dialplan Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 2.1.2.2 Asterisk Channel Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 2.1.2.2.1 Inter-Asterisk eXchange protocol, version 2 (IAX2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 2.1.2.2.2 mISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 2.1.2.2.3 Local Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 2.1.2.2.4 Mobile Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 2.1.2.3 Asterisk Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 2.1.2.3.1 General Configuration Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 2.1.2.3.2 Database Support Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 2.1.2.3.3 Privacy Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 2.1.2.4 Asterisk Extension Language (AEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 2.1.2.4.1 Introduction to AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 2.1.2.4.2 AEL and Asterisk in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 2.1.2.4.3 Getting Started with AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 2.1.2.4.4 AEL Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 2.1.2.4.5 About "aelparse" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.4.6 General Notes about AEL Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 2.1.2.4.7 AEL Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 2.1.2.4.8 AEL Procedural Interface and Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 2.1.2.4.9 AEL Example Usages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 2.1.2.4.10 AEL Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 2.1.2.4.11 AEL Semantic Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 2.1.2.4.12 Differences with the original version of AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 2.1.2.4.13 AEL Hints and Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 2.1.2.4.14 The Full Power of AEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 2.1.2.5 Asterisk Manager Interface (AMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 2.1.2.5.1 The Asterisk Manager TCP IP API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 2.1.2.5.2 AMI Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 2.1.2.5.3 AMI Manager Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 2.1.2.5.4 AMI Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 2.1.2.5.5 Ensuring all modules are loaded with AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 2.1.2.5.6 Device Status Reports with AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 2.1.2.5.7 Some Standard AMI Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 2.1.2.5.8 Asynchronous Javascript Asterisk Manger (AJAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 2.1.2.6 Asterisk Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 2.1.2.6.1 Configuring Call Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 2.1.2.6.2 Queue Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 2.1.2.7 Asterisk Security Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.1.2.7.1 Security Framework Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.1.2.7.2 Security Event Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 2.1.2.7.3 Asterisk Security Event Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 2.1.2.7.4 Security Events to Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
-1.1.2.9.3 Call Completion Info and Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.9.4 Generic Call Completion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.10 Call Detail Records (CDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.10.1 CDR Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.10.2 CDR Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.10.3 CDR Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.10.4 CDR Storage Backends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.11 Calling using Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12 Channel Event Logging (CEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.1 CEL Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.2 CEL Events and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.3 CEL Applications and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.4 CEL Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.5 Generating Billing Information from CEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.12.6 CEL Storage Backends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13 Channel Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.1 Parameter Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.2 About Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.3 Variable Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.4 Selecting Characters from Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.13.6 Asterisk standard channel variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.14 Distributed Universal Number Discovery (DUNDi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.14.1 Introduction to DUNDi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.14.2 DUNDIQUERY and DUNDIRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.14.3 DUNDi Peering Agreement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.15 E.164 NUmber Mapping (ENUM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.15.1 The ENUMLOOKUP Dialplan Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.1 Asterisk Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.2 Asterisk Call FIles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.3 Asterisk Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.4 Asterisk Manager Interface (AMI) Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.5 Building Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.6 Call Completion Supplementary Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.7 Call Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.8 Channel Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.9 Database Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.10 Distributed Device State with AIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.11 Distributed Device State with XMPP PubSub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.12 DUNDi - Distributed Universal Number Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.13 External IVR Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.14 Followme - Realtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.15 IAX2 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.16 Jabber in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.17 Jingle in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.18 LDAP Realtime Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.19 Open Settlement Protocol (OSP) User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.20 PSTN Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.21 Real-time Text (T.140) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.22 RTP Packetization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.23 Simple Message Desk Interface (SMDI) Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.24 Simple Network Management Protocol (SNMP) Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.25 SIP Retransmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.26 SIP TLS Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.27 Speech Recognition API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.28 SQLite Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.29 Storing Voicemail in PostgreSQL via ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.30 Timing Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.31 Using the Hoard Memory Allocator with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.32 Video Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.16.33 Video Telephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.17 Manipulating Party ID Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.18 Packet Loss Concealment (PLC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.18.1 PLC Background on Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.18.2 PLC Restrictions and Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.18.3 Requirements for PLC Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.18.4 PLC Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19 Phone Provisioning in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19.1 Configuration of phoneprov.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19.2 Creating Phone Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19.3 Configuration of users.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19.4 Phone Provisioning Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.19.5 Phone Provisioning, Putting it all together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.20 Reference Information Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.2.7.5 Security Log File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.8 Asterisk Sounds Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.8.1 Getting the Sounds Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.8.2 About the Sounds Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.9 Call Completion Supplementary Services (CCSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.9.1 CCSS Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.9.2 The Call Completion Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.9.3 Call Completion Info and Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.9.4 Generic Call Completion Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.10 Call Detail Records (CDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.10.1 CDR Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.10.2 CDR Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.10.3 CDR Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.10.4 CDR Storage Backends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.11 Calling using Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12 Channel Event Logging (CEL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.1 CEL Design Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.2 CEL Events and Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.3 CEL Applications and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.4 CEL Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.5 Generating Billing Information from CEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.12.6 CEL Storage Backends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13 Channel Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.1 Parameter Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.2 About Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.3 Variable Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.4 Selecting Characters from Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.13.6 Asterisk standard channel variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.14 Distributed Universal Number Discovery (DUNDi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.14.1 Introduction to DUNDi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.14.2 DUNDIQUERY and DUNDIRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.14.3 DUNDi Peering Agreement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.15 E.164 NUmber Mapping (ENUM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.15.1 The ENUMLOOKUP Dialplan Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.1 Asterisk Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.2 Asterisk Call FIles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.3 Asterisk Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.4 Asterisk Manager Interface (AMI) Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.5 Building Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.6 Call Completion Supplementary Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.7 Call Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.8 Channel Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.9 Database Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.10 Distributed Device State with AIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.11 Distributed Device State with XMPP PubSub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.12 DUNDi - Distributed Universal Number Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.13 External IVR Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.14 Followme - Realtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.15 IAX2 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.16 Jabber in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.17 Jingle in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.18 LDAP Realtime Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.19 Open Settlement Protocol (OSP) User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.20 PSTN Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.21 Real-time Text (T.140) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.22 RTP Packetization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.23 Simple Message Desk Interface (SMDI) Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.24 Simple Network Management Protocol (SNMP) Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.25 SIP Retransmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.26 SIP TLS Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.27 Speech Recognition API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.28 SQLite Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.29 Storing Voicemail in PostgreSQL via ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.30 Timing Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.31 Using the Hoard Memory Allocator with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.32 Video Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.16.33 Video Telephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.17 Manipulating Party ID Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.18 Packet Loss Concealment (PLC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.18.1 PLC Background on Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.18.2 PLC Restrictions and Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.18.3 Requirements for PLC Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.18.4 PLC Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-149 150 151 151 151 152 152 160 165 165 184 185 186 186 186 195 195 195 196 196 197 205 210 210 210 210 222 222 226 227 230 232 233 246 260 260 261 264 264 270 277 293 296 297 304 306 306 307 321 326 328 329 331 350 352 353 358 361 371 373 374 378 378 385 385 386 386 386 387 387 387 388 389 390 391
+152 153 153 153 154 155 155 158 159 160 160 160 161 161 169 174 174 193 194 195 195 195 204 204 204 205 205 206 214 219 219 219 219 231 231 235 236 239 241 242 255 269 269 270 273 273 279 286 302 305 306 313 315 315 316 330 335 337 338 340 359 361 362 367 370 380 382 383 387 387 394 394 395 395 395
-1.1.2.20.1 License Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.20.2 Important Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.20.3 Telephony Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.21 Secure Calling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.21.1 Secure Calling Specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.21.2 Secure Calling Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.22 Shared Line Appearances (SLA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.22.1 Introduction to Shared Line Appearances (SLA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.22.2 SLA Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.22.3 SLA Configuration Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.22.4 SLA and Call Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23 Short Message Service (SMS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.1 Introduction to SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.2 SMS and extensions.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.3 SMS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.4 SMS Delivery Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.5 SMS File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.6 SMS Sub Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.7 SMS Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.8 SMS Typical Use with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.23.9 Using SMSq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.24 Voicemail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.24.1 ODBC Voicemail Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.24.2 IMAP Voicemail Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2.25 Asterisk SIP Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3 Asterisk Command Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1 AGI Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.1 AGICommand_ANSWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.2 AGICommand_ASYNCAGI BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.3 AGICommand_CHANNEL STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.4 AGICommand_CONTROL STREAM FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.5 AGICommand_DATABASE DEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.6 AGICommand_DATABASE DELTREE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.7 AGICommand_DATABASE GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.8 AGICommand_DATABASE PUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.9 AGICommand_EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.10 AGICommand_GET DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.11 AGICommand_GET FULL VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.12 AGICommand_GET OPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.13 AGICommand_GET VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.14 AGICommand_GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.15 AGICommand_HANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.16 AGICommand_NOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.17 AGICommand_RECEIVE CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.18 AGICommand_RECEIVE TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.19 AGICommand_RECORD FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.20 AGICommand_SAY ALPHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.21 AGICommand_SAY DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.22 AGICommand_SAY DATETIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.23 AGICommand_SAY DIGITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.24 AGICommand_SAY NUMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.25 AGICommand_SAY PHONETIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.26 AGICommand_SAY TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.27 AGICommand_SEND IMAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.28 AGICommand_SEND TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.29 AGICommand_SET AUTOHANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.30 AGICommand_SET CALLERID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.31 AGICommand_SET CONTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.32 AGICommand_SET EXTENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.33 AGICommand_SET MUSIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.34 AGICommand_SET PRIORITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.35 AGICommand_SET VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.36 AGICommand_SPEECH ACTIVATE GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.37 AGICommand_SPEECH CREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.38 AGICommand_SPEECH DEACTIVATE GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.39 AGICommand_SPEECH DESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.40 AGICommand_SPEECH LOAD GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.41 AGICommand_SPEECH RECOGNIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.42 AGICommand_SPEECH SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.43 AGICommand_SPEECH UNLOAD GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.44 AGICommand_STREAM FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.45 AGICommand_TDD MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.46 AGICommand_VERBOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.47 AGICommand_WAIT FOR DIGIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.1.48 AGI Command Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.2.19 Phone Provisioning in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.19.1 Configuration of phoneprov.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.19.2 Creating Phone Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.19.3 Configuration of users.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.19.4 Phone Provisioning Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.19.5 Phone Provisioning, Putting it all together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.20 Reference Information Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.20.1 License Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.20.2 Important Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.20.3 Telephony Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.21 Secure Calling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.21.1 Secure Calling Specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.21.2 Secure Calling Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.22 Shared Line Appearances (SLA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.22.1 Introduction to Shared Line Appearances (SLA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.22.2 SLA Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.22.3 SLA Configuration Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.22.4 SLA and Call Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23 Short Message Service (SMS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.1 Introduction to SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.2 SMS and extensions.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.3 SMS Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.4 SMS Delivery Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.5 SMS File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.6 SMS Sub Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.7 SMS Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.8 SMS Typical Use with Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.23.9 Using SMSq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.24 Voicemail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.24.1 ODBC Voicemail Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.24.2 IMAP Voicemail Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2.25 Asterisk SIP Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Asterisk Command Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1 AGI Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.1 AGICommand_ANSWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.2 AGICommand_ASYNCAGI BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.3 AGICommand_CHANNEL STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.4 AGICommand_CONTROL STREAM FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.5 AGICommand_DATABASE DEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.6 AGICommand_DATABASE DELTREE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.7 AGICommand_DATABASE GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.8 AGICommand_DATABASE PUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.9 AGICommand_EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.10 AGICommand_GET DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.11 AGICommand_GET FULL VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.12 AGICommand_GET OPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.13 AGICommand_GET VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.14 AGICommand_GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.15 AGICommand_HANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.16 AGICommand_NOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.17 AGICommand_RECEIVE CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.18 AGICommand_RECEIVE TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.19 AGICommand_RECORD FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.20 AGICommand_SAY ALPHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.21 AGICommand_SAY DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.22 AGICommand_SAY DATETIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.23 AGICommand_SAY DIGITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.24 AGICommand_SAY NUMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.25 AGICommand_SAY PHONETIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.26 AGICommand_SAY TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.27 AGICommand_SEND IMAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.28 AGICommand_SEND TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.29 AGICommand_SET AUTOHANGUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.30 AGICommand_SET CALLERID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.31 AGICommand_SET CONTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.32 AGICommand_SET EXTENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.33 AGICommand_SET MUSIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.34 AGICommand_SET PRIORITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.35 AGICommand_SET VARIABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.36 AGICommand_SPEECH ACTIVATE GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.37 AGICommand_SPEECH CREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.38 AGICommand_SPEECH DEACTIVATE GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.39 AGICommand_SPEECH DESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.40 AGICommand_SPEECH LOAD GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.41 AGICommand_SPEECH RECOGNIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-391 392 394 396 396 397 405 405 405 407 409 410 410 410 411 411 412 412 413 413 413 415 415 416 420 420 420 420 420 421 422 422 423 424 424 425 425 426 426 427 427 428 428 429 429 430 431 431 432 432 433 433 434 435 435 436 436 437 437 438 438 439 439 440 440 441 441 442 442 443 443 444 444 445 445
+396 396 396 397 398 399 400 400 401 403 405 405 406 414 414 414 416 418 419 419 419 420 420 421 421 422 422 422 424 424 425 429 429 429 429 429 430 431 431 432 433 433 434 434 435 435 436 436 437 437 438 438 439 440 440 441 441 442 442 443 444 444 445 445 446 446 447 447 448 448 449 449 450 450 451
-1.1.3.2 AMI Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.1 AMI Action Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.2 ManagerAction_AbsoluteTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.3 ManagerAction_AgentLogoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.4 ManagerAction_Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.5 ManagerAction_AGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.6 ManagerAction_AOCMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.7 ManagerAction_Atxfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.8 ManagerAction_Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.9 ManagerAction_Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.10 ManagerAction_ChangeMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.11 ManagerAction_Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.12 ManagerAction_CoreSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.13 ManagerAction_CoreShowChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.14 ManagerAction_CoreStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.15 ManagerAction_CreateConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.16 ManagerAction_DAHDIDialOffhook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.17 ManagerAction_DAHDIDNDoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.18 ManagerAction_DAHDIDNDon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.19 ManagerAction_DAHDIHangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.20 ManagerAction_DAHDIRestart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.21 ManagerAction_DAHDIShowChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.22 ManagerAction_DAHDITransfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.23 ManagerAction_DataGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.24 ManagerAction_DBDel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.25 ManagerAction_DBDelTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.26 ManagerAction_DBGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.27 ManagerAction_DBPut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.28 ManagerAction_Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.29 ManagerAction_ExtensionState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.30 ManagerAction_GetConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.31 ManagerAction_GetConfigJSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.32 ManagerAction_Getvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.33 ManagerAction_Hangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.34 ManagerAction_IAXnetstats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.35 ManagerAction_IAXpeerlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.36 ManagerAction_IAXpeers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.37 ManagerAction_IAXregistry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.38 ManagerAction_JabberSend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.39 ManagerAction_ListCategories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.40 ManagerAction_ListCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.41 ManagerAction_LocalOptimizeAway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.42 ManagerAction_Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.43 ManagerAction_Logoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.44 ManagerAction_MailboxCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.45 ManagerAction_MailboxStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.46 ManagerAction_MeetmeList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.47 ManagerAction_MeetmeMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.48 ManagerAction_MeetmeUnmute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.49 ManagerAction_MixMonitorMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.50 ManagerAction_ModuleCheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.51 ManagerAction_ModuleLoad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.52 ManagerAction_Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.53 ManagerAction_Originate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.54 ManagerAction_Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.55 ManagerAction_ParkedCalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.56 ManagerAction_PauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.57 ManagerAction_Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.58 ManagerAction_PlayDTMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.59 ManagerAction_QueueAdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.60 ManagerAction_QueueLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.61 ManagerAction_QueuePause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.62 ManagerAction_QueuePenalty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.63 ManagerAction_QueueReload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.64 ManagerAction_QueueRemove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.65 ManagerAction_QueueReset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.66 ManagerAction_QueueRule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.67 ManagerAction_Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.68 ManagerAction_QueueStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.69 ManagerAction_QueueSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.70 ManagerAction_Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.71 ManagerAction_Reload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.72 ManagerAction_SendText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.73 ManagerAction_Setvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.74 ManagerAction_ShowDialPlan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.1.42 AGICommand_SPEECH SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.43 AGICommand_SPEECH UNLOAD GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.44 AGICommand_STREAM FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.45 AGICommand_TDD MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.46 AGICommand_VERBOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.47 AGICommand_WAIT FOR DIGIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.1.48 AGI Command Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2 AMI Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.1 AMI Action Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.2 ManagerAction_AbsoluteTimeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.3 ManagerAction_AgentLogoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.4 ManagerAction_Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.5 ManagerAction_AGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.6 ManagerAction_AOCMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.7 ManagerAction_Atxfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.8 ManagerAction_Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.9 ManagerAction_Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.10 ManagerAction_ChangeMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.11 ManagerAction_Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.12 ManagerAction_CoreSettings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.13 ManagerAction_CoreShowChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.14 ManagerAction_CoreStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.15 ManagerAction_CreateConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.16 ManagerAction_DAHDIDialOffhook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.17 ManagerAction_DAHDIDNDoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.18 ManagerAction_DAHDIDNDon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.19 ManagerAction_DAHDIHangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.20 ManagerAction_DAHDIRestart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.21 ManagerAction_DAHDIShowChannels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.22 ManagerAction_DAHDITransfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.23 ManagerAction_DataGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.24 ManagerAction_DBDel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.25 ManagerAction_DBDelTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.26 ManagerAction_DBGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.27 ManagerAction_DBPut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.28 ManagerAction_Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.29 ManagerAction_ExtensionState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.30 ManagerAction_GetConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.31 ManagerAction_GetConfigJSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.32 ManagerAction_Getvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.33 ManagerAction_Hangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.34 ManagerAction_IAXnetstats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.35 ManagerAction_IAXpeerlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.36 ManagerAction_IAXpeers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.37 ManagerAction_IAXregistry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.38 ManagerAction_JabberSend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.39 ManagerAction_ListCategories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.40 ManagerAction_ListCommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.41 ManagerAction_LocalOptimizeAway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.42 ManagerAction_Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.43 ManagerAction_Logoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.44 ManagerAction_MailboxCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.45 ManagerAction_MailboxStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.46 ManagerAction_MeetmeList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.47 ManagerAction_MeetmeMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.48 ManagerAction_MeetmeUnmute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.49 ManagerAction_MixMonitorMute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.50 ManagerAction_ModuleCheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.51 ManagerAction_ModuleLoad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.52 ManagerAction_Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.53 ManagerAction_Originate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.54 ManagerAction_Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.55 ManagerAction_ParkedCalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.56 ManagerAction_PauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.57 ManagerAction_Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.58 ManagerAction_PlayDTMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.59 ManagerAction_QueueAdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.60 ManagerAction_QueueLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.61 ManagerAction_QueuePause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.62 ManagerAction_QueuePenalty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.63 ManagerAction_QueueReload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.64 ManagerAction_QueueRemove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.65 ManagerAction_QueueReset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.66 ManagerAction_QueueRule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.67 ManagerAction_Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-446 446 447 447 448 449 449 451 451 452 453 453 454 454 455 455 456 456 457 457 458 458 459 459 460 461 461 462 462 463 464 464 465 465 466 466 467 467 468 468 469 469 470 471 471 472 473 473 474 474 475 475 476 477 478 479 479 480 480 481 482 482 483 484 484 485 485 486 486 487 487 488 489 489 490
+451 452 452 453 453 454 454 455 455 456 456 457 458 458 460 460 461 462 462 463 463 464 464 465 465 466 466 467 467 468 468 469 470 470 471 471 472 473 473 474 474 475 475 476 476 477 477 478 478 479 480 480 481 482 482 483 483 484 484 485 486 487 488 488 489 489 490 491 491 492 493 493 494 494 495
-1.1.3.2.75 ManagerAction_SIPnotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.76 ManagerAction_SIPpeers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.77 ManagerAction_SIPqualifypeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.78 ManagerAction_SIPshowpeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.79 ManagerAction_SIPshowregistry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.80 ManagerAction_SKINNYdevices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.81 ManagerAction_SKINNYlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.82 ManagerAction_SKINNYshowdevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.83 ManagerAction_SKINNYshowline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.84 ManagerAction_Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.85 ManagerAction_StopMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.86 ManagerAction_UnpauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.87 ManagerAction_UpdateConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.88 ManagerAction_UserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.89 ManagerAction_VoicemailUsersList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.2.90 ManagerAction_WaitEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3 Dialplan Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.1 Application_AddQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.2 Application_ADSIProg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.3 Application_AgentLogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.4 Application_AgentMonitorOutgoing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.5 Application_AGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.6 Application_AlarmReceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.7 Application_AMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.8 Application_Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.9 Application_Authenticate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.10 Application_BackGround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.11 Application_BackgroundDetect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.12 Application_Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.13 Application_Busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.14 Application_CallCompletionCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.15 Application_CallCompletionRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.16 Application_CELGenUserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.17 Application_ChangeMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.18 Application_ChanIsAvail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.19 Application_ChannelRedirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.20 Application_ChanSpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.21 Application_ClearHash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.22 Application_ConfBridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.23 Application_Congestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.24 Application_ContinueWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.25 Application_ControlPlayback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.26 Application_DAHDIAcceptR2Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.27 Application_DAHDIBarge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.28 Application_DAHDIRAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.29 Application_DAHDIScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.30 Application_DAHDISendCallreroutingFacility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.31 Application_DAHDISendKeypadFacility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.32 Application_DateTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.33 Application_DBdel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.34 Application_DBdeltree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.35 Application_DeadAGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.36 Application_Dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.37 Application_Dictate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.38 Application_Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.39 Application_DISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.40 Application_DumpChan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.41 Application_EAGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.42 Application_Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.43 Application_EndWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.44 Application_Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.45 Application_ExecIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.46 Application_ExecIfTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.47 Application_ExitWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.48 Application_ExtenSpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.49 Application_ExternalIVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.50 Application_Festival . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.51 Application_Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.52 Application_FollowMe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.53 Application_ForkCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.54 Application_GetCPEID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.55 Application_Gosub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.56 Application_GosubIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.57 Application_Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.58 Application_GotoIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.2.68 ManagerAction_QueueStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.69 ManagerAction_QueueSummary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.70 ManagerAction_Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.71 ManagerAction_Reload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.72 ManagerAction_SendText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.73 ManagerAction_Setvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.74 ManagerAction_ShowDialPlan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.75 ManagerAction_SIPnotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.76 ManagerAction_SIPpeers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.77 ManagerAction_SIPqualifypeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.78 ManagerAction_SIPshowpeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.79 ManagerAction_SIPshowregistry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.80 ManagerAction_SKINNYdevices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.81 ManagerAction_SKINNYlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.82 ManagerAction_SKINNYshowdevice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.83 ManagerAction_SKINNYshowline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.84 ManagerAction_Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.85 ManagerAction_StopMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.86 ManagerAction_UnpauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.87 ManagerAction_UpdateConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.88 ManagerAction_UserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.89 ManagerAction_VoicemailUsersList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.2.90 ManagerAction_WaitEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3 Dialplan Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.1 Application_AddQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.2 Application_ADSIProg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.3 Application_AELSub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.4 Application_AgentLogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.5 Application_AgentMonitorOutgoing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.6 Application_AGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.7 Application_AlarmReceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.8 Application_AMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.9 Application_Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.10 Application_Authenticate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.11 Application_BackGround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.12 Application_BackgroundDetect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.13 Application_Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.14 Application_Busy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.15 Application_CallCompletionCancel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.16 Application_CallCompletionRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.17 Application_CELGenUserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.18 Application_ChangeMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.19 Application_ChanIsAvail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.20 Application_ChannelRedirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.21 Application_ChanSpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.22 Application_ClearHash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.23 Application_ConfBridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.24 Application_Congestion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.25 Application_ContinueWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.26 Application_ControlPlayback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.27 Application_DAHDIAcceptR2Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.28 Application_DAHDIBarge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.29 Application_DAHDIRAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.30 Application_DAHDIScan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.31 Application_DAHDISendCallreroutingFacility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.32 Application_DAHDISendKeypadFacility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.33 Application_DateTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.34 Application_DBdel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.35 Application_DBdeltree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.36 Application_DeadAGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.37 Application_Dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.38 Application_Dictate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.39 Application_Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.40 Application_DISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.41 Application_DumpChan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.42 Application_EAGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.43 Application_Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.44 Application_EndWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.45 Application_Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.46 Application_ExecIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.47 Application_ExecIfTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.48 Application_ExitWhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.49 Application_ExtenSpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.50 Application_ExternalIVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.51 Application_Festival . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-490 491 492 492 493 493 494 494 495 495 496 497 497 498 499 499 500 500 501 501 502 503 504 504 505 506 507 508 508 509 510 510 511 511 512 512 513 514 515 516 516 517 518 518 519 519 520 520 521 521 522 523 524 526 527 528 529 529 530 531 531 532 532 533 534 535 536 536 537 538 539 540 540 541 542
+495 496 496 497 498 498 499 499 500 501 501 502 502 503 503 504 504 505 506 506 507 508 508 509 509 510 510 511 512 513 513 514 515 516 517 517 518 519 520 520 521 521 522 522 523 524 525 526 526 527 528 528 529 529 530 530 531 531 532 533 534 536 537 538 539 539 540 541 541 542 543 543 544 545 546
-1.1.3.3.59 Application_GotoIfTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.60 Application_Hangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.61 Application_IAX2Provision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.62 Application_ICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.63 Application_ImportVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.64 Application_Incomplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.65 Application_IVRDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.66 Application_JabberJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.67 Application_JabberLeave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.68 Application_JabberSend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.69 Application_JabberSendGroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.70 Application_JabberStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.71 Application_JACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.72 Application_Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.73 Application_Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.74 Application_MacroExclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.75 Application_MacroExit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.76 Application_MacroIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.77 Application_MailboxExists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.78 Application_MeetMe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.79 Application_MeetMeAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.80 Application_MeetMeChannelAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.81 Application_MeetMeCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.82 Application_Milliwatt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.83 Application_MinivmAccMess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.84 Application_MinivmDelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.85 Application_MinivmGreet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.86 Application_MinivmMWI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.87 Application_MinivmNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.88 Application_MinivmRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.89 Application_MixMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.90 Application_Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.91 Application_Morsecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.92 Application_MP3Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.93 Application_MSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.94 Application_MusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.95 Application_NBScat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.96 Application_NoCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.97 Application_NoOp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.98 Application_ODBC_Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.99 Application_ODBC_Rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.100 Application_ODBCFinish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.101 Application_Originate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.102 Application_OSPAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.103 Application_OSPFinish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.104 Application_OSPLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.105 Application_OSPNext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.106 Application_Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.107 Application_Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.108 Application_ParkAndAnnounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.109 Application_ParkedCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.110 Application_PauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.111 Application_PauseQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.112 Application_Pickup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.113 Application_PickupChan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.114 Application_Playback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.115 Application_PlayTones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.116 Application_PrivacyManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.117 Application_Proceeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.118 Application_Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.119 Application_Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.120 Application_QueueLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.121 Application_RaiseException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.122 Application_Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.123 Application_ReadExten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.124 Application_ReadFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.125 Application_ReceiveFax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.126 Application_Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.127 Application_RemoveQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.128 Application_ResetCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.129 Application_RetryDial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.130 Application_Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.131 Application_Ringing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.132 Application_SayAlpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.133 Application_SayCountedAdj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.3.52 Application_Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.53 Application_FollowMe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.54 Application_ForkCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.55 Application_GetCPEID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.56 Application_Gosub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.57 Application_GosubIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.58 Application_Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.59 Application_GotoIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.60 Application_GotoIfTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.61 Application_Hangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.62 Application_IAX2Provision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.63 Application_ICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.64 Application_ImportVar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.65 Application_Incomplete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.66 Application_IVRDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.67 Application_JabberJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.68 Application_JabberLeave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.69 Application_JabberSend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.70 Application_JabberSendGroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.71 Application_JabberStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.72 Application_JACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.73 Application_Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.74 Application_Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.75 Application_MacroExclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.76 Application_MacroExit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.77 Application_MacroIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.78 Application_MailboxExists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.79 Application_MeetMe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.80 Application_MeetMeAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.81 Application_MeetMeChannelAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.82 Application_MeetMeCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.83 Application_Milliwatt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.84 Application_MinivmAccMess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.85 Application_MinivmDelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.86 Application_MinivmGreet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.87 Application_MinivmMWI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.88 Application_MinivmNotify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.89 Application_MinivmRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.90 Application_MixMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.91 Application_Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.92 Application_Morsecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.93 Application_MP3Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.94 Application_MSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.95 Application_MusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.96 Application_NBScat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.97 Application_NoCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.98 Application_NoOp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.99 Application_ODBC_Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.100 Application_ODBC_Rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.101 Application_ODBCFinish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.102 Application_Originate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.103 Application_OSPAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.104 Application_OSPFinish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.105 Application_OSPLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.106 Application_OSPNext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.107 Application_Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.108 Application_Park . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.109 Application_ParkAndAnnounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.110 Application_ParkedCall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.111 Application_PauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.112 Application_PauseQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.113 Application_Pickup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.114 Application_PickupChan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.115 Application_Playback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.116 Application_PlayTones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.117 Application_PrivacyManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.118 Application_Proceeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.119 Application_Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.120 Application_Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.121 Application_QueueLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.122 Application_RaiseException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.123 Application_Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.124 Application_ReadExten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.125 Application_ReadFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.126 Application_ReceiveFax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-543 544 544 545 545 546 547 547 548 548 549 549 550 551 551 552 553 554 554 555 556 557 558 559 559 560 560 561 562 563 564 564 565 566 566 567 568 568 569 569 570 570 571 572 572 573 575 576 577 578 578 579 580 580 581 582 582 583 584 584 585 586 587 587 588 589 589 590 591 592 592 593 594 594 595
+546 547 548 549 550 551 551 552 553 554 554 555 555 556 557 557 558 558 559 559 560 561 561 563 563 564 564 565 567 568 568 569 569 570 571 571 572 573 574 575 575 576 576 577 578 578 579 579 580 580 581 582 582 583 585 586 587 588 588 589 590 591 591 592 593 593 594 594 595 596 597 598 599 599 600
-1.1.3.3.134 Application_SayCountedNoun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.135 Application_SayCountPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.136 Application_SayDigits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.137 Application_SayNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.138 Application_SayPhonetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.139 Application_SayUnixTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.140 Application_SendDTMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.141 Application_SendeFax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.142 Application_SendFAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.143 Application_SendImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.144 Application_SendText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.145 Application_SendURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.146 Application_Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.147 Application_SetAMAFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.148 Application_SetCallerPres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.149 Application_SetMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.150 Application_SIPAddHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.151 Application_SIPDtmfMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.152 Application_SIPRemoveHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.153 Application_Skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.154 Application_SLAStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.155 Application_SLATrunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.156 Application_SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.157 Application_SoftHangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.158 Application_SpeechActivateGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.159 Application_SpeechBackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.160 Application_SpeechCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.161 Application_SpeechDeactivateGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.162 Application_SpeechDestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.163 Application_SpeechLoadGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.164 Application_SpeechProcessingSound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.165 Application_SpeechStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.166 Application_SpeechUnloadGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.167 Application_StackPop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.168 Application_StartMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.169 Application_StopMixMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.170 Application_StopMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.171 Application_StopMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.172 Application_StopPlayTones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.173 Application_System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.174 Application_TestClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.175 Application_TestServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.176 Application_Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.177 Application_TryExec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.178 Application_TrySystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.179 Application_UnpauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.180 Application_UnpauseQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.181 Application_UserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.182 Application_Verbose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.183 Application_VMAuthenticate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.184 Application_VMSayName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.185 Application_VoiceMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.186 Application_VoiceMailMain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.187 Application_Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.188 Application_WaitExten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.189 Application_WaitForNoise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.190 Application_WaitForRing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.191 Application_WaitForSilence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.192 Application_WaitMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.193 Application_WaitUntil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.194 Application_While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.195 Application_Zapateller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.3.196 Dialplan Application Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4 Dialplan Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.1 Dialplan Function Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.2 Function_AES_DECRYPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.3 Function_AES_ENCRYPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.4 Function_AGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.5 Function_AGENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.6 Function_ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.7 Function_AST_CONFIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.8 Function_AUDIOHOOK_INHERIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.9 Function_BASE64_DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.10 Function_BASE64_ENCODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.11 Function_BLACKLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.3.127 Application_ReceiveFAX (app_fax) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.128 Application_ReceiveFax (res_fax) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.129 Application_Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.130 Application_RemoveQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.131 Application_ResetCDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.132 Application_RetryDial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.133 Application_Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.134 Application_Ringing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.135 Application_SayAlpha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.136 Application_SayCountedAdj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.137 Application_SayCountedNoun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.138 Application_SayCountPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.139 Application_SayDigits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.140 Application_SayNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.141 Application_SayPhonetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.142 Application_SayUnixTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.143 Application_SendDTMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.144 Application_SendFax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.145 Application_SendFAX (app_fax) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.146 Application_SendFax (res_fax) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.147 Application_SendImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.148 Application_SendText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.149 Application_SendURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.150 Application_Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.151 Application_SetAMAFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.152 Application_SetCallerPres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.153 Application_SetMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.154 Application_SIPAddHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.155 Application_SIPDtmfMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.156 Application_SIPRemoveHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.157 Application_Skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.158 Application_SLAStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.159 Application_SLATrunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.160 Application_SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.161 Application_SoftHangup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.162 Application_SpeechActivateGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.163 Application_SpeechBackground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.164 Application_SpeechCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.165 Application_SpeechDeactivateGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.166 Application_SpeechDestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.167 Application_SpeechLoadGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.168 Application_SpeechProcessingSound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.169 Application_SpeechStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.170 Application_SpeechUnloadGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.171 Application_StackPop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.172 Application_StartMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.173 Application_StopMixMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.174 Application_StopMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.175 Application_StopMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.176 Application_StopPlayTones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.177 Application_System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.178 Application_TestClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.179 Application_TestServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.180 Application_Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.181 Application_TryExec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.182 Application_TrySystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.183 Application_UnpauseMonitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.184 Application_UnpauseQueueMember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.185 Application_UserEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.186 Application_Verbose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.187 Application_VMAuthenticate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.188 Application_VMSayName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.189 Application_VoiceMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.190 Application_VoiceMailMain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.191 Application_Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.192 Application_WaitExten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.193 Application_WaitForNoise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.194 Application_WaitForRing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.195 Application_WaitForSilence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.196 Application_WaitMusicOnHold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.197 Application_WaitUntil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.198 Application_While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.199 Application_Zapateller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.3.200 Dialplan Application Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4 Dialplan Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-596 596 597 598 598 599 600 600 601 602 602 603 604 605 605 606 606 607 608 609 609 610 611 611 612 612 613 614 614 615 615 616 616 617 617 618 618 619 619 620 620 621 621 622 623 623 624 625 625 626 626 627 628 629 629 630 631 631 632 633 634 634 635 635 635 636 637 637 638 638 639 639 641 641 642
+601 601 602 603 604 605 605 606 606 607 608 609 609 610 610 611 612 612 613 614 614 615 616 617 618 618 619 619 620 620 621 622 623 623 624 625 625 626 627 627 628 628 629 629 629 630 631 631 631 632 632 633 634 634 635 635 636 637 638 638 639 639 640 641 642 643 643 644 644 645 646 647 647 648 648
-1.1.3.4.12 Function_CALENDAR_BUSY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.13 Function_CALENDAR_EVENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.14 Function_CALENDAR_QUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.15 Function_CALENDAR_QUERY_RESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.16 Function_CALENDAR_WRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.17 Function_CALLCOMPLETION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.18 Function_CALLERID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.19 Function_CALLERPRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.20 Function_CDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.21 Function_CHANNEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.22 Function_CHANNELS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.23 Function_CHECKSIPDOMAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.24 Function_CONNECTEDLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.25 Function_CSV_QUOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.26 Function_CUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.27 Function_DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.28 Function_DB_DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.29 Function_DB_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.30 Function_DEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.31 Function_DENOISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.32 Function_DEVICE_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.33 Function_DIALGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.34 Function_DIALPLAN_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.35 Function_DUNDILOOKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.36 Function_DUNDIQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.37 Function_DUNDIRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.38 Function_ENUMLOOKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.39 Function_ENUMQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.40 Function_ENUMRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.41 Function_ENV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.42 Function_EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.43 Function_EXCEPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.44 Function_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.45 Function_EXTENSION_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.46 Function_FAXOPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.47 Function_FIELDNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.48 Function_FIELDQTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.49 Function_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.50 Function_FILE_COUNT_LINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.51 Function_FILE_FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.52 Function_FILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.53 Function_FRAME_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.54 Function_GLOBAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.55 Function_GROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.56 Function_GROUP_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.57 Function_GROUP_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.58 Function_GROUP_MATCH_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.59 Function_HASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.60 Function_HASHKEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.61 Function_HINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.62 Function_IAXPEER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.63 Function_IAXVAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.64 Function_ICONV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.65 Function_IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.66 Function_IFMODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.67 Function_IFTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.68 Function_IMPORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.69 Function_INC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.70 Function_ISNULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.71 Function_JABBER_RECEIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.72 Function_JABBER_STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.73 Function_KEYPADHASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.74 Function_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.75 Function_LISTFILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.76 Function_LOCAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.77 Function_LOCAL_PEEK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.78 Function_LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.79 Function_MAILBOX_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.80 Function_MASTER_CHANNEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.81 Function_MATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.82 Function_MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.83 Function_MEETME_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.84 Function_MINIVMACCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.85 Function_MINIVMCOUNTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.86 Function_MUTEAUDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.4.1 Dialplan Function Template Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.2 Function_AES_DECRYPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.3 Function_AES_ENCRYPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.4 Function_AGC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.5 Function_AGENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.6 Function_ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.7 Function_AST_CONFIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.8 Function_AUDIOHOOK_INHERIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.9 Function_BASE64_DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.10 Function_BASE64_ENCODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.11 Function_BLACKLIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.12 Function_CALENDAR_BUSY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.13 Function_CALENDAR_EVENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.14 Function_CALENDAR_QUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.15 Function_CALENDAR_QUERY_RESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.16 Function_CALENDAR_WRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.17 Function_CALLCOMPLETION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.18 Function_CALLERID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.19 Function_CALLERPRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.20 Function_CDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.21 Function_CHANNEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.22 Function_CHANNELS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.23 Function_CHECKSIPDOMAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.24 Function_CONNECTEDLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.25 Function_CSV_QUOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.26 Function_CUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.27 Function_DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.28 Function_DB_DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.29 Function_DB_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.30 Function_DEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.31 Function_DENOISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.32 Function_DEVICE_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.33 Function_DIALGROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.34 Function_DIALPLAN_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.35 Function_DUNDILOOKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.36 Function_DUNDIQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.37 Function_DUNDIRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.38 Function_ENUMLOOKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.39 Function_ENUMQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.40 Function_ENUMRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.41 Function_ENV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.42 Function_EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.43 Function_EXCEPTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.44 Function_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.45 Function_EXTENSION_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.46 Function_FAXOPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.47 Function_FIELDNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.48 Function_FIELDQTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.49 Function_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.50 Function_FILE_COUNT_LINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.51 Function_FILE_FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.52 Function_FILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.53 Function_FRAME_TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.54 Function_GLOBAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.55 Function_GROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.56 Function_GROUP_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.57 Function_GROUP_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.58 Function_GROUP_MATCH_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.59 Function_HASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.60 Function_HASHKEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.61 Function_HINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.62 Function_IAXPEER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.63 Function_IAXVAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.64 Function_ICONV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.65 Function_IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.66 Function_IFMODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.67 Function_IFTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.68 Function_IMPORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.69 Function_INC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.70 Function_ISNULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.71 Function_JABBER_RECEIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.72 Function_JABBER_STATUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.73 Function_KEYPADHASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.74 Function_LEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.75 Function_LISTFILTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-642 643 643 644 645 645 646 647 648 650 651 651 652 653 654 654 655 655 656 657 657 658 659 659 660 661 661 662 662 663 663 664 665 665 666 667 667 668 670 671 671 672 673 673 674 674 675 675 676 677 677 678 678 679 679 680 680 681 681 682 683 683 684 684 685 686 686 687 687 688 688 689 690 690 691
+648 649 650 650 651 652 652 653 654 654 655 655 656 657 657 658 659 660 661 662 663 665 665 666 667 667 668 669 669 670 670 671 672 673 673 674 675 675 676 676 677 677 678 679 679 680 680 681 682 684 685 685 686 687 687 688 688 689 689 690 691 691 692 692 693 693 694 694 695 695 696 697 697 698 698
-1.1.3.4.87 Function_ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.88 Function_ODBC_FETCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.89 Function_PASSTHRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.90 Function_PITCH_SHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.91 Function_POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.92 Function_PP_EACH_EXTENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.93 Function_PP_EACH_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.94 Function_PUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.95 Function_QUEUE_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.96 Function_QUEUE_MEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.97 Function_QUEUE_MEMBER_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.98 Function_QUEUE_MEMBER_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.99 Function_QUEUE_MEMBER_PENALTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.100 Function_QUEUE_VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.101 Function_QUEUE_WAITING_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.102 Function_QUOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.103 Function_RAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.104 Function_REALTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.105 Function_REALTIME_DESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.106 Function_REALTIME_FIELD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.107 Function_REALTIME_HASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.108 Function_REALTIME_STORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.109 Function_REDIRECTING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.110 Function_REGEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.111 Function_REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.112 Function_SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.113 Function_SHA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.114 Function_SHARED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.115 Function_SHELL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.116 Function_SHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.117 Function_SIP_HEADER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.118 Function_SIPCHANINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.119 Function_SIPPEER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.120 Function_SMDI_MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.121 Function_SMDI_MSG_RETRIEVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.122 Function_SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.123 Function_SPEECH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.124 Function_SPEECH_ENGINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.125 Function_SPEECH_GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.126 Function_SPEECH_RESULTS_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.127 Function_SPEECH_SCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.128 Function_SPEECH_TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.129 Function_SPRINTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.130 Function_SQL_ESC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.131 Function_SRVQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.132 Function_SRVRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.133 Function_STAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.134 Function_STRFTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.135 Function_STRPTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.136 Function_SYSINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.137 Function_TESTTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.138 Function_TIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.139 Function_TOLOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.140 Function_TOUPPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.141 Function_TRYLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.142 Function_TXTCIDNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.143 Function_UNLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.144 Function_UNSHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.145 Function_URIDECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.146 Function_URIENCODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.147 Function_VALID_EXTEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.148 Function_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.149 Function_VMCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3.4.150 Function_VOLUME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Policies and Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1.1 Commit Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1.2 Issue Tracker Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1.3 Reviewboard Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2.1 Collecting Debug Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2.2 Getting a Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2.3 Valgrind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3 Subversion Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4 Other Reference Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.1.3.4.76 Function_LOCAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.77 Function_LOCAL_PEEK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.78 Function_LOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.79 Function_MAILBOX_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.80 Function_MASTER_CHANNEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.81 Function_MATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.82 Function_MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.83 Function_MEETME_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.84 Function_MINIVMACCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.85 Function_MINIVMCOUNTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.86 Function_MUTEAUDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.87 Function_ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.88 Function_ODBC_FETCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.89 Function_PASSTHRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.90 Function_PITCH_SHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.91 Function_POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.92 Function_PP_EACH_EXTENSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.93 Function_PP_EACH_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.94 Function_PUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.95 Function_QUEUE_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.96 Function_QUEUE_MEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.97 Function_QUEUE_MEMBER_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.98 Function_QUEUE_MEMBER_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.99 Function_QUEUE_MEMBER_PENALTY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.100 Function_QUEUE_VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.101 Function_QUEUE_WAITING_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.102 Function_QUOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.103 Function_RAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.104 Function_REALTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.105 Function_REALTIME_DESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.106 Function_REALTIME_FIELD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.107 Function_REALTIME_HASH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.108 Function_REALTIME_STORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.109 Function_REDIRECTING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.110 Function_REGEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.111 Function_REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.112 Function_SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.113 Function_SHA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.114 Function_SHARED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.115 Function_SHELL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.116 Function_SHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.117 Function_SIP_HEADER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.118 Function_SIPCHANINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.119 Function_SIPPEER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.120 Function_SMDI_MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.121 Function_SMDI_MSG_RETRIEVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.122 Function_SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.123 Function_SPEECH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.124 Function_SPEECH_ENGINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.125 Function_SPEECH_GRAMMAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.126 Function_SPEECH_RESULTS_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.127 Function_SPEECH_SCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.128 Function_SPEECH_TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.129 Function_SPRINTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.130 Function_SQL_ESC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.131 Function_SRVQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.132 Function_SRVRESULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.133 Function_STAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.134 Function_STRFTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.135 Function_STRPTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.136 Function_SYSINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.137 Function_TESTTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.138 Function_TIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.139 Function_TOLOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.140 Function_TOUPPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.141 Function_TRYLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.142 Function_TXTCIDNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.143 Function_UNLOCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.144 Function_UNSHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.145 Function_URIDECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.146 Function_URIENCODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.147 Function_VALID_EXTEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.148 Function_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.149 Function_VMCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3.4.150 Function_VOLUME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-692 692 693 693 694 695 696 696 697 697 698 698 699 699 700 700 701 702 702 703 703 704 704 706 707 707 708 709 709 710 711 711 712 713 713 714 715 715 716 716 717 717 718 718 719 719 720 720 721 722 722 723 724 724 725 725 726 726 727 727 728 728 729 730 730 730 730 732 735 737 737 739 744 745 750
+699 700 700 701 701 702 702 703 703 704 705 706 706 707 707 708 709 709 710 711 711 712 713 714 715 716 716 717 717 718 719 719 720 721 723 723 724 724 725 726 726 727 728 728 729 730 731 731 732 732 733 733 734 734 735 735 736 736 737 737 738 739 739 740 741 741 742 742 743 743 744 744 745 745 746
-1.2.4.1 Asterisk Channel Data Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.2 Asterisk Soundfiles Submission Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.3 Build System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.4 Coding Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.5 Janitor Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.6 Locking in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.7 Measuring SIP Channel Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4.8 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5 Confluence Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6 Roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.1 AstriDevCon 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.2 Asterisk 1.8 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.2.1 CCSS Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.2.2 CODEC Bit Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3 Asterisk 1.10 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.1 chan_sip Transaction Support Proprosal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.2 Documentation Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.3 Media Architecture Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.4 Media Overhaul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.5 SIP Security Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6.3.6 T.38 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.7 Asterisk Developer Conference Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.7.1 Asterisk Developer Call - 01272011 - 1700 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.7.2 Asterisk Developer Call - 02032011 - 1000 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.7.3 Asterisk Developer Call - 02102011 - 1700 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.7.4 Asterisk Developer Call - 02172011 - 1000 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Asterisk Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 FOSDEM 2011 Open Source Telephony Devroom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+2.2 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Policies and Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1.1 Commit Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1.2 Issue Tracker Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1.3 Reviewboard Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2.1 Collecting Debug Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2.2 Getting a Backtrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2.3 Valgrind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Subversion Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Other Reference Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.1 Asterisk Channel Data Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.2 Asterisk Soundfiles Submission Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.3 Build System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.4 Coding Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.5 Janitor Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.6 Locking in Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.7 Measuring SIP Channel Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4.8 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Confluence Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6 Roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.1 AstriDevCon 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.2 Asterisk 1.8 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.2.1 CCSS Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.2.2 CODEC Bit Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3 Asterisk 1.10 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.1 chan_sip Transaction Support Proprosal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.2 Documentation Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.3 Media Architecture Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.4 Media Overhaul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.5 SIP Security Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6.3.6 T.38 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7 Asterisk Developer Conference Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7.1 Asterisk Developer Call - 01272011 - 1700 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7.2 Asterisk Developer Call - 02032011 - 1000 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7.3 Asterisk Developer Call - 02102011 - 1700 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7.4 Asterisk Developer Call - 02172011 - 1000 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7.5 Asterisk Developer Call - 03102011 - 1700 EST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Asterisk Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 FOSDEM 2011 Open Source Telephony Devroom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Asterisk 1.10 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Device State information for the CCSS generic agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
-750 751 763 763 773 774 778 779 780 781 783 787 787 787 788 788 790 792 812 813 822 829 830 830 831 831 832 833
+747 747 747 749 752 753 753 755 761 762 767 767 768 780 781 791 792 796 797 798 799 801 805 805 805 806 806 808 810 830 831 840 847 848 848 849 849 850 850 851 853 854
-Home
+Asterisk Packages
+1. Introduction 2. APT (Debian / Ubuntu) 2.1. Prerequisites 2.1.1. Dependencies 2.1.2. Importing the public key 2.2. Adding the release branch 2.2.1. Adding the repository 2.3. Adding the proposed branch (Optional) 2.3.1. Adding the repository 2.4. Installing Asterisk 2.4.1. Update APT 2.4.2. Asterisk 2.4.3. DAHDI 3. YUM (CentOS / Red Hat) 3.1. Prerequisites 3.2. Adding the repository 3.3. Installing Asterisk 3.3.1. Asterisk 3.3.2. DAHDI
+
+1. Introduction
+Installing a binary distribution of Asterisk makes it easier to maintain your system. Using the package management tools that are included with your Linux distribution, you can install and update software without manually managing dependencies (libraries and utilities on which applications rely). Currently Asterisk is available for automated binary installation using APT for Debian and Ubuntu or YUM utility on CentOS 5 Linux and for RedHat Enterprise Linux 5.
+
+2. APT (Debian / Ubuntu)
+The goal with the deb repositories is simply to provide the latest Asterisk versions, such as Asterisk 1.8, for older versions of distributions where distribution policy prohibits incorporating our latest version. As of now, we have Asterisk packages available for the following distribution versions:
+Debian 6.0 (squeeze) Ubuntu 10.04 (lucid) Ubuntu 10.10 (maverick) Ubuntu 11.04 (natty)
+
+2.1. Prerequisites
+2.1.1. Dependencies
+
+2.1.2. Importing the public key
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+2.2. Adding the release branch
+2.2.1. Adding the repository
+
+2.3. Adding the proposed branch (Optional)
+The proposed branch includes updates which are waiting to be moved into the release branch after some testing. They may never reach recommended or they may be replaced with a more recent update. Enabling this is reasonable if you want to participate in testing minor updates, or know that your specific problem has been solved here but the package hasn't reached recommended yet. 2.3.1. Adding the repository
+
+2.4. Installing Asterisk
+2.4.1. Update APT
+
+2.4.2. Asterisk
+
+2.4.3. DAHDI
+
+3. YUM (CentOS / Red Hat)
+3.1. Prerequisites 3.2. Adding the repository
+
+3.3. Installing Asterisk
+3.3.1. Asterisk
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+3.3.2. DAHDI
+
+Prerequisites
+All of Ubuntu's Code, Translations, Packages, Bugs, access control lists, team information, etc. live in Launchpad. So for you to be able to contribute to bug discussions, upload packages, contribute code and translations, it's important that you:
+Create an account on launchpad. Create a GPG key and import it. Create a SSH key and import it.
+
+Creating a Build Environment
+Install Ubuntu 10.04 (Lucid) Enable Backports Upgrade Lucid to the latest release: Install required software pbuilder Debian Ubuntu svn-buildpackage quilt devscripts Create a GPG Key See also
+
+Install Ubuntu 10.04 (Lucid) [~pabelanger:Installing Ubuntu 10.04 (Lucid)] Enable Backports
+
+Upgrade Lucid to the latest release:
+
+Install required software
+
+pbuilder
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+/etc/pbuilder/pbuilderrc
+
+Debian
+
+Ubuntu
+
+svn-buildpackage
+
+quilt
+
+devscripts
+
+Create a GPG Key https://help.ubuntu.com/community/GnuPrivacyGuardHowto
+
+See also
+Ubuntu Packaging Guide
+
+Updating an Ubuntu Package
+New upstream release
+Checkout source
+
+Upstream tarball
+
+Update the changelog file
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Update patches
+
+Release package
+
+Build package source
+
+Compile package
+
+rebuildd
+Introduction Prerequisites Creating a Build Environment Getting started
+
+reprepro
+
+distributions
+
+incoming
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+apache.conf
+Options +Indexes AllowOverride None order allow,deny allow from all ]]>
+
+rebuildd
+
+Also see
+http://alioth.debian.org/scm/viewvc.php/checkout/mirrorer/docs/manual.html?revision=HEAD&root=mirrorer http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/
+
+Working with Source Packages
+
+Home
This is the home of the official wiki for The Asterisk Project. This is not the first wiki that has existed for Asterisk, but there are some significant things that are different about this wiki than others. The most significant difference is that this wiki was created to be the official source of documentation for the Asterisk project, maintained by the same development team that manages the code itself. That means that we are committed to the content being correct and up to date. To make that happen, editing the content is not open to the general public. However, all Asterisk users are encouraged to participate by leaving comments on pages. If you are an Asterisk expert and would like to get involved with the development and maintenance of content for the Asterisk wiki, contact Russell Bryant. Thank you very much for your continued support of Asterisk!
Recently Updated
-Asterisk Developer Call - 02172011 - 1000 EST updated by Bryan M. Johns (view change) Feb 17 Asterisk Developer Conference Call updated by Bryan M. Johns (view change) Feb 17 Calling using Google updated by Malcolm Davenport (view change) Feb 17 Asterisk Versions updated by Russell Bryant (view change) Feb 14 Calling using Google commented by Malcolm Davenport Feb 14 Calling using Google commented by Terry Wilson Feb 12 Asterisk Developer Call - 02102011 - 1700 EST created by Bryan M. Johns Feb 10 Reviewboard Usage commented by Andrew Latham Feb 06 Reviewboard Usage commented by Andrew Latham Feb 06 Documentation Improvements commented by Andrew Latham Feb 06 Subversion Usage commented by Andrew Latham Feb 03 Asterisk Developer Call - 02032011 - 1000 EST created by Bryan M. Johns
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Feb 03 Subversion Usage commented by Andrew Latham Feb 02 Secure Calling Tutorial commented by Malcolm Davenport Jan 28 Secure Calling Specifics commented by Malcolm Davenport Jan 28 More
+Global Variables Basics updated by Malcolm Davenport (view change) about 4 hours ago Calling using Google commented by Bryant Ferguson about 5 hours ago Calling using Google commented by Malcolm Davenport about 6 hours ago Calling using Google commented by Bryant Ferguson yesterday at 4:56 PM Calling using Google commented by Joe Tomasone yesterday at 8:08 AM Function_CHANNEL updated by Wiki Bot (view change) yesterday at 6:46 AM Queue Logs commented by Sébastien Couture Apr 19 Using The include and exec Constructs commented by Malcolm Davenport Apr 19 Calling using Google updated by Malcolm Davenport (view change) Apr 19 Calling using Google commented by Malcolm Davenport Apr 19 Calling using Google commented by Malcolm Davenport Apr 19 Device State information for the CCSS generic agent. updated by Leif Madsen (view change) Apr 14 Device State information for the CCSS generic agent. created by Richard Mudgett Apr 14 Asterisk 1.10 Documentation created by Russell Bryant Apr 14 Calling using Google commented by Daniel Grinkevich Apr 14 More
Navigate space
Asterisk 1.8 Documentation
Getting Started
A Beginners Guide to Asterisk. Herein, you will find content related to installing Asterisk and basic usage concepts. Precursors, Background and Business
-Discovering Asterisk
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Discovering Asterisk
This section of the documentation attempts to explain at a high level what Asterisk is and does. It also attempts to provide primers on the key technical disciplines that are required to successfully create and manage Asterisk solutions. Much of the material in this section is optional and may be redundant for those with a background in communications application development. For the other 99.9875% of the population, this is good stuff. Read on...
Asterisk Concepts
@@ -60,28 +175,23 @@
Asterisk is a very large application that does many things. It can be somewhat difficult to understand, especially if you are new to communications technologies. In the next few chapters we will do our best to explain what Asterisk is, what it is not, and how it came to be this way. This section doesn't cover the technology so much as the concept. If you're already familiar with the function of a telephony engine, feel free to jump ahead to the next section.
Asterisk as a Swiss Army Knife of Telephony
-What Is Asterisk? People often tend to think of Asterisk as an "open source PBX" because that was the focus of the original development effort. But calling Asterisk a PBX is both selling it short (it is much more) and overstating it (it can be much less). It is true that Asterisk started out as a phone system for a small business (see the "Brief History" section for the juicy details) but in the decade since it was originally released it has grown into a universal tool for building communications
+What Is Asterisk? People often tend to think of Asterisk as an "open source PBX" because that was the focus of the original development effort. But calling Asterisk a PBX is both selling it short (it is much more) and overstating it (it can be much less). It is true that Asterisk started out as a phone system for a small business (see the "Brief History" section for the juicy details) but in the decade since it was originally released it has grown into a universal tool for building communications applications. Today Asterisk powers not only IP PBX systems but also VoIP gateways, call center systems, conference bridges, voicemail servers and all kinds of other applications that involve real-time communications. Asterisk is not a PBX but is the engine that powers PBXs. Asterisk is not an IVR but is the engine that powers IVRs. Asterisk is not a call center ACD but is the engine that powers ACD/queueing systems. Asterisk is to communications applications what the Apache web server is to web applications. Apache is a web server. Asterisk is a communication server. Apache handles all the low-level details of sending and receiving data using the HTTP protocol. Asterisk handles all the low level details of sending and receiving data using lots of different communication protocols. When you install Apache, you have a web server but its up to you to create the web applications. When you install Asterisk, you have a communications server but its up to you to create the communications applications. Web applications are built out of HTML pages, CSS style sheets, server-side processing scripts, images, databases, web services, etc. Asterisk communications applications are built out Dialplan scripts, configuration files, audio recordings, databases, web services, etc. For a web application to work, you need the web server connected to the Internet. For a communications application to work, you need the communications server connected to communication services (VoIP or PSTN). For people to be able to access your web site you need to register a domain name and set up DNS entries that point "www.yourdomain.com" to your server. For people to access your communications system you need phone numbers or VoIP URIs that send calls to your server.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-applications. Today Asterisk powers not only IP PBX systems but also VoIP gateways, call center systems, conference bridges, voicemail servers and all kinds of other applications that involve real-time communications. Asterisk is not a PBX but is the engine that powers PBXs. Asterisk is not an IVR but is the engine that powers IVRs. Asterisk is not a call center ACD but is the engine that powers ACD/queueing systems. Asterisk is to communications applications what the Apache web server is to web applications. Apache is a web server. Asterisk is a communication server. Apache handles all the low-level details of sending and receiving data using the HTTP protocol. Asterisk handles all the low level details of sending and receiving data using lots of different communication protocols. When you install Apache, you have a web server but its up to you to create the web applications. When you install Asterisk, you have a communications server but its up to you to create the communications applications. Web applications are built out of HTML pages, CSS style sheets, server-side processing scripts, images, databases, web services, etc. Asterisk communications applications are built out Dialplan scripts, configuration files, audio recordings, databases, web services, etc. For a web application to work, you need the web server connected to the Internet. For a communications application to work, you need the communications server connected to communication services (VoIP or PSTN). For people to be able to access your web site you need to register a domain name and set up DNS entries that point "www.yourdomain.com" to your server. For people to access your communications system you need phone numbers or VoIP URIs that send calls to your server. In both cases the server is the plumbing that makes your application work. The server handles the low-level complexities and allows you, the application developer, to concentrate on the application logic and presentation. You don't have to be an expert on HTTP to create powerful web applications, and you don't have to be an expert on SIP or Q.931 to create powerful communications applications. Here's a simple example. The following HTML script, installed on a working web server, prints "Hello World" in large type:
+In both cases the server is the plumbing that makes your application work. The server handles the low-level complexities and allows you, the application developer, to concentrate on the application logic and presentation. You don't have to be an expert on HTTP to create powerful web applications, and you don't have to be an expert on SIP or Q.931 to create powerful communications applications. Here's a simple example. The following HTML script, installed on a working web server, prints "Hello World" in large type:
<head> <title>Hello World Demo</title> </head> <body> <h1>Hello World!</h1> </body>
The following Dialplan script answers the phone, waits for one second, plays back "hello world" then hangs up.
100,1,Answer() exten => 100,n,Wait(1) exten => 100,n,Playback(hello-world) exten => 100,n,Hangup() ]]>
-In both cases the server components are handling all of the low level details of the underlying
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-protocols. Your application doesn't have to worry about the byte alignment, the packet size, the codec or any of the thousands of other critical details that make the application work. This is the power of an engine. Who Uses Asterisk? Asterisk is created by communication system developers, for communication system developers. As an open source project, Asterisk is a collaboration between many different individuals and companies, all of which need a flexible communications engine to power their applications.
+In both cases the server components are handling all of the low level details of the underlying protocols. Your application doesn't have to worry about the byte alignment, the packet size, the codec or any of the thousands of other critical details that make the application work. This is the power of an engine. Who Uses Asterisk? Asterisk is created by communication system developers, for communication system developers. As an open source project, Asterisk is a collaboration between many different individuals and companies, all of which need a flexible communications engine to power their applications.
A Brief History of the Asterisk Project
-Way, way back in 1999 a young man named Mark Spencer was finishing his Computer Engineering degree at Auburn University when he hit on an interesting business concept. 1999 was the high point in the .com revolution (aka bubble), and thousands of businesses world-wide were discovering that they could save money by using the open source Linux operating system in place of proprietary operating systems. The lure of a free operating system with open access to the source code was too much to pass up. Unfortunately there was little in the way of commercial support available for Linux at that time. Mark decided to fill this gap by creating a company called "Linux Support Services". LSS offered a support hotline that IT professionals could (for a fee) call to get help with Linux. The idea took off. Within a few months, Mark had a small office staffed with Linux experts. Within a few more months the growth of the business expanded demanded a "real" phone system that could distribute calls evenly across the support team, so Mark called up several local phone system vendors and asked for quotes. Much to his surprise, the responses all came back well above $50,000 -- far more than Mark had budgeted for the project. Far more than LSS could afford. Rather than give in and take out a small business loan, Mark made a fateful decision. He decided to write his own phone system. Why not? A phone system is really just a computer running phone software, right? Fortunately for us, Mark had no idea how big a project he had take on. If he had known what a massive undertaking it was to build a phone system from the ground up might have gritted his teeth, borrowed the money and spent the next decade doing Linux support. But he didn't know what he didn't know, and so he started to code. And he coded. And he coded. Mark had done his engineering co-op at Adtran, a communications and networking device manufacturer in Huntsville, AL. There he had cut his teeth on telecommunications system development, solving difficult problems generating a prodigious amount of complex code in short time. This experience proved invaluable as he began to frame out the system which grew into Asterisk. In only a few months Mark crafted the original Asterisk core code. As soon as he had a working prototype he published the source code on the Internet, making it available under the GPL license (the same license used for Linux). Within a few months the idea of an "open source PBX" caught on. There had been a few other open source communications projects, but none had captured the imagination of the global population of communications geeks like Asterisk. As Mark labored on the core system, hundreds (now thousands) of developers from all over the world began to submit new features and functions.
-
+Way, way back in 1999 a young man named Mark Spencer was finishing his Computer Engineering degree at Auburn University when he hit on an interesting business concept. 1999 was the high point in the .com revolution (aka bubble), and thousands of businesses world-wide were discovering that they could save money by using the open source Linux operating system in place of proprietary operating systems. The lure of a free operating system with open access to the source code was too much to pass up. Unfortunately there was little in the way of commercial support available for Linux at that time. Mark decided to fill this gap by creating a company called "Linux Support Services". LSS offered a support hotline that IT professionals could (for a fee) call to get help with Linux. The idea took off. Within a few months, Mark had a small office staffed with Linux experts. Within a few more months the growth of the business expanded demanded a "real" phone system that could distribute calls evenly across the support team, so Mark called up several local phone system vendors and asked for quotes. Much to his surprise, the responses all came back
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Beginning Asterisk
+well above $50,000 -- far more than Mark had budgeted for the project. Far more than LSS could afford. Rather than give in and take out a small business loan, Mark made a fateful decision. He decided to write his own phone system. Why not? A phone system is really just a computer running phone software, right? Fortunately for us, Mark had no idea how big a project he had take on. If he had known what a massive undertaking it was to build a phone system from the ground up might have gritted his teeth, borrowed the money and spent the next decade doing Linux support. But he didn't know what he didn't know, and so he started to code. And he coded. And he coded. Mark had done his engineering co-op at Adtran, a communications and networking device manufacturer in Huntsville, AL. There he had cut his teeth on telecommunications system development, solving difficult problems generating a prodigious amount of complex code in short time. This experience proved invaluable as he began to frame out the system which grew into Asterisk. In only a few months Mark crafted the original Asterisk core code. As soon as he had a working prototype he published the source code on the Internet, making it available under the GPL license (the same license used for Linux). Within a few months the idea of an "open source PBX" caught on. There had been a few other open source communications projects, but none had captured the imagination of the global population of communications geeks like Asterisk. As Mark labored on the core system, hundreds (now thousands) of developers from all over the world began to submit new features and functions. Beginning Asterisk
Installing Asterisk
Now that you know a bit about Asterisk and how it is used, it's time to get you up and running with your own Asterisk installation. There are various ways to get started with Asterisk on your own system:
@@ -92,7 +202,11 @@
Installing AsteriskNOW is easy! Simply visit http://www.asterisknow.org/ and download the latest version. The file you'll download will have a .iso file extension. Then burn the .iso image to a CD, and boot your system from the CD.
Installing AsteriskNOW Will Overwrite Data
-Please be aware that installing AsteriskNOW will overwrite any existing data on your hard drive. Anything that is important should first be backed up to a different system. When you boot from the AsteriskNOW CD, you'll see an introductory screen. Simply press enter to continue the installation. Screen shot of ISOLINUX screen
+Please be aware that installing AsteriskNOW will overwrite any existing data on your hard drive. Anything that is important should first be backed up to a different system.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+When you boot from the AsteriskNOW CD, you'll see an introductory screen. Simply press enter to continue the installation. Screen shot of ISOLINUX screen
Install-Time Options
As the installer continues, you'll be prompted to enter several pieces of information.
@@ -101,11 +215,7 @@
After the final option, installation will begin. This will take approximately 15-30 minutes. Once installation has completed, the system will reboot into your AsteriskNOW installation. By default, AsteriskNOW will use DHCP to obtain an IP address on your network. You can use the ifconfig command under Linux to view your current IP address, or system-config-network to change your network settings.
Alternate Install Methods
-If you already have a Linux system that you can dedicate to Asterisk, simply use the package
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-manager in your operating system to install Asterisk, DAHDI, and libpri. Most modern Linux distributions such as Debian, Ubuntu, and Fedora have these packages in their repositories. Packages for Red Hat Enterprise Linux and CentOS are also available at http://packages.asterisk.org/.
+If you already have a Linux system that you can dedicate to Asterisk, simply use the package manager in your operating system to install Asterisk, DAHDI, and libpri. Most modern Linux distributions such as Debian, Ubuntu, and Fedora have these packages in their repositories. Packages for Red Hat Enterprise Linux and CentOS are also available at http://packages.asterisk.org/.
Validating Your AsteriskNOW Installation
Before continuing on, let's check a few things to make sure your system is in good working order. First, let's make sure the DAHDI drivers are loaded. After logging in as the root user you can use the lsmod under Linux to list all of the loaded kernel modules, and the grep command to filter the input and only show the modules that have dahdi in their name.
@@ -115,901 +225,968 @@
[root@server asterisk-1.6.X.Y]# service dadhi start
If you have DAHDI running, the output of lsmod | grep dahdi should look something like the output below. (The exact details may be different, depending on which DAHDI modules have been built, and so forth.)
-[root@server ~]# lsmod | grep dahdi dahdi_dummy dahdi_transcode dahdi_voicebus 4288 7928 40464 0 1 wctc4xxp 2 wctdm24xxp,wcte12xp
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+[root@server ~]# lsmod | grep dahdi dahdi_dummy dahdi_transcode dahdi_voicebus 4288 7928 40464 0 1 wctc4xxp 2 wctdm24xxp,wcte12xp
dahdi 196544 12 dahdi_dummy,wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp crc_ccitt 2096 1 dahdi
Now that DAHDI is running, you can run dahdi_hardware to list any DAHDI-compatible devices in your system. You can also run the dahdi_tool utility to show the various DAHDI-compatible devices, and their current state. To check if Asterisk is running, you can use the Asterisk initscript.
[root@server ~]# service asterisk status asterisk is stopped
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-To start Asterisk, we'll use the initscript again, this time giving it the start action:
+To start Asterisk, we'll use the initscript again, this time giving it the start action:
[root@server ~]# service asterisk start Starting asterisk:
When Asterisk starts, it runs as a background service (or daemon), so you typically won't see any response on the command line. We can check the status of Asterisk and see that it's running by using the command below. (The process identifier, or pid, will obviously be different on your system.)
[root@server ~]# service asterisk status asterisk (pid 32117) is running...
And there you have it... you have an Asterisk system up and running! You should now continue on in Section 202. Getting Started with Asterisk.
-Installing Asterisk From Source
-
-One popular option for installing Asterisk is to download the source code and compile it yourself. While this isn't as easy as using package management or using an Asterisk-based Linux distribution, it does let you decide how Asterisk gets built, and which Asterisk modules are built. In this section, you'll learn how to download and compile the Asterisk source code, and get Asterisk installed.
-What to Download?
-
-On a typical system, you'll want to download three components:
-Asterisk DAHDI libpri
-
-The libpri library allows Asterisk to communicate with ISDN connections. (We'll cover more about ISDN connections in Section 450.8, "Intro to ISDN PRI and BRI Connections".) While not always necessary, we recommend you install it on new systems. The DAHDI library allows Asterisk to communicate with analog and digital telephones and telephone lines, including connections to the Public Switched Telephone Network, or PSTN. It should also be installed on new systems, even if you don't immediately plan on using analog or digital connections to your Asterisk system. DAHDI DAHDI stands for Digium Asterisk Hardware Device Interface, and is a set of drivers and utilities for a number of analog and digital telephony cards, such as those manufactured by Digium. The DAHDI drivers are independent of Asterisk, and can be used by other applications. DAHDI was previously called Zaptel, as it evolved from the Zapata Telephony Project.
+Asterisk Configuration Files
+Intro to Asterisk Configuration Files
+In this section, we'll introduce you to the Asterisk configuration files, and show you how to use some advanced features.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The DAHDI code can be downloaded as individual pieces (dahdi-linux for the DAHDI drivers, and dahdi-tools for the DAHDI utilities. They can also be downloaded as a complete package called dahdi-linux-complete, which contains both the Linux drivers and the utilities.
-Why is DAHDI split into different pieces?
+Config File Format
-DAHDI has been split into two pieces (the Linux drivers and the tools) as third parties have begun porting the DAHDI drivers to other operating systems, such as FreeBSD. Eventually, we may have dahdi-linux, dahdi-freebsd, and so on.
+Asterisk is a very flexible telephony engine. With this flexibility, however, comes a bit of complexity. Asterisk has quite a few configuration files which control almost every aspect of how it operates. The format of these configuration files, however, is quite simple. The Asterisk configuration files are plain text files, and can be edited with any text editor.
+Sections and Settings
-The current version of libpri, DAHDI, and Asterisk can be downloaded from http://downloads.digium.com/pub/telephony/.
-System Requirements
+The configuration files are broken into various section, with the section name surrounded by square brackets. Section names should not contain spaces, and are case sensitive. Inside of each section, you can assign values to various settings. In general, settings in one section are independent of values in another section[docs:5]. Some settings take values such as true or false, while other settings have more specific settings. The syntax for assigning a value to a setting is to write the setting name, an equals sign, and the value, like this:
-In order to compile and install Asterisk, you'll need to install a C compiler and a number of system libraries on your system.
-Compiler System Libraries
+Objects
-Compiler
+Some Asterisk configuration files also create objects. The syntax for objects is slightly different than for settings. To create an object, you specify the type of object, an arrow formed by the equals sign and a greater-than sign (=>), and the settings for that object.
+settings]]>
-The compiler is a program that takes source code (the code written in the C programming language in the case of Asterisk) and turns it into a program that can be executed. While any C compiler should be able to compile the Asterisk code, we strongly recommend that you use the GCC compiler. Not only is it the most popular free C compiler on Linux and Unix systems, but it's also the compiler that the Asterisk developers are using. If the GCC compiler isn't already installed on your machine, simply use appropriate package management system on your machine to install it. You'll also want to install the C++ portion of GCC as well, as certain Asterisk modules will use it.
-System Libraries
+Confused by Object Syntax? In order to make life easier for newcomers to the Asterisk configuration files, the developers have made it so that you can also create objects with an equal sign. Thus, the two lines below are functionally equivalent.
+some_object=>settings some_object=settings
-In addition to the C compiler, you'll also need a set of system libraries. These libraries are used by Asterisk and must be installed before you can compile Asterisk. On most operating systems, you'll need to install both the library and it's corresponding development package.
-Development libraries
+It is common to see both versions of the syntax, especially in online Asterisk documentation and examples. This book, however, will denote objects by using the arrow instead of the equals sign.
-For most operating systems, the development packages will have -dev or -devel on the end of the name. For example, on a Red Hat Linux system, you'd want to install both the "openssl" and "openssl-devel" packages.
+name1 label1=value0 label3=value3 object2=>name2]]>
-A list of libraries you'll need to install include:
+In this example, object1 inherits both label1 and label2. It is important to note that object2 also inherits label2, along with label1 (with the new overridden value value0) and label3. In short, objects inherit all the settings defined above them in the current section, and later settings override earlier settings.
+Comments
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-OpenSSL ncurses newt libxml2 Kernel headers (for building DAHDI drivers)
+We can (and often do) add comments to the Asterisk configuration files. Comments help make the configuration files easier to read, and can also be used to temporarily disable certain settings.
+Comments on a Single Line
-We recommend you use the package management system of your operating system to install these libraries before compiling and installing libpri, DAHDI, and Asterisk.
-Help Finding the Right Libraries
+Single-line comments begin with the semicolon (;) character. The Asterisk configuration parser treats everything following the semicolon as a comment. To expand on our previous example:
-If you're installing Asterisk 1.6.1.0 or later, it comes with a shell script called install_prereq.sh in the contrib/scripts sub-directory. If you run install_prereq test, it will give you the exact commands to install the necessary system libraries on your operating system. If you run install_prereq install, it will attempt to download and install the prerequisites automatically.
+Block Comments
-Untarring the Source
+Asterisk also allows us to create block comments. A block comment is a comment that begins on one line, and continues for several lines. Block comments begin with the character sequence ;-, and continue across multiple lines until the character sequence -; is encountered. The block comment ends immediately after the --;.
-When you download the source for libpri, DAHDI, and Asterisk you'll typically end up with files with a .tar.gz or .tgz file extension. These files are affectionately known as tarballs. The name comes from the tar Unix utility, which stands for tape archive. A tarball is a collection of other files combined into a single file for easy copying, and then often compressed with a utility such as GZip. To extract the source code from the tarballs, we'll use the tar command. The commands below assume that you've downloaded the tarballs for libpri, DAHDI, and Asterisk to the /usr/local/src directory on a Linux machine. (You'll probably need to be logged in as the root user to be able to write to that directory.) We're also going to assume that you'll replace the letters X, Y, and Z with the actual version numbers from the tarballs you downloaded. Also please note that the command prompt may be slightly different on your system than what we show here. Don't worry, the commands should work just the same. First, we'll change to the directory where we downloaded the source code:
-[root@server ~]# cd /usr/local/src
+Using The include and exec Constructs
-Next, let's extract the source code from each tarball using the tar command. The -zxvf parameters to the tar command tell it what we want to do with the file. The z option tells the system to unzip the file before continuing, the x option tells it to extract the files from the tarball, the v option tells it to be verbose (write out the name of every file as it's being extracted, and the f option tells the tar command that we're extracting the file from a tarball file, and not from a tape.
+There are two other constructs we can use within our configuration files. They are #include and #exec. The #include construct tells Asterisk to read in the contents of another configuration file, and act as though the contents were at this location in this configuration file. The syntax is #include filename, where filename is the name of the file you'd like to include. This construct is most often used to break a large configuration file into smaller pieces, so that it's more manageable. The #exec takes this one step further. It allows you to execute an external program, and place the output of that program into the current configuration file. The syntax is #exec program, where program is the name of the program you'd like to execute.
+Enabling #exec Functionality The #exec construct is not enabled by default, as it has some risks both in terms of performance and security. To enable this functionality, go to the asterisk.conf configuration file (by default located in /etc/asterisk) and set execincludes=yes in the [options] section. By default both the [options] section heading and the execincludes=yes option have been commented out, you you'll need to remove the semicolon from the beginning of both lines.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Let's look at example of both constructs in action.
-[root@server src]# tar -zxvf libpri-1.X.Y.tar.gz [root@server src]# tar -zxvf dahdi-linux-complete-2.X.Y+2.X.Y.tar.gz [root@server src]# tar -zxvf asterisk-1.6.X.Y.tar.gz
+Adding to an existing section
-You should now notice that a new sub-directory was created for each of the tarballs, each containing the extracted files from the corresponding tarball. We can now compile and install each of the components.
-Building and Installing LibPRI
+If you want to add settings to an existing section of a configuration file (either later in the file, or when using the #include and #exec constructs), add a plus sign in parentheses after the section heading, as shown below:
-First, let's compile and install libpri. Again, we'll assume that you'll replace the letters X, Y, and Z with the actual version numbers from the tarballs you downloaded.
-[root@server src]# cd libpri-1.X.Y
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This command changes directories to the libpri source directory.
-[root@server libpri-1.X.Y]# make
+This example shows that the setting2 setting was added to the existing [docs:section-name] section of the configuration file.
+Templates
-This command compiles the libpri source code into a system library.
-[root@server libpri-1.X.Y]# make install
+Another construct we can use within most Asterisk configuration files is the use of templates. A template is a section of a configuration file that is only used as a base (or template, as the name suggests) to create other sections from.
+Template Syntax
-This command installs the libpri library into the proper system library directory
-Building and Installing DAHDI
+To define a section as a template, place an exclamation mark in parentheses after the section heading, as shown in the example below.
-Now that we have libpri installed, let's install DAHDI. On Linux, we will use the DAHDI-linux-complete tarball, which contains both the DAHDI Linux drivers as well as the DAHDI tools. Again, we're assuming that you've untarred the tarball in the /usr/local/src directory, and that you'll replace X and Y with the appropriate version numbers.
+Using Templates
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+To use a template when creating another section, simply put the template name in parentheses after the section heading name, as shown in the example below. If you want to inherit from multiple templates, use commas to separate the template names).
-[root@server src]# cd dahdi-linux-complete-2.X.Y+2.X.Y [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make install [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make config
+The newly-created section will inherit all the values and objects defined in the template(s), as well as any new settings or objects defined in the newly-created section. The settings and objects defined in the newly-created section override settings or objects of the same name from the templates. Consider this example:
-Checking Asterisk Requirements
+The [docs:test-three] section will be processed as though it had been written in the following way:
-Now it's time to compile and install Asterisk. Let's change to the directory which contains the Asterisk source code.
-[root@server dahdi-linux-complete-2.X.Y+2.X.Y]# cd /usr/local/src/asterisk-1.6.X.Y
+Basic PBX Functionality
-Next, we'll run a command called ./configure, which will perform a number of checks on the operating system, and get the Asterisk code ready to compile on this particular server.
-[root@server asterisk-1.6.X.Y]# ./configure
+In this section, we're going to guide you through the basic setup of a very primitive PBX. After you finish, you'll have a basic PBX with two phones that can dial each other. In later modules, we'll go into more detail on each of these steps, but in the meantime, this will give you a basic system on which you can learn and experiement.
+The Most Basic PBX
-This will run for a couple of minutes, and warn you of any missing system libraries or other dependencies. Upon completion, you should see a message that looks similar to the one shown below. (Obviously, your host CPU type may be different than the below.)
+While it won't be anything to brag about, this basic PBX that you will build from Asterisk will help you learn the fundamentals of configuring Asterisk. For this exercise, we're going to assume that you have access to two phones which speak the SIP voice-over-IP protocol. There are a wide variety of SIP phones available in many different shapes and sizes, and if your budget doesn't
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-.$$$$$$$$$$$$$$$=.. .$7$7.. .7$$7:. .$7$7.. .7$$7:. .$$:. ,$7.7 .$7. 7$$$$ .$$77 ..$$. $$$$$ .$$$7 ..7$ .?. $$$$$ .?. 7$$$. $.$. .$$$7. $$$$7 .7$$$. .$$$. .777. .$$$$$$77$$$77$$$$$7. $$$, $$$~ .7$$$$$$$$$$$$$7. .$$$. .$$7 .7$$$$$$$7: ?$$$. $$$ ?7$$$$$$$$$$I .$$$7 $$$ .7$$$$$$$$$$$$$$$$ :$$$. $$$ $$$$$$7$$$$$$$$$$$$ .$$$. $$$ $$$ 7$$$7 .$$$ .$$$. $$$$ $$$$7 .$$$. 7$$$7 7$$$$ 7$$$ $$$$$ $$$ $$$$7. $$ (TM) $$$$$$$. .7$$$$$$ $$ $$$$$$$$$$$$7$$$$$$$$$.$$$$$$ $$$$$$$$$$$$$$$$. configure: configure: configure: configure: configure: Package configured for: OS type : linux-gnu Host CPU : x86_64 build-cpu:vendor:os: x86_64 : unknown : linux-gnu : host-cpu:vendor:os: x86_64 : unknown : linux-gnu :
+allow for you to buy phones, feel free to use a free soft phone. Soft phones are simply computer programs which run on your computer and emulate a real phone, and communicate with other devices across your network, just like a real voice-over-IP phone would.
+Creating SIP Accounts
-Cached Data The ./configure command caches certain data to speed things up if it's invoked multiple times. To clear all the cached data, you can use the following command to completely clear out any cached data from the Asterisk build system.
-[root@server asterisk-1.6.X.Y]# make distclean
+In order for our two phones to communicate with each other, we need to configure an account for each phone in the channel driver which corresponds to the protocol they'll be using. Since both the phones are using the SIP protocol, we'll configure accounts in the SIP channel driver configuration file, called sip.conf. (This file resides in the Asterisk configuration directory, which is typically /etc/asterisk.) Let's name your phones Alice and Bob, so that we can easily differentiate between them. Open sip.conf with your favorite text editor, and spend a minute or two looking at the file. (Don't let it overwhelm you -- the sample sip.conf has a lot of data in it, and can be overwhelming at first glance.) Notice that there are a couple of sections at the top of the configuration, such as [docs:general] and [docs:authentication], which control the overall functionality of the channel driver. Below those sections, there are sections which correspond to SIP accounts on the system. Scroll to the bottom of the file, and add a section for Alice and Bob. You'll need to choose your own unique password for each account, and change the permit line to match the settings for your local network.
-Using Menuselect to Select Asterisk Options
+Be Serious About Account Security We can't stress enough how important it is for you to pick a strong password for all accounts on Asterisk, and to only allow access from trusted networks. Unfortunately, we've found many instances of people exposing their Asterisk to the internet at large with easily-guessable passwords, or no passwords at all. You could be at risk of toll fraud, scams, and other malicious behavior.
-The next step in the build process is to tell Asterisk which modules[docs:1] to compile and install, as well as set various compiler options. These settings are all controlled via a menu-driven system called menuselect. To access the menuselect system, type:
-[root@server asterisk-1.6.X.Y]# make menuselect
+For more information on Asterisk security and how you can protect yourself, check out http://www.asterisk.org/security/webinar/.
+
+After adding the two sections above to your sip.conf file, go to the Asterisk command-line interface and run the sip reload command to tell Asterisk to re-read the sip.conf configuration file.
+server*CLI> sip reload Reloading SIP server*CLI>
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Terminal Window Your terminal window size must be at least eighty characters wide and twenty-one lines high, or menuselect will not work. Instead, you'll get an error message stating
-Terminal must be at least 80 x 21.
+Reloading Configuration Files
-Asterisk 1.8+
-Terminal must be at least 80 x 27.
+Don't forget to reload the appropriate Asterisk configuration files after you have made changes to them.
-The menuselect menu should look like the screen-shot below. On the left-hand side, you have a list of categories, such as Applications, Channel Drivers, and PBX Modules. On the right-hand side, you'll see a list of modules that correspond with the select category. At the bottom of the screen you'll see two buttons. You can use the Tab key to cycle between the various sections, and press the Enter key to select or unselect a particular module. If you see [docs:] next to a module name, it signifies that the module has been selected. If you see *XXX next to a module name, it signifies that the select module cannot be built, as one of its dependencies is missing. In that case, you can look at the bottom of the screen for the line labeled Depends upon: for a description of the missing dependency. When you're first learning your way around Asterisk on a test system, you'll probably want to stick with the default settings in menuselect. If you're building a production system, however, you may not wish to build all of the various modules, and instead only build the modules that your system is using.
+Registering Phones to Asterisk
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+The next step is to configure the phones themselves to communicate with Asterisk. The way we have configured the accounts in the SIP channel driver, Asterisk will expect the phones to register to it. Registration is simply a mechanism where a phone communicates "Hey, I'm Bob's phone... here's my username and password. Oh, and if you get any calls for me, I'm at this particular IP address." Configuring your particular phone is obviously beyond the scope of this guide, but here are a list of common settings you're going to want to set in your phone, so that it can communicate with Asterisk:
+Registrar/Registration Server - The location of the server which the phone should register to. This should be set to the IP address of your Asterisk system. *SIP User Name/Account Name/Address - *The SIP username on the remote system. This should be set to demo-alice on one phone and demo-bob on the other. This username corresponds directly to the section name in square brackets in sip.conf. SIP Authentication User/Auth User - On Asterisk-based systems, this will be the same as the SIP user name above. Proxy Server/Outbound Proxy Server - This is the server with which your phone communicates to make outside calls. This should be set to the IP address of your Asterisk system.
-Easier Debugging of Asterisk Crashes
+You can tell whether or not your phone has registered successfully to Asterisk by checking the output of the sip show peers command at the Asterisk CLI. If the Host column says (Unspecified), the phone has not yet registered. On the other hand, if the Host column contains an IP address and the Dyn column contains the letter D, you know that the phone has successfully registered.
+server*CLI> sip show peers Name/username Host Dyn NAT ACL Port Status demo-alice (Unspecified) D A 5060 Unmonitored demo-bob 192.168.5.105 D A 5060 Unmonitored 2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]
-If you're finding that Asterisk is crashing on you, there's a setting in menuselect that will help provide additional information to the Asterisk developers. Go into menuselect, select the the Compiler Flags section (you'll need to scroll down in the left-hand list), and select the DONT_OPTIMIZE setting. Then rebuild Asterisk as shown below. While the Asterisk application will be slightly larger, it will provide additional debugging symbols in the event of a crash.
+In the example above, you can see that Alice's phone has not registered, but Bob's phone has registered.
-We should also inform people that the sound prompts are selected in menuselect as well When you are finished selecting the modules and options you'd like in menuselect, press F12 to save and exit, or highlight the Save and Exit button and press enter.
-Building and Installing Asterisk
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Now we can compile and install Asterisk. To compile Asterisk, simply type make at the Linux command line.
-[root@server asterisk-1.6.X.Y]# make
+Debugging SIP Registrations
-The compiling step will take several minutes, and you'll see the various file names scroll by as they are being compiled. Once Asterisk has finished compiling, you'll see a message that looks like:
-+--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, and + + can be installed by running: + + + + make install + +-------------------------------------------+ +--------- Asterisk Build Complete ---------+
+If you're having troubles getting a phone to register to Asterisk, make sure you watch the Asterisk CLI with the verbosity level set to at least three while you reboot the phone. You'll likely see error messages indicating what the problem is, like in this example:
+NOTICE[22214]: chan_sip.c:20824 handle_request_register: Registration from '"Alice" <sip:demo-alice@192.168.5.50>' failed for '192.168.5.103' - Wrong password
-As the message above suggests, our next step is to install the compiled Asterisk program and modules. To do this, use the make install command.
-[root@server asterisk-1.6.X.Y]# make install
+As you can see, Asterisk has detected that the password entered into the phone doesn't match the secret setting in the [demo-alice] section of sip.conf.
-When finished, Asterisk will display the following warning:
+Creating Dialplan Extensions
+
+The last things we need to do to enable Alice and Bob to call each other is to configure a couple of extensions in the dialplan.
+What is an Extension? When dealing with Asterisk, the term extension does not represent a physical device such as a phone. An extension is simply a set of actions in the dialplan which may or may not write a physical device. In addition to writing a phone, an extensions might be used for such things auto-attendant menus and conference bridges. In this guide we will be careful to use the words phone or device when referring to the physical phone, and extension when referencing the set of instructions in the Asterisk dialplan.
+Let's take a quick look at the dialplan, and then add two extensions. Open extensions.conf, and take a quick look at the file. Near the top of the file, you'll see some general-purpose sections named [docs:general] and [docs:globals]. Any sections in the dialplan beneath those two sections is known as a context. The sample extensions.conf file has a number of other contexts, with names like [docs:demo] and [docs:default]. We'll cover contexts more in [Section 215. Dialplan Fundamentals], but for now you should know that each phone or outside connection in Asterisk points at a single context. If the dialed extension does not exist in the specified context, Asterisk will reject the call. Go to the bottom of your extensions.conf file, and add a new context named [docs:users]. Naming Your Dialplan Contexts There's nothing special about the name users for this context. It could have been named strawberry_milkshake, and it would have behaved exactly the same way. It is considered best practice, however, to name your contexts for the types of extensions that are contained in that context. Since this context contains extensions for the users of our PBX system, we'll call our context users. Underneath that context name, we'll create an extesion numbered 6001 which attempts to ring
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-+---- Asterisk Installation Complete -------+ + + + YOU MUST READ THE SECURITY DOCUMENT + + + + Asterisk has successfully been installed. + + If you would like to install the sample + + configuration files (overwriting any + + existing config files), run: + + + + make samples + + + +-------------------------------------------+ +---- Asterisk Installation Complete -------+
+Alice's phone for twenty seconds, and an extension 6002 which attempts to rings Bob's phone for twenty seconds.
+6001,1,Dial(SIP/demo-alice,20) exten=>6002,1,Dial(SIP/demo-bob,20)]]>
-Security Precautions As the message above suggests, we very strongly recommend that you read the security documentation before continuing with your Asterisk installation. Failure to read and follow the security documentation can leave your system vulnerable to a number of security issues, including toll fraud.
+After adding that section to extensions.conf, go to the Asterisk command-line interface and tell Asterisk to reload the dialplan by typing the command dialplan reload. You can verify that Asterisk successfully read the configuration file by typing dialplan show users at the CLI.
+server*CLI> dialplan show users [ Context 'users' created by 'pbx_config' ] '6001' => 1. Dial(SIP/demo-alice,20) [pbx_config] '6002' => 1. Dial(SIP/demo-bob,20) [pbx_config] -= 2 extensions (2 priorities) in 1 context. =-
-If you installed Asterisk from a tarball (as shown above), the security information is located in a PDF file named asterisk.pdfin the tex/ sub-directory of the source code. If that file doesn't exist, please install the rubber application on your system, and then type:
-[root@server asterisk-1.6.X.Y]# make pdf
+Now we're ready to make a test call!
+Making a Phone Call
-Installing Sample Files
+At this point, you should be able to pick up Alice's phone and dial extension 6002 to call Bob, and dial 6001 from Bob's phone to call Alice. As you make a few test calls, be sure to watch the Asterisk command-line interface (and ensure that your verbosity is set to a value three or higher) so that you can see the messages coming from Asterisk, which should be similar to the ones below:
+server*CLI> -- Executing [6002@users:1] Dial("SIP/demo-alice-00000000", "SIP/demo-bob,20") in new stack -- Called demo-bob -- SIP/demo-bob-00000001 is ringing -- SIP/demo-bob-00000001 answered SIP/demo-alice-00000000 -- Native bridging SIP/demo-alice-00000000 and SIP/demo-bob-00000001 == Spawn extension (users, 6002, 1) exited non-zero on 'SIP/demo-alice-00000000'
-To install a set of sample configuration files for Asterisk, type:
-[root@server asterisk-1.6.X.Y]# make samples
+As you can see, Alice called extension 6002 in the [docs:users] context, which in turn used the Dial application to call Bob's phone. Bob's phone rang, and then answered the call. Asterisk then bridged the two calls (one call from Alice to Asterisk, and the other from Asterisk to Bob), until Alice hung up the phone. At this point, you have a very basic PBX. It has two extensions which can dial each other, but that's all. Before we move on, however, let's review a few basic troubleshooting steps that will help you be more successful as you learn about Asterisk.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Any existing sample files which have been modified will be given a .old file extension. For example, if you had an existing file named extensions.conf, it would be renamed to extensions.conf.old and the sample dialplan would be installed as extensions.conf.
-Installing Initialization Scripts
+Basic PBX Troubleshooting
-Now that you have Asterisk compiled and installed, the last step is to install the initialization script, or initscript. This script starts Asterisk when your server starts, and can be used to stop or restart Asterisk as well. To install the initscript, use the make config command.
-[root@server asterisk-1.6.X.Y]# make config
+The most important troubleshooting step is to set your verbosity level to three (or higher), and watch the command-line interface for errors or warnings as calls are placed. To ensure that your SIP phones are registered, type sip show peers at the Asterisk CLI. To see which context your SIP phones will send calls to, type sip show users. To ensure that you've created the extensions correctly in the [users] context in the dialplan, type dialplan show users. To see which extension will be executed when you dial extension 6002, type dialplan show 6002@users.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Sound Prompt Searching based on Channel Language
-As your Asterisk system runs, it will generate logfiles. It is recommended to install the logrotation script in order to compress and rotate those files, to save disk space and to make searching them or cataloguing them easier. To do this, use the make install-logrotate command.
-[root@server asterisk-1.6.X.Y]# make install-logrotate
-Validating Your Installation
+Dialplan Fundamentals
-Before continuing on, let's check a few things to make sure your system is in good working order. First, let's make sure the DAHDI drivers are loaded. You can use the lsmod under Linux to list all of the loaded kernel modules, and the grep command to filter the input and only show the modules that have dahdi in their name.
-[root@server asterisk-1.6.X.Y]# lsmod | grep dahdi
+The dialplan is essential to the operation of any successful Asterisk system. In this module, we'll help you learn the fundamental components of the Asterisk dialplan, and how to combine them to begin scripting your own dialplan. We'll also add voice mail and a dial-by-name directory features to your dialplan.
+Contexts, Extensions, and Priorities
-If the command returns nothing, then DAHDI has not been started. Start DAHDI by running:
-[root@server asterisk-1.6.X.Y]# /etc/init.d/dadhi start
+The dialplan is organized into various sections, called contexts. Contexts are the basic organizational unit within the dialplan, and as such, they keep different sections of the dialplan independent from each other. We'll use contexts to enforce security boundaries between the various parts of our dialplan, as well as to provide different classes of service to groups of users. The syntax for a context is exactly the same as any other section heading in the configuration files, as explained in Section 206.2.1. Sections and Settings. Simply place the context name in square brackets. For example, here is the context we defined in the previous module:
-Different Methods for Starting Initscripts
+Within each context, we can define one or more extensions. As explained in the previous module, an extension is simply a named set of actions. Asterisk will perform each action, in sequence, when that extension number is dialed. The syntax for an extension is:
+number,priority,application([parameter[,parameter2...]]) ]]>
-Many Linux distributions have different methods for starting initscripts. On most Red Hat based distributions (such as Red Hat Enterprise Linux, Fedora, and CentOS) you can run:
-[root@server asterisk-1.6.X.Y]# service dahdi start
+As an example, let's review extension 6001 from the previous module. It looks like:
-Distributions based on Debian (such as Ubuntu) have a similar command, though it's not commonly used:
-[root@server asterisk-1.6.X.Y]# invoke-rc.d dahdi start
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-If you have DAHDI running, the output of lsmod | grep dahdi should look something like the output below. (The exact details may be different, depending on which DAHDI modules have been built, and so forth.)
+6001,1,Dial(SIP/demo-alice,20) ]]>
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+In this case, the extension number is 6001, the priority number is 1, the application is Dial(), and the two parameters to the application are SIP/demo-alice and 20. Within each extension, there must be one or more priorities. A priority is simply a sequence number. The first priority on an extension is executed first. When it finishes, the second priority is executed, and so forth.
+Priority numbers Priority numbers must begin with 1, and must increment sequentially. If Asterisk can't find the next priority number, it will terminate the call. We call this auto-fallthrough. Consider the example below:
-[root@server asterisk-1.6.X.Y]# lsmod | grep dahdi dahdi_dummy 4288 0 dahdi_transcode 7928 1 wctc4xxp dahdi_voicebus 40464 2 wctdm24xxp,wcte12xp dahdi 196544 12 dahdi_dummy,wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp crc_ccitt 2096 1 dahdi
+6123,1,do something
-Now that DAHDI is running, you can run dahdi_hardware to list any DAHDI-compatible devices in your system. You can also run the dahdi_tool utility to show the various DAHDI-compatible devices, and their current state. To check if Asterisk is running, you can use the Asterisk initscript.
-[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk status asterisk is stopped
+exten => 6123,2,do something else
-To start Asterisk, we'll use the initscript again, this time giving it the start action:
-[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk start Starting asterisk:
+exten => 6123,4,do something different
-When Asterisk starts, it runs as a background service (or daemon), so you typically won't see any response on the command line. We can check the status of Asterisk and see that it's running using the command below. (The process identifier, or pid, will obviously be different on your system.)
-[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk status asterisk (pid 32117) is running...
+]]>
-And there you have it! You've compiled and installed Asterisk, DAHDI, and libpri from source code.
-Getting Started with Asterisk
+In this case, Asterisk would execute priorites one and two, but would then terminate the call, because it couldn't find priority number three.
-In this section, we'll show you how to get started with Asterisk, and how to get around on the Asterisk command-line interface (commonly abbreviated as CLI). We'll also show you how to troubleshoot common problems that you might encounter when first learning Asterisk
-Connecting to the CLI
+Priority number can also be simplied by using the letter n in place of the priority numbers greater than one. The letter n stands for next, and when Asterisk sees priority n it replaces it in memory with the previous priority number plus one. Note that you must still explicitly declare priority number one.
+6123,1,do something exten => 6123,n,do something else exten => 6123,n,do something different]]>
-First, let's show you how to connect to the Asterisk command-line interface. As you should recall from the installation, Asterisk typically runs in the background as a service or daemon. If the Asterisk service is already running, type the command below to connect to its command-line
+You can also assign a label (or alias) to a particular priority number by placing the label in parentheses directly after the priority number, as shown below. Labels make it easier to jump back to a particular location within the extension at a later time.
+6123,1,do something exten => 6123,n(repeat),do something else exten => 6123,n,do something different]]>
+
+Here, we've assigned a label named repeat to the second priority. Included in the Asterisk 1.6.2 branch (and later) there is a way to avoid having to repeat the extension name/number or pattern using the same => prefix.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-interface.
-[root@server ~]# asterisk -r
+_1NXXNXXXXXX,1,do something same => n(repeat),do something else same => n,do something different]]>
-The -r parameter tells the system that you want to re-connect to the Asterisk service. If the reconnection is successful, you'll see something like this:
-
-[root@server ~]# asterisk -r Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. =========================================================================Connec to Asterisk version currently running on server (pid = 11187) server*CLI>
+Applications
-Notice the *CLI> text? That's your Asterisk command-line prompt. All of the Asterisk CLI commands take the form of module action parameters.... For example, type core show uptime to see how long Asterisk has been running.
-server*CLI> core show uptime System uptime: 1 hour, 34 minutes, 17 seconds Last reload: 1 hour, 34 minutes, 17 seconds
+Each priority in the dialplan calls an application. An application does some work on the channel, such as answering a call or playing back a sound prompt. There are a wide variety of dialplan applications available for your use. For a complete list of the dialplan applications available to your installation of Asterisk, type core show applications at the Asterisk CLI. Most applications take one or more parameters, which provide additional information to the application or change its behavior. Parameters should be separated by commas.
+Syntax for Parameters You'll often find examples of Asterisk dialplan code online and in print which use the pipe character or vertical bar character (|) between parameters, as shown in this example:
-You can use the built-in help to get more information about the various commands. Simply type core show help at the Asterisk prompt for a full list of commands, or core show help command for help on a particular command. If you'd like to exit the Asterisk console and return to your shell, just use the quit command from the CLI. Such as:
-server*CLI> quit
-Stopping and Restarting Asterisk
+6123,1,application(one|two|three)]]>
-There are four common commands related to stopping the Asterisk service. They are:
-1. core stop now - This command stops the Asterisk service immediately, ending any calls in progress. 2. core stop gracefully - This command prevents new calls from starting up in Asterisk, but allows calls in progress to continue. When all the calls have finished, Asterisk stops. 3. Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+This is a deprecated syntax, and will no longer work in newer versions of Asterisk. Simply replace the pipe character with a comma, like this:
+6123,1,application(one,two,three)]]>
-3. core stop when convenient - This command waits until Asterisk has no calls in progress, and then it stops the service. It does not prevent new calls from entering the system.
+Answer, Playback, and Hangup Applications
-There are three related commands for restarting Asterisk as well.
-1. core restart now - This command restarts the Asterisk service immediately, ending any calls in progress. 2. core restart gracefully - This command prevents new calls from starting up in Asterisk, but allows calls in progress to continue. When all the calls have finished, Asterisk restarts. 3. core restart when convenient - This command waits until Asterisk has no calls in progress, and then it restarts the service. It does not prevent new calls from entering the system.
+As its name suggests, the Answer() application answers an incoming call. The Answer() application takes a delay (in milliseconds) as its first parameter. Adding a short delay is often useful for ensuring that the remote endpoing has time to begin processing audio before you play a sound prompt. Otherwise, you may not hear the very beginning of the prompt. Knowing When to Answer a Call When you're first learning your way around the Asterisk dialplan, it may be a bit confusing knowing when to use the Answer() application, and when not to. If Asterisk is simply going to pass the call off to another device using the Dial() application, you probably don't want to call the answer the call first. If, on the other hand, you want Asterisk to play sound prompts or gather input from the caller, it's probably a good idea to call the Answer() application before doing anything else. The Playback() application loads a sound prompt from disk and plays it to the caller, ignoring any touch tone input from the caller. The first parameter to the dialplan application is the filename
-There is also a command if you change your mind.
-core abort shutdown - This command aborts a shutdown or restart which was previously initiated with the gracefully or when convenient options.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Changing the Verbose and Debug Levels
+of the sound prompt you wish to play, without a file extension. If the channel has not already been answered, Playback() will answer the call before playing back the sound prompt, unless you pass noanswer as the second parameter. To avoid the first few milliseconds of a prompt from being cut off you can play a second of silence. For example, if the prompt you wanted to play was hello-world which would look like this in the dialplan:
+1234,1,Playback(hello-world)]]>
-Asterisk has two different classes of messages that appear in the command-line interface. The first class is called verbose messages. Verbose messages give information about the calls on the system, as well as notices, warnings, and errors. Verbose messages are intended for Asterisk administrators to be able to better manage their systems. Asterisk allows you to control the verbosity level of the command-line interface. At a verbosity level of zero, you'll receive minimal information about calls on your system. As you increase the verbosity level, you'll see more and more information about the calls. For example, if you set the verbosity level to three or higher, you'll see each step a call takes as it makes its way through the dialplan. There are very few messages that only appear at verbosity levels higher than three. To change the verbosity level, use the CLI command core set verbose, as shown below:
-server*CLI> core set verbose 3 Verbosity was 0 and is now 3
+You could avoid the first few seconds of the prompt from being cut off by playing the silence/1 file:
+1234,1,Playback(silence/1) exten => 1234,n,Playback(hello-world)]]>
-You can also increase (but not decrease) the verbosity level when you connect to the Asterisk CLI from the Linux prompt, by using one or more -v parameters to the asterisk application. For example, this would connect to the Asterisk CLI and set the verbosity to three (if it wasn't already three or higher), because we added three -v parameters:
-[root@server ~]# asterisk -vvvr
+Alternatively this could all be done on the same line by separating the filenames with an ampersand (&):
+1234,1,Playback(silence/1&hello-world)]]>
-The second class of system messages is known as debug messages. These messages are intended for Asterisk developers, to give information about what's happening in the Asterisk program itself. They're often used by developers when trying to track down problems in the code, or to understand why Asterisk is behaving in a certain manner. To change the debugging level, use the CLI command core set debug, as shown below:
+Exploring Sound Prompts
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Asterisk comes with a wide variety of pre-recorded sound prompts. When you install Asterisk, you can choose to install both core and extra sound packages in several different file formats. Prompts are also available in several languages. To explore the sound files on your system, simply find the sounds directory (this will be /var/lib/asterisk/sounds on most systems) and look at the filenames. You'll find useful prompts ("Please enter the extension of the person you are looking for..."), as well as as a number of off-the-wall prompts (such as "Weasels have eaten our phone system", "The office has been overrun with iguanas", and "Try to spend your time on hold not thinking about a blue-eyed polar bear") as well.
-server*CLI> core set debug 4 Core debug was 0 and is now 4
+Sound Prompt Formats Sound prompts come in a variety of file formats, such as .wav and .ulaw files. When asked to play a sound prompt from disk, Asterisk plays the sound prompt with the file format that can most easily be converted to the CODEC of the current call. For example, if the inbound call is using the alaw CODEC and the sound prompt is available in .gsm and .ulaw format, Asterisk will play the .ulaw file because it requires fewer CPU cycles to transcode to the alaw CODEC. You can type the command core show translation at the Asterisk CLI to see the transcoding times for various CODECs. The times reported (in Asterisk 1.6.0 and later releases) are the number of microseconds it takes Asterisk to transcode one second worth of audio. These times are calculated when Asterisk loads the codec modules, and often vary slightly from machine to machine. To perform a current calculation of translation times, you can type the command core show translation recalc 60.
-You can also increase (but not decrease) the debugging level when you connect to the Asterisk CLI from the Linux prompt. Simply add one or more -d parameters to the asterisk application.
-[root@server ~]# asterisk \-ddddr
+How Asterisk Searches for Sound Prompts Based on Channel Language Each channel in Asterisk can be assigned a language by the channel driver. The channel's language code is split, piece by piece (separated by underscores), and used to build paths to look for sound prompts. Asterisk then uses the first file that is found. This means that if we set the language to en_GB_female_BT, for example, Asterisk would search for files in:
-Verbose and Debug Levels
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Please note that the verbose and debug levels are global settings, and apply to all of Asterisk, not just your command-line interface. We recommend that you set your verbosity level to three while learning Asterisk, so that you can get a feel for what is happening as calls are processed. On a busy production system, however, you'll want to set the verbosity level lower. We also recommend that you use debug messages sparingly, as they tend to be quite verbose and can affect call volume on busy systems.
+.../sounds/en/GB/female/BT .../sounds/en/GB/female .../sounds/en/GB .../sounds/en .../sounds This scheme makes it easy to add new sound prompts for various language variants, while falling back to a more general prompt if there is no prompt recorded in the more specific variant. The Hangup() application hangs up the current call. While not strictly necessary due to auto-fallthrough (see the note on Priority numbers above), in general we recommend you add the Hangup() application as the last priority in any extension. Now let's put Answer(), Playback(), and Hangup() together to play a sample sound file. Place this extension in your [docs:users] context:
+6000,1,Answer(500) exten => 6000,n,Playback(hello-world) exten => 6000,n,Hangup()]]>
-Simple CLI Tricks
+Dial Application
-There are a couple of tricks that will help you on the Asterisk command-line interface. The most popular is tab completion. If you type the beginning of a command and press the Tab key, Asterisk will attempt to complete the name of the command for you, or show you the possible commands that start with the letters you have typed. For example, type co and then press the Tab key on your keyboard.
-server*CLI> co[Tab] config core server*CLI> co
+Now that you've learned the basics of using dialplan applications, let's take a closer look at the Dial() application that we used earlier in extensions 6001 and 6002. Dial() attempts to ring an external device, and if the call is answered it bridges the two channels together and does any necessary protocol or CODEC conversion. It also handles call progress responses (busy, no-answer, ringing).
+Dial() and the Dialplan Please note that if the Dial() application successfully bridges two channels together, that the call does not progress in the dialplan. The call will only continue on to the next priority if the Dial() application is unable to bridge the calling channel to the dialed device.
-Now press the r key, and press tab again. This time Asterisk completes the word for you, as core is the only command that begins with cor. This trick also works with sub-commands. For example, type core show and press tab. (You may have to press tab twice, if you didn't put a space after the word show.) Asterisk will show you all the sub-commands that start with core show.
+The Dial() application takes four parameters:
+1. Devices A list of the device(s) you want to call. Devices are specified as technology or channel driver, a forward slash, and the device or account name. For example, SIP/demo-alice would use the SIP channel driver to call the device specified in the demo-alice section of sip.conf. Devices using the IAX2 channel driver take the form of IAX2/demo-george, and DAHDI channels take the form of DAHDI/1. When calling through a device (such as a gateway) or service provider to reach another number, the syntax is technology/device/number such as SIP/my_provider/5551212 or DAHDI/4/5551212. To dial multiple devices at once, simply concatenate the devices together whith the ampersand character (&). The first device to answer will get bridged with the caller, and the other endpoints will stop ringing. 6003,1,Dial(SIP/demo-alice&SIP/demo-bob,30)]]> 2. Timeout The number of seconds to allow the device(s) to ring before giving up and moving on to the next priority in the extension. 3. Options There are dozens of options that you can set on the outbound call, including call screening, distinctive ringing and more. Type core show application dial at the Asterisk CLI for a complete list of all available options. If you want to specify multiple options,
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-server*CLI> core show [Tab] application applications channels channeltype codecs config functions help image license switches sysinfo translation uptime server*CLI> core show
+3.
-calls channeltypes file hint profile taskprocessors version
+simply concatenate them together. For example, if you want to use both the *m*and H options, you would set mH as the options parameter. 4. URL The fourth parameter is a URL that will be sent to the endpoint. Few endpoints do anything with the URL, but there are a few (softphones mostly) that do act on the URL.
-channel codec function hints settings threads warranty
+Adding Voice Mail to Dialplan Extensions
-Another trick you can use on the CLI is to cycle through your previous commands. Asterisk stores a history of the commands you type and you can press the up arrow key to cycle through the history. If you type an exclamation mark at the Asterisk CLI, you will get a Linux shell. When you exit the Linux shell (by typing exit or pressing Ctrl+D), you return to the Asterisk CLI. You can also type an exclamation mark and a Linux command, and the output of that command will be shown to you, and then you'll be returned to the Asterisk CLI.
-server*CLI> !whoami root server*CLI>
+Adding voicemail to the extensions is quite simple. The Asterisk voicemail module provides two key applications for dealing with voice mail. The first, named VoiceMail(), allows a caller to leave a voice mail message in the specified mailbox. The second, called VoiceMailMain(), allows the mailbox owner to retrieve their messages and change their greetings.
+VoiceMail Application
-As you can see, there's a wealth of information available from the Asterisk command-line interface, and we've only scratched the surface. In later sections, we'll go into more details about how to use the command-line interface for other purposes.
-Troubleshooting
+The VoiceMail() applications takes two parameters:
+1. Mailbox This parameter specifies the mailbox in which the voice mail message should be left. It should be a mailbox number and a voice mail context concatenated with an at-sign (@), like 6001@default. (Voice mail boxes are divided out into various voice mail context, similar to the way that extensions are broken up into dialplan contexts.) If the voice mail context is omitted, it will default to the default voice mail context. 2. Options One or more options for controlling the mailbox greetings. The most popular options include the u option to play the unavailable message, the b option to play the busy message, and the s option to skip the system-generated instructions.
-If you're able to get the command-line examples above working, feel free to skip this section. Otherwise, let's look at troubleshooting connections to the Asterisk CLI. The most common problem that people encounter when learning the Asterisk command-line interface is that sometimes they're not able to connect to the Asterisk service running in the background. For example, let's say that Fred starts the Asterisk service, but then isn't able to connect to it with the CLI:
+VoiceMailMain Application
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+The VoiceMailMain() application allows the owner of a voice mail box to retrieve their messages, as well as set mailbox options such as greetings and their PIN number. The VoiceMailMain() application takes two parameters:
+1. Mailbox - This parameter specifies the mailbox to log into. It should be a mailbox number and a voice mail context, concatenated with an at-sign (@), like 6001@default. If the voice mail context is omitted, it will default to the default voice mail context. If the mailbox number is omitted, the system will prompt the caller for the mailbox number. 2. Options - One or more options for controlling the voicemail system. The most popular option is the s option, which skips asking for the PIN number
-[root@server ~]# service asterisk start Starting asterisk: [ OK ] [root@server ~]# asterisk -r Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> =========================================================================Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
+Direct Access to Voice mail Please exercise extreme caution when using the s option! With this option set, anyone which has access to this extension can retrieve voicemail messages without entering the mailbox passcode.
-What does this mean? It most likely means that Asterisk did not remain running between the time that the service was started and the time Fred tried to connect to the CLI (even if it was only a matter of a few seconds.) This could be caused by a variety of things, but the most common is a broken configuration file. To diagnose Asterisk start-up problems, we'll start Asterisk in a special mode, known as console mode. In this mode, Asterisk does not run as a background service or daemon, but instead runs directly in the console. To start Asterisk in console mode, pass the -c parameter to the asterisk application. In this case, we also want to turn up the verbosity, so we can see any error messages that might indicate why Asterisk is unable to start.
-[root@server ~]# asterisk -vvvc Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found == Parsing '/etc/asterisk/extconfig.conf': == Found == Parsing '/etc/asterisk/logger.conf': == Found == Parsing '/etc/asterisk/asterisk.conf': == Found Asterisk Dynamic Loader Starting: == Parsing '/etc/asterisk/modules.conf': == Found ...
+Configuring Voice Mail Boxes
-Carefully look for any errors or warnings that are printed to the CLI, and you should have enough information to solve whatever problem is keeping Asterisk from starting up.
+Now that we've covered the two main voice mail applications, let's look at the voicemail configuration. Voice mail options and mailboxes are configured in the voicemail.conf configuration file. This file has three major sections: The [docs:general] section Near the top of voicemail.conf, you'll find the [docs:general] section. This section of the configuration file controls the general aspects of the voicemail system, such as the maximum number of messages per mailbox, the maximum length of a voicemail message, and so forth. Feel free to look at the sample voicemail.conf file for more details about the various settings.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Running Asterisk in Console Mode
+The [docs:zonemessages] section The [docs:zonemessages] section is used to define various timezones around the world. Each mailbox can be assigned to a particular time zone, so that times and dates are announced relative to their local time. The time zones specified in this section also control the way in which times and dates are announced, such as reading the time of day in 24-hour format. Voice Mail Contexts After the [docs:general] and [docs:zonemessages] sections, any other bracketed section is a voice mail context. Within each context, you can define one or more mailbox. To define a mailbox, we set a mailbox number, a PIN, the mailbox owner's name, the primary email address, a secondary email address, and a list of mailbox options (separated by the pipe character), as shown below:
+pin,full name,email address,short email address,mailbox options ]]>
-We don't recommend you use Asterisk in console mode on a production system, but simply use it for debugging, especially when debugging start-up problems. On production systems, run Asterisk as a background service.
+By way of explanation, the short email address is an email address that will receive shorter email notifications suitable for mobile devices such as cell phones and pagers. It will never receive attachments. To add voice mail capabilities to extensions 6001 and 6002, add these three lines to the bottom of voicemail.conf.
+8762,Alice Jones,alice@example.com,alice2@example.com,attach=no|tz=central|maxmsg=10 6002 => 9271,Bob Smith,bob@example.com,bob2@example.com,attach=yes|tz=eastern]]>
-Asterisk Architecture
+Now that we've defined the mailboxes, we can go into the Asterisk CLI and type voicemail reload to get Asterisk to reload the voicemail.conf file. We can also verify that the new mailboxes have been created by typing voicemail show users.
-From an architectural standpoint, Asterisk is made up of many different modules. This modularity gives you an almost unlimited amount of flexibility in the design of an Asterisk-based system. As an Asterisk administrator, you have the choice on which modules to load. Each module that you loads provides different capabilities to the system. For example, one module might allow your Asterisk system to communicate with analog phone lines, while another might add call reporting capabilities. In this section, we'll discuss the various types of modules and the capabilities they provide.
-Asterisk Architecture, The Big Picture
+server*CLI> voicemail reload Reloading voicemail configuration... server*CLI> voicemail show users Context Mbox User default general New User default 1234 Example Mailbox other 1234 Company2 User vm-demo 6001 Alice Jones vm-demo 6002 Bob Smith 5 voicemail users configured.
-Before we dive too far into the various types of modules, let's first take a step back and look at the overall architecture of Asterisk.
+Zone
-Asterisk Architecture We need to add CEL and Bridge modules to this picture, and take CLI and Manager out for now The heart of any Asterisk system is the core. The PBX core is the essential component that takes care of bridging calls. The core also takes care of other items like reading the configuration files and loading the other modules. We'll talk more about the core below, but for now just remember that all the other modules connect to it.
+central eastern
+
+NewMsg 0 0 0 0 0
+Now that we have mailboxes defined, let's add a priority to extensions 6001 and 6002 which will allow callers to leave voice mail in their respective mailboxes. We'll also add an extension 6500 to allow Alice and Bob to check their voicemail messages. Please modify your [docs:users] context in extensions.conf to look like the following:
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-From a logistical standpoint, these modules are typically files with a .so file extension, which live in the Asterisk modules directory (which is typically /usr/lib/asterisk/modules). When Asterisk starts up, it loads these files and adds their functionality to the system.
-A Plethora of Modules
+6000,1,Answer(500) exten => 6000,n,Playback(hello-world) exten => 6000,n,Hangup() exten => 6001,1,Dial(SIP/demo-alice,20) exten => 6001,n,VoiceMail(6001@vm-demo,u) exten => 6002,1,Dial(SIP/demo-bob,20) exten => 6002,n,VoiceMail(6002@vm-demo,u) exten => 6500,1,Answer(500) exten => 6500,n,VoiceMailMain(@vm-demo)]]>
-Take just a minute and go look at the Asterisk modules directory on your system. You should find a wide variety of modules. A typical Asterisk system has over one hundred fifty different modules!
+Reload the dialplan by typing dialplan reload at the Asterisk CLI. You can then test the voice mail system by dialing from one phone to the other and waiting twenty seconds. You should then be connected to the voicemail system, where you can leave a message. You should also be able to dial extension 6500 to retrieve the voicemail message. When prompted, enter the mailbox number and PIN number of the mailbox. While in the VoiceMainMain() application, you can also record the mailbox owner's name, unavailable greeting, and busy greeting by pressing 0 at the voicemail menu. Please record at least the name greeting for both Alice and Bob before continuing on to the next section. Go into lots of detail about the voicemail interface? How to move between messages, move between folders, forward messages, etc?
+Directory Application
-The core also contains the dialplan, which is the logic of any Asterisk system. The dialplan contains a list of instructions that Asterisk should follow to know how to handle incoming and outgoing calls on the system. Asterisk modules which are part of the core have a file name that look like pbx_xxxxx.so.
-Types of Asterisk Modules
+The next application we'll cover is named Directory(), because it presents the callers with a dial-by-name directory. It asks the caller to enter the first few digits of the person's name, and then attempts to find matching names in the specified voice mail context in voicemail.conf. If the matching mailboxes have a recorded name greeting, Asterisk will play that greeting. Otherwise, Asterisk will spell out the person's name letter by letter.
-There are many different types of modules, many of which are shown in the diagram above.
-Channel Drivers
+The Directory() application takes three parameters: voicemail_context This is the context within voicemail.conf in which to search for a matching directory entry. If not specified , the [docs:default] context will be searched. dialplan_context When the caller finds the directory entry they are looking for, Asterisk will dial the extension matching their mailbox in this context. options A set of options for controlling the dial-by-name directory. Common options include f for searching based on first name instead of last name and e to read the extension number as well
-At the top of the diagram, we show channel drivers. Channel drivers communicate with devices outside of Asterisk, and translate that particular signaling or protocol to the core.
-Dialplan Applications
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Applications provide call functionality to the system. An application might answer a call, play a sound prompt, hang up a call, and so forth.
-Dialplan Functions
+as the name.
+Directory() Options To see the complete list of options for the Directory() application, type core show application Directory at the Asterisk CLI.
-Functions are used to retrieve or set various settings on a call. A function might be used to set the Caller ID on an outbound call, for example.
-Resources
+Let's add a dial-by-name directory to our dialplan. Simply add this line to your [docs:users] context in extensions.conf:
+6501,1,Directory(vm-demo,users,ef) ]]>
-As the name suggests, resources provide resources to Asterisk. Common examples of resources include music on hold and call parking.
-CODECs
+Now you should be able to dial extension 6501 to test your dial-by-name directory.
+Auto-attendant and IVR Menus
-A CODEC (which is an acronym for COder/DECoder) is a module for encoding or decoding audio or video. Typically codecs are used to encode media so that it takes less bandwidth.
-File Format Drivers
+In this section, we'll cover the how to build voice menus, often referred to as auto-attedants and IVR menus. IVR stands for Interactive Voice Response, and is used to describe a system where a caller navigates through a system by using the touch-tone keys on their phone keypad. When the caller presses a key on their phone keypad, the phone emits two tones, known as DTMF tones. DTMF stands for Dual Tone Multi-Frequency. Asterisk recognizes the DTMF tones and responds accordingly. For more information on DTMF tones, see [Section 440.3. DTMF Dialing]. Let's dive in and learn how to build IVR menus in the Asterisk dialplan!
+Background and WaitExten Applications
-File format drivers are used to save media to disk in a particular file format, and to convert those files back to media streams on the network.
+The Background() application plays a sound prompt, but listens for DTMF input. Asterisk then tries to find an extension in the current dialplan context that matches the DTMF input. If it finds a matching extension, Asterisk will send the call to that extension. The Background() application takes the name of the sound prompt as the first parameter just like the Playback() application, so remember not to include the file extension.
+Multiple Prompts If you have multiple prompts you'd like to play during the Background() application, simply concatenate them together with the ampersand (&) character, like this:
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+6123,1,Background(prompt1&prompt2&prompt3)
-Call Detail Record (CDR) Drivers
+]]>
-CDR drivers write call logs to a disk or to a database.
-Call Event Log (CEL) Drivers
+One problems you may encounter with the Background() application is that you may want Asterisk to wait a few more seconds after playing the sound prompt. In order to do this, you can call the WaitExten() application. You'll usually see the WaitExten() application called immediately after the Background() application. The first parameter to the WaitExten()
-Call event logs are similar to call detail records, but record more detail about what happened inside of Asterisk during a particular call.
-Bridge Drivers
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Bridge drivers are used by the bridging architecture in Asterisk, and provide various methods of bridging call media between participants in a call. Now let's go into more detail on each of the module types.
-Channel Driver Modules
+application is the number of seconds to wait for the caller to enter an extension. If you don't supply the first parameter, Asterisk will use the built-in response timeout (which can be modified with the TIMEOUT() dialplan function).
+start,1,Verbose(2,Incoming call from ${CALLERID(all)}) same => n,Playback(silence/1) same => n,Background(prompt1&prompt2&prompt3) same => n,WaitExten(10) same => n,Goto(timeout-handler,1) exten => timeout-handler,1) same => n,Dial(${GLOBAL(OPERATOR)},30) same => n,Voicemail(operator@default,${IF($[${DIALSTATUS} = BUSY]?b:u)}) same => n,Hangup()]]>
-All calls from the outside come through a channel driver before reaching the core, and all outbound calls go through a channel driver on their way to the external device. The SIP channel driver, for example, communicates with external devices using the SIP protocol. It translates the SIP signaling into the core. This means that the core of Asterisk is signaling agnostic. Therefore, Asterisk isn't just a SIP PBX, it's a multi-protocol PBX. For more information on the various channel drivers, see [Section 400. Channel Drivers and External Connectivity]. All channel drivers have a file name that look like chan_xxxxx.so, such as chan_sip.so or chan_dahdi.so.
-Dialplan Application Modules
+Goto Application and Priority Labels
-The application modules provide call functionality to the system. These applications are then scripted sequentially in the dialplan. For example, a call might come into Asterisk dialplan, which might use one application to answer the call, another to play back a sound prompt from disk, and a third application to allow the caller to leave voice mail in a particular mailbox. For more information on dialplan applications, see Dialplan Fundamentals. All application modules have file names that looks like app_xxxxx.so, such as app_voicemail.so.
-Dialplan Function Modules
+Before we create a simple auto-attendant menu, let's cover a couple of other useful dialplan applications. The Goto() application allows us to jump from one position in the dialplan to another. The parameters to the Goto() application are slightly more complicated than with the other applications we've looked at so far, but don't let that scare you off. The Goto() application can be called with either one, two, or three parameters. If you call the Goto() application with a single parameter, Asterisk will jump to the specified priority (or its label) within the current extension. If you specify two parameters, Asterisk will read the first as an extension within the current context to jump to, and the second parameter as the priority (or label) within that extension. If you pass three parameters to the application, Asterisk will assume they are the context, extension, and priority (respectively) to jump to.
+100,1,Goto(monkeys) same => n,NoOp(We skip this) same => n(monkeys),Playback(tt-monkeys) same => n,Hangup() exten => 200,1,Goto(start,1) ; play tt-weasels then tt-monkeys
-Dialplan functions are somewhat similar to dialplan applications, but instead of doing work on a particular channel or call, they simply retrieve or set a particular setting on a channel, or perform text manipulation. For example, a dialplan function might retrieve the Caller ID information from an incoming call, filter some text, or set a timeout for caller input. For more information on dialplan functions, see [PBX Features].
+exten => 300,1,Goto(start,monkeys) ; only play tt-monkeys exten => 400,1,Goto(JumpingContext,start,1) exten => start,1,NoOp() same => n,Playback(tt-weasels) same => n(monkeys),Playback(tt-monkeys) [JumpingContext] exten => start,1,NoOp() same => n,Playback(hello-world) same => n,Hangup() ]]> ; play hello-world
+
+SayDigits, SayNumber, SayAlpha, and SayPhonetic Applications
+
+While not exactly related to auto-attendant menus, we'll introduce some applications to read back various pieces of information back to the caller. The SayDigits() and SayNumber() applications read the specified number back to caller. To use the SayDigits() and SayNumber() application simply pass it the number you'd like it to say as the first parameter.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-All dialplan application modules have file names that looks like func_xxxxx.so, such as func_callerid.so.
-Resource Modules
+The SayDigits() application reads the specified number one digit at a time. For example, if you called SayDigits(123), Asterisk would read back "one two three". On the other hand, the SayNumber() application reads back the number as if it were a whole number. For example, if you called SayNumber(123) Asterisk would read back "one hundred twenty three". The SayAlpha() and SayPhonetic() applications are used to spell an alphanumeric string back to the caller. The SayAlpha() reads the specified string one letter at a time. For example, SayAlpha(hello) would read spell the word "hello" one letter at a time. The SayPhonetic() spells back a string one letter at a time, using the international phonetic alphabet. For example, SayPhonetic(hello) would read back "Hotel Echo Lima Lima Oscar". We'll use these four applications to read back various data to the caller througout this guide. In the meantime, please feel free to add some sample extensions to your dialplan to try out these applications. Here are some examples:
+6592,1,SayDigits(123) exten => 6593,1,SayNumber(123) exten => 6594,1,SayAlpha(hello) exten => 6595,1,SayPhonetic(hello)]]>
-Resources provide functionality to Asterisk that may be called upon at any time during a call, even while another application is running on the channel. Resources are typically used of asynchronous events such as playing hold music when a call gets placed on hold, or performing call parking. Resource modules have file names that looks like res_xxxxx.so, such as res_musiconhold.so.
-Codec Modules
+Creating a Simple IVR Menu
-CODEC modules have file names that look like codec_xxxxx.so, such as codec_alaw.so and codec_ulaw.so. CODECs represent mathematical algorithms for encoding (compressing) and decoding (decompression) media streams. Asterisk uses CODEC modules to both send and recieve media (audio and video). Asterisk also uses CODEC modules to convert (or transcode) media streams between different formats. CODEC modules have file names that look like codec_xxxxx.so, such as codec_alaw.so and codec_ulaw.so. Asterisk is provided with CODEC modules for the following media types:
-ADPCM, 32kbit/s G.711 alaw, 64kbit/s G.711 ulaw, 64kbit/s G.722, 64kbit/s G.726, 32kbit/s GSM, 13kbit/s LPC-10, 2.4kbit/s
+Let's go ahead and apply what we've learned about the various dialplan applications by building a very simple auto-attendant menu. It is common practice to create an auto-attendant or IVR menu in a new context, so that it remains independant of the other extensions in the dialplan. Please add the following to your dialplan (the extensions.conf file) to create a new demo-menu context. In this new context, we'll create a simple menu that prompts you to enter one or two, and then it will read back what you're entered.
+Sample Sound Prompts Please note that the example below (and many of the other examples in this guide) use sound prompts that are part of the extra sounds packages. If you didn't install the extra sounds earlier, now might be a good time to do that.
-If the Speex (www.speex.org) development libraries are detected on your system when Asterisk is built, a CODEC module for Speex will also be installed. If the iLBC (www.ilbcfreeware.org) development libraries are detected on your system when Asterisk is built, a CODEC module for iLBC will also be installed. Support for the patent-encumbered G.729A or G.723.1 CODECs is provided by Digium on a commercial basis through both software and hardware products. For more information about purchasing licenses or hardware to use the G.729A or G.723.1 CODECs with Asterisk, please see Digium's website. Support for Polycom's patent-encumbered but free G.722.1 Siren7 and G.722.1C Siren14 CODECs can be enabled in Asterisk by downloading the binary CODEC modules from Digium's website. For more detailed information on CODECs, see [CODECs].
+s,1,Answer(500) same => n(loop),Background(press-1&or&press-2) same => n,WaitExten() exten => 1,1,Playback(you-entered) same => n,SayNumber(1) same => n,Goto(s,loop) exten => 2,1,Playback(you-entered) same => n,SayNumber(2) same => n,Goto(s,loop)]]>
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Before we can use the demo menu above, we need to add an extension to the [docs:users] context to redirect the caller to our menu. Add this line to the [docs:users] context in your dialplan:
+6598,1,Goto(demo-menu,s,1) ]]>
-File Format Drivers
+Reload your dialplan, and then try dialing extension 6598 to test your auto-attendant menu.
-Add a list of the file formats that Asterisk supports, then point them at the module in section 400 that goes into more detail? Asterisk uses file format modules to take media (such as audio and video) from the network and save them on disk, or retrieve said files from disk and convert them back to a media stream. While often related to CODECs, there may be more than one available on-disk format for a particular CODEC. File format modules have file names that look like format_xxxxx.so, such as format_wav.so and format_jpeg.so. Add a list of the file formats that Asterisk supports, then point them at the module in section 400 that goes into more detail?
-Call Detail Record (CDR) Drivers
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-CDR modules are used to store call detail records in a variety of formats. Popular storage mechanisms include comma-separated value (CSV) files, as well as relational databases such as PostgreSQL. Call detail records typically contain one record per call, and give details such as who made the call, who answered the call, the amount of time spent on the call, and so forth. For more information on call detail records, see [Section 370. Call Detail Records]. Call detail record modules have file names that look like cdr_xxxxx.so, such as cdr_csv.so and cdr_pgsql.so.
-Call Event Log (CEL) Driver Modules
+Handling Special Extensions
-Call Event Logs record the various actions that happen on a call. As such, they are typically more detailed that call detail records. For example, a call event log might show that Alice called Bob, that Bob's phone rang for twenty seconds, then Bob's mobile phone rang for fifteen seconds, the call then went to Bob's voice mail, where Alice left a twenty-five second voicemail and hung up the call. The system also allows for custom events to be logged as well. For more information about Call Event Logging, see [Call Event Logging]. Call event logging modules have file names that look like cel_xxxxx.so, such as cel_custom.so and cel_adaptive_odbc.so.
-Bridging Modules
+We have the basics of an auto-attendant created, but now let's make it a bit more robust. We need to be able to handle special situations, such as when the caller enters an invalid extension, or doesn't enter an extension at all. Asterisk has a set of special extensions for dealing with situations like there. They all are named with a single letter, so we recommend you don't create any other extensions named with a single letter. The most common special extensions include: i: the invalid entry extension If Asterisk can't find an extension in the current context that matches the digits dialed during the Background() or WaitExten() applications, it will send the call to the i extension. You can then handle the call however you see fit. t: the reponse timeout extension When the caller waits too long before entering a response to the Background() or WaitExten() applications, and there are no more priorities in the current extension, the call is sent to the t extension. s: the start extension When an analog call comes into Asterisk, the call is sent to the s extension. The s extension is also used in macros. Please note that the s extension is not a catch-all extension. It's simply the location that analog calls and macros begin. In our example above, it simply makes a convenient extension to use that can't be easily dialed from the Background() and WaitExten() applications. h: the hangup extension When a call is hung up, Asterisk executes the h extension in the current context. This is typically used for some sort of clean-up after a call has been completed. o: the operator extension If a caller presses the zero key on their phone keypad while recording a voice mail message, and the o extension exists, the caller will be redirected to the o extension. This is typically used so that the caller can press zero to reach an operator. a: the assistant extension This extension is similar to the o extension, only it gets triggered when the caller presses the asterisk (*) key while recording a voice mail message. This is typically used to reach an assistant.
-Beginning in Asterisk 1.6.2, Asterisk introduced a new method for bridging calls together. It relies on various bridging modules to control how the media streams should be mixed for the participants on a call. The new bridging methods are designed to be more flexible and more efficient than earlier methods. Bridging modules have file names that look like bridge_xxxxx.so, such as bridge_simple.so and bridge_multiplexed.so.
+Let's add a few more lines to our [docs:demo-menu] context, to handle invalid entries and timeouts. Modify your [docs:demo-menu] context so that it matches the one below:
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Call Flow and Bridging Model
+s,1,Answer(500) same => n(loop),Background(press-1&or&press-2) same => n,WaitExten() exten => 1,1,Playback(you-entered) same => n,SayNumber(1) same => n,Goto(s,loop) exten => 2,1,Playback(you-entered) same => n,SayNumber(2) same => n,Goto(s,loop) exten => i,1,Playback(option-is-invalid) same => n,Goto(s,loop) exten => t,1,Playback(are-you-still-there) same => n,Goto(s,loop)]]>
-Now that you know about the various modules that Asterisk uses, let's talk about the ways that calls flow through an Asterisk system. To explain this clearly, let's say that Alice wants to talk to Bob, and they both have SIP phones connected to their Asterisk system. Let's see what happens! Should we add a graphic to help explain the call flow model?
-1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Alice dials extension 6002, which is Bob's extension on the Asterisk system. A SIP message goes from Alice's phone to the SIP channel driver in Asterisk The SIP channel driver authenticates the call. If Alice's phone does not provide the proper credentials, Asterisk rejects the call. At this point, we have Alice's phone communicating with Asterisk. Now the call goes from the SIP channel driver into the core of Asterisk. Asterisk looks for a set of instructions to follow for extension 6002 in the dialplan. Extension 6002 in the dialplan tells Asterisk to call Bob's phone Asterisk makes a call out through the SIP channel driver to Bob's phone. Bob answers his phone. Now we have two independent calls on the Asterisk system: one from Alice, and to Bob. Asterisk now bridges the audio between these two calls (known as channels in Asterisk parlance). When one channel hangs up, Asterisk signals the other channel to hang up.
+Now dial your auto-attendant menu again (by dialing extension 6598), and try entering an invalid option (such as 3) at the auto-attendant menu. If you watch the Asterisk command-line interface while you dial and your verbosity level is three or higher, you should see something similar to the following:
+-- Executing [6598@users:1] Goto("SIP/demo-alice-00000008", "demo-menu,s,1") in new stack -- Goto (demo-menu,s,1) -- Executing [s@demo-menu:1] Answer("SIP/demo-alice-00000008", "500") in new stack -- Executing [s@demo-menu:2] BackGround("SIP/demo-alice-00000008", "press-1&or&press-2") in new stack -- <SIP/demo-alice-00000008> Playing 'press-1.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'or.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'press-2.gsm' (language 'en') -- Invalid extension '3' in context 'demo-menu' on SIP/demo-alice-00000008 -- Executing [i@demo-menu:1] Playback("SIP/demo-alice-00000008", "option-is-invalid") in new stack -- <SIP/demo-alice-00000008> Playing 'option-is-invalid.gsm' (language 'en') -- Executing [i@demo-menu:2] Goto("SIP/demo-alice-00000008", "s,loop") in new stack -- Goto (demo-menu,s,2) -- Executing [s@demo-menu:2] BackGround("SIP/demo-alice-00000008", "press-1&or&press-2") in new stack -- <SIP/demo-alice-00000008> Playing 'press-1.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'or.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'press-2.gsm' (language 'en')
-And there we have it! We've shown how calls flow from external devices, through the channel drivers to the core of Asterisk, and back out through the channel drivers to external devices.
-Asterisk Configuration Files
-Intro to Asterisk Configuration Files
+If you don't enter anything at the auto-attendant menu and instead wait approximately ten seconds, you should hear (and see) Asterisk go to the t extension as well.
-In this section, we'll introduce you to the Asterisk configuration files, and show you how to use some advanced features.
-Config File Format
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Asterisk is a very flexible telephony engine. With this flexibility, however, comes a bit of complexity. Asterisk has quite a few configuration files which control almost every aspect of how it operates. The format of these configuration files, however, is quite simple. The Asterisk configuration files are plain text files, and can be edited with any text editor.
-Sections and Settings
+Record Application
-The configuration files are broken into various section, with the section name surrounded by square brackets. Section names should not contain spaces, and are case sensitive. Inside of each section, you can assign values to various settings. In general, settings in one section are independent of values in another section[docs:5]. Some settings take values such as true or false, while other settings have more specific settings. The syntax for assigning a value to a setting is to write the setting name, an equals sign, and the value, like this:
+For creating your own auto-attendant or IVR menus, you're probably going to want to record your own custom prompts. An easy way to do this is with the Record() application. The Record() application plays a beep, and then begins recording audio until you press the hash key (#) on your keypad. It then saves the audio to the filename specified as the first parameter to the application and continues on to the next priority in the extension. If you hang up the call before pressing the hash key, the audio will not be recorded. For example, the following extension records a sound prompt called custom-menu in the gsm format in the en/ sub-directory, and then plays it back to you.
+6597,1,Answer(500) same => n,Record(en/custom-menu.gsm) same => n,Wait(1) same => n,Playback(custom-menu) same => n,Hangup()]]>
-Objects
+Recording Formats When specifiying a file extension when using the Record() application, you must choose a file extension which represents one of the supported file formats in Asterisk. For the complete list of file formats supported in your Asterisk installation, type core show file formats at the Asterisk command-line interface.
-Some Asterisk configuration files also create objects. The syntax for objects is slightly different than for settings. To create an object, you specify the type of object, an arrow formed by the equals sign and a greater-than sign (=>), and the settings for that object.
+You've now learned the basics of how to create a simple auto-attendant menu. Now let's build a more practical menu for callers to be able to reach Alice or Bob or the dial-by-name directory. Procedure 216.1. Building a Practical Auto-Attendant Menu
+1. Add an extension 6599 to the [docs:users] context which sends the calls to a new context we'll build called [docs:day-menu]. Your extension should look something like: 6599,1,Goto(day-menu,s,1)]]> 2. Add a new context called [docs:day-menu], with the following contents: s,1,Answer(500) same => n(playback),Background(custom-menu) same => n,WaitExten() exten => 1,1,Goto(users,6001,1) exten => 2,1,Goto(users,6002,1) exten => 9,1,Directory(vm-demo,users,fe) exten => *,1,VoiceMailMain(@vm-demo) exten => i,1,Playback(option-is-invalid) same => n,Goto(s,loop) exten => t,1,Playback(are-you-still-there) same => n,Goto(s,loop)]]> 3. Dial extension 6597 to record your auto-attendant sound prompt. Your sound prompt should say something like "Thank you for calling! Press one for Alice, press two for Bob, or press 9 for a company directory". Press the hash key (#) on your keypad when you're finished recording, and Asterisk will play it back to you. If you don't like it, simply dial extension 6597 again to re-record it. 4. Dial extension 6599 to test your auto-attendant menu.
+
+In just a few lines of code, you've created your own auto-attendant menu. Feel free to experiment with your auto-attendant menu before moving on to the next section.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-settings]]>
+Dialplan Architecture
-Confused by Object Syntax? In order to make life easier for newcomers to the Asterisk configuration files, the developers have made it so that you can also create objects with an equal sign. Thus, the two lines below are functionally equivalent.
-some_object=>settings some_object=settings
+In this section, we'll begin adding structure to our dialplan. We'll begin by talking about variables and how to use them, as well as how to manipulate them. Then we'll cover more advanced topics, such as pattern matching and using include statements to build classes of functionality.
+Variables
-It is common to see both versions of the syntax, especially in online Asterisk documentation and examples. This book, however, will denote objects by using the arrow instead of the equals sign.
+Variables are used in most programming and scripting languages. In Asterisk, we can use variables to simplify our dialplan and begin to add logic to the system. A variable is simply a container that has both a name and a value. For example, we can have a variable named COUNT which has a value of three. Later on, we'll show you how to route calls based on the value of a variable. Before we do that, however, let's learn a bit more about variables. The names of variables are case-sensitive, so COUNT is different than Count and count. Any channel variables created by Asterisk will have names that are completely upper-case, but for your own channels you can name them however you would like. In Asterisk, we have two different types of variables: channel variables and global variables.
+Channel Variables Basics
-name1 label1=value0 label3=value3 object2=>name2]]>
+Channel variables are variables that are set for the current channel (one leg of a bridged phone call). They exist for the lifetime of the channel, and then go away when that channel is hung up. Channel variables on one particular channel are completely independent of channel variables on any other channels; in other words, two channels could each have variables called COUNT with different values. To assign a value to a channel variable, we use the Set() application. Here's an example of setting a variable called COUNT to a value of 3.
+6123,1,Set(COUNT=3) ]]>
-In this example, object1 inherits both label1 and label2. It is important to note that object2 also inherits label2, along with label1 (with the new overridden value value0) and label3. In short, objects inherit all the settings defined above them in the current section, and later settings override earlier settings.
-Comments
+To retrieve the value of a variable, we use a special syntax. We put a dollar sign and curly braces around the variable name, like ${COUNT} When Asterisk sees the dollar sign and curly braces around a variable name, it substitutes in the value of the variable. Let's look at an example with the SayNumber() application.
+6123,1,Set(COUNT=3) exten=>6123,n,SayNumber(${COUNT}) ]]>
-We can (and often do) add comments to the Asterisk configuration files. Comments help make the configuration files easier to read, and can also be used to temporarily disable certain settings.
-Comments on a Single Line
+In the second line of this example, Asterisk replaces the ${COUNT} text with the value of the COUNT variable, so that it ends up calling SayNumber(3).
+Global Variables Basics
-Single-line comments begin with the semicolon (;) character. The Asterisk configuration parser treats everything following the semicolon as a comment. To expand on our previous example:
+Global variables are variables that don't live on one particular channel -- they pertain to all calls on the system. They have global scope. There are two ways to set a global variable. The first is to declare the variable in the [globals] section of extensions.conf, like this:
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Block Comments
+You can also set global variables from dialplan logic using the GLOBAL() dialplan function along with the Set() application. Simply use the syntax:
+6124,1,Set(GLOBAL(MYGLOBALVAR)=somevalue) ]]>
-Asterisk also allows us to create block comments. A block comment is a comment that begins on one line, and continues for several lines. Block comments begin with the character sequence ;-, and continue across multiple lines until the character sequence -; is encountered. The block comment ends immediately after the --;.
+To retrieve the value of a global channel variable, use the same syntax as you would if you were retrieving the value of a channel variable.
+Manipulating Variables Basics
-Using The include and exec Constructs
+It's often useful to do string manipulation on a variable. Let's say, for example, that we have a variable named NUMBER which represents a number we'd like to call, and we want to strip off the first digit before dialing the number. Asterisk provides a special syntax for doing just that, which looks like ${variable[:skip[docs::length]}. The optional skip field tells Asterisk how many digits to strip off the front of the value. For example, if NUMBER were set to a value of 98765, then ${NUMBER:2} would tell Asterisk to remove the first two digits and return 765. If the skip field is negative, Asterisk will instead return the specified number of digits from the end of the number. As an example, if NUMBER were set to a value of 98765, then ${NUMBER:-2} would tell Asterisk to return the last two digits of the variable, or 65. If the optional length field is set, Asterisk will return at most the specified number of digits. As an example, if NUMBER were set to a value of 98765, then ${NUMBER:0:3} would tell Asterisk not to skip any characters in the beginning, but to then return only the three characters from that point, or 987. By that same token, ${NUMBER:1:3} would return 876.
+Variable Inheritance Basics
+
+When building your Asterisk dialplan, it may be useful to have one channel inherit variables from another channel. For example, imagine that Alice's call has a channel variable containing an account code, and you'd like to pass that variable on to Bob's channel when Alice's call gets bridged to Bob. We call this variable inheritance. There are two levels of variable inheritance in Asterisk: single inheritance and multiple inheritance.
+Multiple Inheritance
-There are two other constructs we can use within our configuration files. They are #include and #exec.
+Multiple inheritance means that a channel variable will be inherited by created (spawned) channels, and it will continue to be inherited by any other channels created by the spawned channels. To set multiple inheritance on a channel, preface the variable name with two underscores when giving it a value with the Set() application, as shown below.
+6123,1,Set(__ACCOUNT=5551212) ]]>
+Single Inheritance
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The #include construct tells Asterisk to read in the contents of another configuration file, and act as though the contents were at this location in this configuration file. The syntax is #include filename, where filename is the name of the file you'd like to include. This construct is most often used to break a large configuration file into smaller pieces, so that it's more manageable. The #exec takes this one step further. It allows you to execute an external program, and place the output of that program into the current configuration file. The syntax is #exec program, where program is the name of the program you'd like to execute.
-Enabling #exec Functionality The #exec construct is not enabled by default, as it has some risks both in terms of performance and security. To enable this functionality, go to the asterisk.conf configuration file (by default located in /etc/asterisk) and set execincludes=yes in the [options] section. By default both the [options] section heading and the execincludes=yes option have been commented out, you you'll need to remove the semicolon from the beginning of both lines.
+Single inheritance means that a channel variable will be inherited by created (spawned) channels, but not propogate from there to any other swawned channels. To follow our example above, if Alice sets a channel variable with single inheritance and calls Bob, Bob's channel will inherit that channel variable, but the channel variable won't get inherited by any channels that might get spawned by Bob's channel (if the call gets transferred, for example). To set single inheritance on a channel, preface the variable name with an underscore when giving it a value with the Set() application, as shown below.
+6123,1,Set(_ACCOUNT=5551212) ]]>
-Let's look at example of both constructs in action.
+Using the CONTEXT, EXTEN, PRIORITY, UNIQUEID, and CHANNEL Variables
-Adding to an existing section
+Now that you've learned a bit about variables, let's look at a few of the variables that Asterisk automatically creates. Asterisk creates channel variables named CONTEXT, EXTEN, and PRIORITY which contain the current context, extension, and priority. We'll use them in pattern matching (below), as well as when we talk about macros in [Section 308.10. Macros]. Until then, let's show a trivial example of using ${EXTEN} to read back the current extension number.
+exten=>6123,1,SayNumber(${EXTEN})
-If you want to add settings to an existing section of a configuration file (either later in the file, or when using the #include and #exec constructs), add a plus sign in parentheses after the section heading, as shown below:
+If you were to add this extension to the [docs:users] context of your dialplan and reload the dialplan, you could call extension 6123 and hear Asterisk read back the extension number to you. Another channel variable that Asterisk automatically creates is the UNIQUEID variable. Each channel within Asterisk receives a unique identifier, and that identifier is stored in the UNIQUEID variable. The UNIQUEID is in the form of 1267568856.11, where 1267568856 is the Unix epoch, and 11 shows that this is the eleventh call on the Asterisk system since it was last restarted. Last but not least, we should mention the CHANNEL variable. In addition to a unique identifier, each channel is also given a channel name and that channel name is set in the CHANNEL variable. A SIP call, for example, might have a channel name that looks like SIP/george-0000003b, for example.
+The Verbose and NoOp Applications
-This example shows that the setting2 setting was added to the existing [docs:section-name] section of the configuration file.
-Templates
+Asterisk has a convenient dialplan applications for printing information to the command-line interface, called Verbose(). The Verbose() application takes two parameters: the first parameter is the minimum verbosity level at which to print the message, and the second parameter is the message to print. This extension would print the current channel identifier and unique identifier for the current call, if the verbosity level is two or higher.
+exten=>6123,1,Verbose(2,The channel name is ${CHANNEL}) exten=>6123,n,Verbose(2,The unique id is ${UNIQUEID})
-Another construct we can use within most Asterisk configuration files is the use of templates. A template is a section of a configuration file that is only used as a base (or template, as the name suggests) to create other sections from.
-Template Syntax
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-To define a section as a template, place an exclamation mark in parentheses after the section heading, as shown in the example below.
+The NoOp() application stands for "No Operation". In other words, it does nothing. Because of the way Asterisk prints everything to the console if your verbosity level is three or higher, however, the NoOp() application is often used to print debugging information to the console like the Verbose() does. While you'll probably come across examples of the NoOp() application in other examples, we recommend you use the Verbose() application instead.
+The Read Application
-Using Templates
+The Read() application allows you to play a sound prompt to the caller and retrieve DTMF input from the caller, and save that input in a variable. The first parameter to the Read() application is the name of the variable to create, and the second is the sound prompt or prompts to play. (If you want multiple prompts, simply concatenate them together with ampersands, just like you would with the Background() application.) There are some additional parameters that you can pass to the Read() application to control the number of digits, timeouts, and so forth. You can get a complete list by running the core show application read command at the Asterisk CLI. If no timeout is specified, Read() will finish when the caller presses the hash key (#) on their keypad.
+exten=>6123,1,Read(Digits,enter-ext-of-person) exten=>6123,n,Playback(you-entered) exten=>6123,n,SayNumber(${Digits})
-To use a template when creating another section, simply put the template name in parentheses after the section heading name, as shown in the example below. If you want to inherit from multiple templates, use commas to separate the template names).
+In this example, the Read() application plays a sound prompt which says "Please enter the extension of the person you are looking for", and saves the captured digits in a variable called Digits. It then plays a sound prompt which says "You entered" and then reads back the value of the Digits variable.
+Pattern Matching
+
+The next concept we'll cover is called pattern matching. Pattern matching allows us to create extension patterns in our dialplan that match more than one possible dialed number. Pattern matching saves us from having to create an extension in the dialplan for every possible number that might be dialed. When Alice dials a number on her phone, Asterisk first looks for an extension (in the context specified by the channel driver configuration) that matches exactly what Alice dialed. If there's no exact match, Asterisk then looks for a pattern match that matches. After we show the syntax and some basic examples of pattern matching, we'll explain how Asterisk finds the best match if there are two or more patterns which match the dialed number. Pattern matches always begin with an underscore. This is how Asterisk recognizes that the extension is a pattern and not just an extension with a funny name. Within the pattern, we use various letter and characters to represent sets or ranges of numbers. Here are the most common letters: X The letter X represents a single digit from 0 to 9.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The newly-created section will inherit all the values and objects defined in the template(s), as well as any new settings or objects defined in the newly-created section. The settings and objects defined in the newly-created section override settings or objects of the same name from the templates. Consider this example:
+Z The letter Z represents any digit from 1 to 9. N The letter N represents a single digit from 2 to 9. Now let's look at a sample pattern. If you wanted to match all four-digit numbers that had the first two digits as six and four, you would create an extension that looks like:
+exten => _64XX,1,SayDigits(${EXTEN})
-The [docs:test-three] section will be processed as though it had been written in the following way:
+In this example, each X represents a single digit, with any value from zero to nine. We're essentially saying "The first digit must be a six, the second digit must be a four, the third digit can be anything from zero to nine, and the fourth digit can be anything from zero to nine". If we want to be more specific about a range of numbers, we can put those numbers or number ranges in square brackets. For example, what if we wanted the second digit to be either a three or a four? One way would be to create two patterns (_64XX and _63XX), but a more compact method would be to do _6[docs:34]XX. This specifies that the first digit must be a six, the second digit can be either a three or a four, and that the last two digits can be anything from zero to nine. You can also use ranges within square brackets. For example, [docs:1-468] would match a single digit from one through four or six or eight. It does not match any number from one to four hundred sixty-eight! Within Asterisk patterns, we can also use a couple of other characters to represent ranges of numbers. The period character (.) within a pattern matches on one or more remaining digits in the pattern. It typically appears at the end of a pattern match, especially when you want to match extensions of an indeterminate length. As an example, the pattern _9876. would match any number that began with 9876 and had at least one more character or digit. The exclamation mark (!) character is similar to the period and also matches one more more remaining characters, but is used in overlap dialing. For example, _9876! would match any number that began with 9876, and would respond that the number was complete as soon as there was an unambiguous match.
+Be Careful With Wildcards in Pattern Matches Please be extremely cautious when using the period and exclamation mark characters in your pattern matches. They match more than just digits, they also match on characters as well, and if you're not careful to filter the input from your callers, a malicious caller might try to use these wildcards to bypass security boundaries on your system.
-Basic PBX Functionality
+For a more complete explanation of this topic and how you can protect yourself, please refer to the README-SERIOUSLY.bestpractices.txt file in the Asterisk source code.
-In this section, we're going to guide you through the basic setup of a very primitive PBX. After you finish, you'll have a basic PBX with two phones that can dial each other. In later modules, we'll go into more detail on each of these steps, but in the meantime, this will give you a basic system on which you can learn and experiement.
-The Most Basic PBX
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-While it won't be anything to brag about, this basic PBX that you will build from Asterisk will help you learn the fundamentals of configuring Asterisk. For this exercise, we're going to assume that you have access to two phones which speak the SIP voice-over-IP protocol. There are a wide variety of SIP phones available in many different shapes and sizes, and if your budget doesn't allow for you to buy phones, feed free to use a free soft phone. Soft phones are simply computer programs which run on your computer and emulate a real phone, and communicate with other devices across your network, just like a real voice-over-IP phone would.
-Creating SIP Accounts
+Now let's show what happens when there is more than one pattern that matches the dialed number. How does Asterisk know which pattern to choose as the best match? Asterisk uses a simple set of rules to determine the best match. They are:
+1. Examine the first digit eliminate any patterns which don't match the first digit of the dialed number 2. Sort the remaining patterns based on the most constrained match for the current digit. By most constrained, we mean the pattern that has the fewest possible matches for this digit. As an example, the N character has 8 possible matches (two through nine), while an X has ten possible matches. 3. In the case of a match, sort the patterns in ASCII sort order. For example, _[docs:234]X and _[docs:345]X have three possible matches in the first digit, but 234 comes before 345 in ASCII sort order. 4. Move on to the next digit (moving digit by digit from left to right), and eliminate any patterns which don't match the current digit of the dialed number. Then continue back at step number two. 5. After you've examined all the digits, return the match that has been sorted to the top of the list.
-In order for our two phones to communicate with each other, we need to configure an account for each phone in the channel driver which corresponds to the protocol they'll be using. Since both the phones are using the SIP protocol, we'll configure accounts in the SIP channel driver configuration file, called sip.conf. (This file resides in the Asterisk configuration directory, which is typically /etc/asterisk.) Let's name your phones Alice and Bob, so that we can easily differentiate between them. Open sip.conf with your favorite text editor, and spend a minute or two looking at the file. (Don't let it overwhelm you -- the sample sip.conf has a lot of data in it, and can be overwhelming at first glance.) Notice that there are a couple of sections at the top of the configuration, such as [docs:general] and [docs:authentication], which control the overall functionality of the channel driver. Below those sections, there are sections which correspond to SIP accounts on the system. Scroll to the bottom of the file, and add a section for Alice and Bob. You'll need to choose your own unique password for each account, and change the permit line to match the settings for your local network.
+Let's look at an example to better understand how this works. Let's assume Alice dials extension 6401, and she has the following patterns in her dialplan:
+exten exten exten exten => => => => _64XX,1,SayAlpha(A) _640X,1,SayAlpha(B) _64NX,1,SayAlpha(C) _6XX1,1,SayAlpha(D)
+
+Can you tell (without reading ahead) which one would match? Let's walk step by step through the rules explained above, and see what happens when Alice dials 6401. Rule 1 We look at the first digit, and all the patterns match. Rule 2 Each of the patterns have the same number of possible matches on this digit (one match -- the number six). Rule 3 We sort the patterns in ASCII sort order. Rule 4 We move on to the second digit. There are no patterns that can be eliminated based on the second digit, so we go back to rule two for this digit. Rule 2 The three patterns with a 4 in the second digit are more constrained than the X, so they get sorted to the top.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Be Serious About Account Security We can't stress enough how important it is for you to pick a strong password for all accounts on Asterisk, and to only allow access from trusted networks. Unfortunately, we've found many instances of people exposing their Asterisk to the internet at large with easily-guessable passwords, or no passwords at all. You could be at risk of toll fraud, scams, and other malicious behavior.
+Rule 3 The top three patterns get sorted in ASCII sort order, since they are tied in the number of possible matches. Rule 4 We move on to the third digit. The third pattern (the one that would call SayAlpha(C)) is eliminated, because the third digit of this pattern (the N) doesn't match the third dialed digit (the 0 ). The other patterns match, so we now go back to rule two. Rule 2 The second pattern (the one that would call SayAlpha(B)) is the most constrained, as it only has a single possibility, so it gets sorted to the top. Rule 3 There are no ties at the top of the sorting table, so we can move on to rule four. Rule 4 We move on to the fourth digit. Since all the remaining patterns match, the second pattern remains at the top of the sorting table. You might be asking yourself... "What about the fourth pattern? Isn't it more constrained?" Remember that it was less constrained in an earlier digit, so it would only match if none of the other patterns above it in the sorting table matched on this digit. Step 5 Since we have run out of digits, we know that Asterisk will match on the second pattern, as it is the one at the top of the sorting table. To verify that Asterisk actually does sort the extensions in the manner that we've described, add the following extensions to the [docs:users] context of your own dialplan.
+exten exten exten exten => => => => _64XX,1,SayAlpha(A) _640X,1,SayAlpha(B) _64NX,1,SayAlpha(C) _6XX1,1,SayAlpha(D)
-For more information on Asterisk security and how you can protect yourself, check out http://www.asterisk.org/security/webinar/.
+Reload the dialplan, and then type dialplan show 6104@users at the Asterisk CLI. Asterisk will show you what would match if you were to dial extension 6104 in the [docs:users] context.
-After adding the two sections above to your sip.conf file, go to the Asterisk command-line interface and run the sip reload command to tell Asterisk to re-read the sip.conf configuration file.
-server*CLI> sip reload Reloading SIP server*CLI>
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Reloading Configuration Files
+server*CLI> dialplan show 6401@users [ Context 'users' created by 'pbx_config' ] '_640X' => 1. SayAlpha(B) [pbx_config] '_64XX' => 1. SayAlpha(A) [pbx_config] '_6XX1' => 1. SayAlpha(D) [pbx_config] -= 3 extensions (3 priorities) in 1 context. =-
-Don't forget to reload the appropriate Asterisk configuration files after you have made changes to them.
+You can then dial extension 6104 to try it out on your own.
+Be Careful with Pattern Matching Please be aware that because of the way auto-fallthrough works, if Asterisk can't find the next priority number for the current extension or pattern match, it will also look for that same priority in a less specific pattern match. Consider the following example:
-Registering Phones to Asterisk
+6410,1,SayDigits(987)
-The next step is to configure the phones themselves to communicate with Asterisk. The way we have configured the accounts in the SIP channel driver, Asterisk will expect the phones to register to it. Registration is simply a mechanism where a phone communicates "Hey, I'm Bob's phone... here's my username and password. Oh, and if you get any calls for me, I'm at this particular IP address." Configuring your particular phone is obviously beyond the scope of this guide, but here are a list of common settings you're going to want to set in your phone, so that it can communicate with Asterisk:
-Registrar/Registration Server - The location of the server which the phone should register to. This should be set to the IP address of your Asterisk system. *SIP User Name/Account Name/Address - *The SIP username on the remote system. This should be set to demo-alice on one phone and demo-bob on the other. This username corresponds directly to the section name in square brackets in sip.conf. SIP Authentication User/Auth User - On Asterisk-based systems, this will be the same as the SIP user name above. Proxy Server/Outbound Proxy Server - This is the server with which your phone communicates to make outside calls. This should be set to the IP address of your Asterisk system.
+exten => _641X,1,SayDigits(12345)
-You can tell whether or not your phone has registered successfully to Asterisk by checking the output of the sip show peers command at the Asterisk CLI. If the Host column says
+exten => _641X,n,SayDigits(54321)
+
+]]>
+
+If you were to dial extension 6410, you'd hear "nine eight seven five four three two one". We strongly recommend you make the Hangup() application be the last priority of any extension to avoid this problem, unless you purposely want to fall through to a less specific match.
+
+Include Statements
+
+Include statements allow us to split up the functionality in our dialplan into smaller chunks, and then have Asterisk search multiple contexts for a dialed extension. Most commonly, this functionality is used to provide security boundaries between different classes of callers. It is important to remember that when calls come into the Asterisk dialplan, they get directed to a particular context by the channel driver. Asterisk then begins looking for the dialed extension in the context specified by the channel driver. By using include statements, we can include other contexts in the search for the dialed extension. Asterisk supports two different types of include statements: regular includes and time-based
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-(Unspecified), the phone has not yet registered. On the other hand, if the Host column contains an IP address and the Dyn column contains the letter D, you know that the phone has successfully registered.
-server*CLI> sip show peers Name/username Host Dyn NAT ACL Port Status demo-alice (Unspecified) D A 5060 Unmonitored demo-bob 192.168.5.105 D A 5060 Unmonitored 2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 0 offline]
+includes.
+Include Statements Basics
-In the example above, you can see that Alice's phone has not registered, but Bob's phone has registered.
-Debugging SIP Registrations
+To set the stage for our explanation of include statements, let's say that we want to organize our dialplan and create a new context called [docs:features]. We'll leave our extensions 6001 and 6002 for Alice and Bob in the [docs:users] context, and place extensions such as 6500 in the new [docs:features] context. When calls come into the users context and doesn't find a matching extension, the include statement tells Asterisk to also look in the new [docs:features] context. The syntax for an include statement is very simple. You simply write include => and then the name of the context you'd like to include from the existing context. If we reorganize our dialplan to add a [docs:features] context, it might look something like this:
+[users] include => features exten => 6001,1,Dial(SIP/demo-alice,20) same => n,VoiceMail(6001@vm-demo,u) exten => 6002,1,Dial(SIP/demo-bob,20) same => n,VoiceMail(6002@vm-demo,u) [features] exten => 6000,1,Answer(500) same => n,Playback(hello-world) same => n,Hangup() exten => 6500,1,Answer(500) same => n,VoiceMailMain(@vm-demo)
-If you're having troubles getting a phone to register to Asterisk, make sure you watch the Asterisk CLI with the verbosity level set to at least three while you reboot the phone. You'll likely see error messages indicating what the problem is, like in this example:
-NOTICE[22214]: chan_sip.c:20824 handle_request_register: Registration from '"Alice" <sip:demo-alice@192.168.5.50>' failed for '192.168.5.103' - Wrong password
+Location of Include Statements Please note that in the example above, we placed the include statement before extensions 6001 and 6002. It could have just as well come after. Asterisk will always try to find a matching extension in the current context first, and only follow the include statement to a new context if there isn't anything that matches in the current context.
-As you can see, Asterisk has detected that the password entered into the phone doesn't match the secret setting in the [demo-alice] section of sip.conf.
+Using Include Statements to Create Classes of Service
-Creating Dialplan Extensions
+Now that we've shown the basic syntax of include statements, let's put some include statements to good use. Include statements are often used to build chains of functionality or classes of service. In this example, we're going to build several different contexts, each with its own type of outbound calling. We'll then use include statements to chain these contexts together.
-The last things we need to do to enable Alice and Bob to call each other is to configure a couple of extensions in the dialplan.
-What is an Extension? When dealing with Asterisk, the term extension does not represent a physical device such as a phone. An extension is simply a set of actions in the dialplan which may or may not write a physical device. In addition to writing a phone, an extensions might be used for such things auto-attendant menus and conference bridges. In this guide we will be careful to use the words phone or device when referring to the physical phone, and extension when referencing the set of instructions in the Asterisk dialplan.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Numbering Plans The examples in this section use patterns designed for the North American Number Plan, and may not fit your individual circumstances. Feel free to use this example as a guide as you build your own dialplan.
+
+In these examples, we're going to assuming that a seven-digit number that does not begin with a zero or a one is a local (non-toll) call. Ten-digit numbers (where neither the first or fourth digits begin with zero or one) are also treated as local calls. A one, followed by ten digits (where neither the first or fourth digits begin with zero or one) is considered a long-distance (toll) call. Again, feel free to modify these examples to fit your own particular circumstances.
+
+Outbound dialing These examples assume that you have a SIP provider named provider configured in sip.conf. The examples dial out through this SIP provider using the SIP/provider/number syntax. Obviously, these examples won't work unless you setup a SIP provider for outbound calls, or replace this syntax with some other type of outbound connection. For more information on configuring a SIP provider, see [Section 420. The SIP Protocol]. For analog connectivity information, see [Section 441. Analog Telephony with DAHDI]. For more information on connectivity via digital circuits, see [Section 450. Basics of Digital Telephony]
+
+First, let's create a new context for local calls.
+_NXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; ten-digit local numbers exten => _NXXNXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; emergency services (911), and other three-digit services exten => NXX,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [users] include => users ]]>
-Let's take a quick look at the dialplan, and then add two extensions. Open extensions.conf, and take a quick look at the file. Near the top of the file, you'll see some general-purpose sections named [docs:general] and [docs:globals]. Any sections in the
+Remember that the variable ${EXTEN} will get replaced with the dialed extension. For example, if Bob dials 5551212 in the local context, Asterisk will execute the Dial application with SIP/provider/5551212 as the first parameter. (This syntax means "Dial out to the account named provider using the SIP channel driver, and dial the number 5551212.) Next, we'll build a long-distance context, and link it back to the local context with an include statement. This way, if you dial a local number and your phone's channel driver sends the call to the longdistance context, Asterisk will search the local context if it doesn't find a matching pattern in the longdistance context.
+_1NXXNXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [local] include => local]]>
+
+Last but not least, let's add an [docs:international] context. In North America, you dial 011 to signify that you're going to dial an international number.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-dialplan beneath those two sections is known as a context. The sample extensions.conf file has a number of other contexts, with names like [docs:demo] and [docs:default]. We'll cover contexts more in [Section 215. Dialplan Fundamentals], but for now you should know that each phone or outside connection in Asterisk points at a single context. If the dialed extension does not exist in the specified context, Asterisk will reject the call. Go to the bottom of your extensions.conf file, and add a new context named [docs:users]. Naming Your Dialplan Contexts There's nothing special about the name users for this context. It could have been named strawberry_milkshake, and it would have behaved exactly the same way. It is considered best practice, however, to name your contexts for the types of extensions that are contained in that context. Since this context contains extensions for the users of our PBX system, we'll call our context users. Underneath that context name, we'll create an extesion numbered 6001 which attempts to ring Alice's phone for twenty seconds, and an extension 6002 which attempts to rings Bob's phone for twenty seconds.
-6001,1,Dial(SIP/demo-alice,20) exten=>6002,1,Dial(SIP/demo-bob,20)]]>
+_011.,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [longdistance] include => longdistance]]>
-After adding that section to extensions.conf, go to the Asterisk command-line interface and tell Asterisk to reload the dialplan by typing the command dialplan reload. You can verify that Asterisk successfully read the configuration file by typing dialplan show users at the CLI.
-server*CLI> dialplan show users [ Context 'users' created by 'pbx_config' ] '6001' => 1. Dial(SIP/demo-alice,20) [pbx_config] '6002' => 1. Dial(SIP/demo-bob,20) [pbx_config] -= 2 extensions (2 priorities) in 1 context. =-
+And there we have it -- a simple chain of contexts going from most privileged (international calls) down to lease privileged (local calling). At this point, you may be asking yourself, "What's the big deal? Why did we need to break them up into contexts, if they're all going out the same outbound connection?" That's a great question! The primary reason for breaking the different classes of calls into separate contexts is so that we can enforce some security boundaries. Do you remember what we said earlier, that the channel drivers point inbound calls at a particular context? In this case, if we point a phone at the [docs:local] context, it could only make local and internal calls. On the other hand, if we were to point it at the [docs:international] context, it could make international and long-distance and local and internal calls. Essentially, we've created different classes of service by chaining contexts together with include statements, and using the channel driver configuration files to point different phones at different contexts along the chain. Many people find it instructive to look at a visual diagram at this point, so let's draw ourselves a map of the contexts we've created so far. Insert graphic showing chain of includes from international through long-distance to local and to users and features In this graphic, we've illustrated the various contexts and how they work together. We've also shown that Alice's phone is pointed at the [docs:international] context, while Bob's phone is only pointed at the [docs:local] context. Please take the next few minutes and implement a series of chained contexts into your own dialplan, similar to what we've explained above. You can then change the configuration for Alice and Bob (in sip.conf, since they're SIP phones) to point to different contexts, and see what happens when you attempt to make various types of calls from each phone.
+Installing Asterisk From Source
-Now we're ready to make a test call!
-Making a Phone Call
+One popular option for installing Asterisk is to download the source code and compile it yourself. While this isn't as easy as using package management or using an Asterisk-based Linux distribution, it does let you decide how Asterisk gets built, and which Asterisk modules are built. In this section, you'll learn how to download and compile the Asterisk source code, and get Asterisk installed.
+What to Download?
-At this point, you should be able to pick up Alice's phone and dial extension 6002 to call Bob, and dial 6001 from Bob's phone to call Alice. As you make a few test calls, be sure to watch the Asterisk command-line interface (and ensure that your verbosity is set to a value three or higher) so that you can see the messages coming from Asterisk, which should be similar to the ones below:
+On a typical system, you'll want to download three components:
+Asterisk DAHDI
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-server*CLI> -- Executing [6002@users:1] Dial("SIP/demo-alice-00000000", "SIP/demo-bob,20") in new stack -- Called demo-bob -- SIP/demo-bob-00000001 is ringing -- SIP/demo-bob-00000001 answered SIP/demo-alice-00000000 -- Native bridging SIP/demo-alice-00000000 and SIP/demo-bob-00000001 == Spawn extension (users, 6002, 1) exited non-zero on 'SIP/demo-alice-00000000'
+libpri
-As you can see, Alice called extension 6002 in the [docs:users] context, which in turn used the Dial application to call Bob's phone. Bob's phone rang, and then answered the call. Asterisk then bridged the two calls (one call from Alice to Asterisk, and the other from Asterisk to Bob), until Alice hung up the phone. At this point, you have a very basic PBX. It has two extensions which can dial each other, but that's all. Before we move on, however, let's review a few basic troubleshooting steps that will help you be more successful as you learn about Asterisk.
-Basic PBX Troubleshooting
+The libpri library allows Asterisk to communicate with ISDN connections. (We'll cover more about ISDN connections in Section 450.8, "Intro to ISDN PRI and BRI Connections".) While not always necessary, we recommend you install it on new systems. The DAHDI library allows Asterisk to communicate with analog and digital telephones and telephone lines, including connections to the Public Switched Telephone Network, or PSTN. It should also be installed on new systems, even if you don't immediately plan on using analog or digital connections to your Asterisk system. DAHDI DAHDI stands for Digium Asterisk Hardware Device Interface, and is a set of drivers and utilities for a number of analog and digital telephony cards, such as those manufactured by Digium. The DAHDI drivers are independent of Asterisk, and can be used by other applications. DAHDI was previously called Zaptel, as it evolved from the Zapata Telephony Project. The DAHDI code can be downloaded as individual pieces (dahdi-linux for the DAHDI drivers, and dahdi-tools for the DAHDI utilities. They can also be downloaded as a complete package called dahdi-linux-complete, which contains both the Linux drivers and the utilities.
+Why is DAHDI split into different pieces?
-The most important troubleshooting step is to set your verbosity level to three (or higher), and watch the command-line interface for errors or warnings as calls are placed. To ensure that your SIP phones are registered, type sip show peers at the Asterisk CLI. To see which context your SIP phones will send calls to, type sip show users. To ensure that you've created the extensions correctly in the [users] context in the dialplan, type dialplan show users. To see which extension will be executed when you dial extension 6002, type dialplan show 6002@users.
+DAHDI has been split into two pieces (the Linux drivers and the tools) as third parties have begun porting the DAHDI drivers to other operating systems, such as FreeBSD. Eventually, we may have dahdi-linux, dahdi-freebsd, and so on.
-Sound Prompt Searching based on Channel Language
+The current version of libpri, DAHDI, and Asterisk can be downloaded from http://downloads.digium.com/pub/telephony/.
+System Requirements
-Dialplan Fundamentals
+In order to compile and install Asterisk, you'll need to install a C compiler and a number of system libraries on your system.
+Compiler System Libraries
-The dialplan is essential to the operation of any successful Asterisk system. In this module, we'll help you learn the fundamental components of the Asterisk dialplan, and how to combine them to begin scripting your own dialplan. We'll also add voice mail and a dial-by-name directory features to your dialplan.
-Contexts, Extensions, and Priorities
+Compiler
+
+The compiler is a program that takes source code (the code written in the C programming language in the case of Asterisk) and turns it into a program that can be executed. While any C compiler should be able to compile the Asterisk code, we strongly recommend that you use the GCC compiler. Not only is it the most popular free C compiler on Linux and Unix systems, but it's also the compiler that the Asterisk developers are using. If the GCC compiler isn't already installed on your machine, simply use appropriate package management system on your machine to install it. You'll also want to install the C++ portion of
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The dialplan is organized into various sections, called contexts. Contexts are the basic organizational unit within the dialplan, and as such, they keep different sections of the dialplan independent from each other. We'll use contexts to enforce security boundaries between the various parts of our dialplan, as well as to provide different classes of service to groups of users. The syntax for a context is exactly the same as any other section heading in the configuration files, as explained in Section 206.2.1. Sections and Settings. Simply place the context name in square brackets. For example, here is the context we defined in the previous module:
+GCC as well, as certain Asterisk modules will use it.
+System Libraries
-Within each context, we can define one or more extensions. As explained in the previous module, an extension is simply a named set of actions. Asterisk will perform each action, in sequence, when that extension number is dialed. The syntax for an extension is:
-number,priority,application([parameter[,parameter2...]]) ]]>
+In addition to the C compiler, you'll also need a set of system libraries. These libraries are used by Asterisk and must be installed before you can compile Asterisk. On most operating systems, you'll need to install both the library and it's corresponding development package.
+Development libraries
-As an example, let's review extension 6001 from the previous module. It looks like: As an example, let's review extension 6001 from the previous module. It looks like:
-6001,1,Dial(SIP/demo-alice,20) ]]>
+For most operating systems, the development packages will have -dev or -devel on the end of the name. For example, on a Red Hat Linux system, you'd want to install both the "openssl" and "openssl-devel" packages.
-In this case, the extension number is 6001, the priority number is 1, the application is Dial(), and the two parameters to the application are SIP/demo-alice and 20. Within each extension, there must be one or more priorities. A priority is simply a sequence number. The first priority on an extension is executed first. When it finishes, the second priority is executed, and so forth.
-Priority numbers Priority numbers must begin with 1, and must increment sequentially. If Asterisk can't find the next priority number, it will terminate the call. We call this auto-fallthrough. Consider the example below:
+A list of libraries you'll need to install include:
+OpenSSL ncurses newt libxml2 Kernel headers (for building DAHDI drivers)
-6123,1,do something
+We recommend you use the package management system of your operating system to install these libraries before compiling and installing libpri, DAHDI, and Asterisk.
+Help Finding the Right Libraries
-exten=>6123,2,do something else
+If you're installing Asterisk 1.6.1.0 or later, it comes with a shell script called install_prereq.sh in the contrib/scripts sub-directory. If you run install_prereq test, it will give you the exact commands to install the necessary system libraries on your operating system. If you run install_prereq install, it will attempt to download and install the prerequisites automatically.
-exten=>6123,4,do something different
+Untarring the Source
-]]>
+When you download the source for libpri, DAHDI, and Asterisk you'll typically end up with files with a .tar.gz or .tgz file extension. These files are affectionately known as tarballs. The name comes from the tar Unix utility, which stands for tape archive. A tarball is a collection of other files combined into a single file for easy copying, and then often compressed with a utility such as GZip. To extract the source code from the tarballs, we'll use the tar command. The commands below assume that you've downloaded the tarballs for libpri, DAHDI, and Asterisk to the /usr/local/src directory on a Linux machine. (You'll probably need to be logged in as the root user to be able to write to that directory.) We're also going to assume that you'll replace the letters X, Y, and Z with the actual version numbers from the tarballs you downloaded. Also please note that the command prompt may be slightly different on your system than what we show here. Don't worry, the commands should work just the same.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In this case, Asterisk would execute priorites one and two, but would then terminate the call, because it couldn't find priority number three.
+First, we'll change to the directory where we downloaded the source code:
+[root@server ~]# cd /usr/local/src
-Priority number can also be simplied by using the letter n in place of the priority numbers greater than one. The letter n stands for next, and when Asterisk sees priority n it replaces it in memory
+Next, let's extract the source code from each tarball using the tar command. The -zxvf parameters to the tar command tell it what we want to do with the file. The z option tells the system to unzip the file before continuing, the x option tells it to extract the files from the tarball, the v option tells it to be verbose (write out the name of every file as it's being extracted, and the f option tells the tar command that we're extracting the file from a tarball file, and not from a tape.
+[root@server src]# tar -zxvf libpri-1.X.Y.tar.gz [root@server src]# tar -zxvf dahdi-linux-complete-2.X.Y+2.X.Y.tar.gz [root@server src]# tar -zxvf asterisk-1.6.X.Y.tar.gz
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+You should now notice that a new sub-directory was created for each of the tarballs, each containing the extracted files from the corresponding tarball. We can now compile and install each of the components.
+Building and Installing LibPRI
+
+First, let's compile and install libpri. Again, we'll assume that you'll replace the letters X, Y, and Z with the actual version numbers from the tarballs you downloaded.
+[root@server src]# cd libpri-1.X.Y
-with the previous priority number plus one. Note that you must still explicitly declare priority number one.
-6123,1,do something exten=>6123,n,do something else exten=>6123,n,do something different]]>
+This command changes directories to the libpri source directory.
+[root@server libpri-1.X.Y]# make
-You can also assign a label (or alias) to a particular priority number by placing the label in parentheses directly after the priority number, as shown below. Labels make it easier to jump back to a particular location within the extension at a later time.
-6123,1,do something exten=>6123,n(repeat),do something else exten=>6123,n,do something different]]>
+This command compiles the libpri source code into a system library.
+[root@server libpri-1.X.Y]# make install
-Here, we've assigned a label named repeat to the second priority.
-Applications
+This command installs the libpri library into the proper system library directory
+Building and Installing DAHDI
-Each priority in the dialplan calls an application. An application does some work on the channel, such as answering a call or playing back a sound prompt. There are a wide variety of dialplan applications available for your use. For a complete list of the dialplan applications available to your installation of Asterisk, type core show applications at the Asterisk CLI. Most applications take one or more parameters, which provide additional information to the application or change its behavior. Parameters should be separated by commas.
-Syntax for Parameters You'll often find examples of Asterisk dialplan code online and in print which use the pipe character or vertical bar character (|) between parameters, as shown in this example:
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-6123,1,application(one|two|three)]]>
+Now that we have libpri installed, let's install DAHDI. On Linux, we will use the DAHDI-linux-complete tarball, which contains both the DAHDI Linux drivers as well as the DAHDI tools. Again, we're assuming that you've untarred the tarball in the /usr/local/src directory, and that you'll replace X and Y with the appropriate version numbers.
+[root@server src]# cd dahdi-linux-complete-2.X.Y+2.X.Y [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make install [root@server dahdi-linux-complete-2.X.Y+2.X.Y]# make config
+Checking Asterisk Requirements
-This is a deprecated syntax, and will no longer work in newer versions of Asterisk. Simply replace the pipe character with a comma, like this:
-6123,1,application(one,two,three)]]>
+Now it's time to compile and install Asterisk. Let's change to the directory which contains the Asterisk source code.
+[root@server dahdi-linux-complete-2.X.Y+2.X.Y]# cd /usr/local/src/asterisk-1.6.X.Y
-Answer, Playback, and Hangup Applications
+Next, we'll run a command called ./configure, which will perform a number of checks on the operating system, and get the Asterisk code ready to compile on this particular server.
+[root@server asterisk-1.6.X.Y]# ./configure
-As its name suggests, the Answer() application answers an incoming call. The Answer() application takes a delay (in milliseconds) as its first parameter. Adding a short delay is often useful for ensuring that the remote endpoing has time to begin processing audio before you play a sound prompt. Otherwise, you may not hear the very beginning of the prompt. Knowing When to Answer a Call When you're first learning your way around the Asterisk dialplan, it may be a bit confusing
+This will run for a couple of minutes, and warn you of any missing system libraries or other dependencies. Upon completion, you should see a message that looks similar to the one shown below. (Obviously, your host CPU type may be different than the below.)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-knowing when to use the Answer() application, and when not to. If Asterisk is simply going to pass the call off to another device using the Dial() application, you probably don't want to call the answer the call first. If, on the other hand, you want Asterisk to play sound prompts or gather input from the caller, it's probably a good idea to call the Answer() application before doing anything else. The Playback() application loads a sound prompt from disk and plays it to the caller, ignoring any touch tone input from the caller. The first parameter to the dialplan application is the filename of the sound prompt you wish to play, without a file extension. If the channel has not already been answered, Playback() will answer the call before playing back the sound prompt, unless you pass noanswer as the second parameter.
-Exploring Sound Prompts
+.$$$$$$$$$$$$$$$=.. .$7$7.. .7$$7:. .$7$7.. .7$$7:. .$$:. ,$7.7 .$7. 7$$$$ .$$77 ..$$. $$$$$ .$$$7 ..7$ .?. $$$$$ .?. 7$$$. $.$. .$$$7. $$$$7 .7$$$. .$$$. .777. .$$$$$$77$$$77$$$$$7. $$$, $$$~ .7$$$$$$$$$$$$$7. .$$$. .$$7 .7$$$$$$$7: ?$$$. $$$ ?7$$$$$$$$$$I .$$$7 $$$ .7$$$$$$$$$$$$$$$$ :$$$. $$$ $$$$$$7$$$$$$$$$$$$ .$$$. $$$ $$$ 7$$$7 .$$$ .$$$. $$$$ $$$$7 .$$$. 7$$$7 7$$$$ 7$$$ $$$$$ $$$ $$$$7. $$ (TM) $$$$$$$. .7$$$$$$ $$ $$$$$$$$$$$$7$$$$$$$$$.$$$$$$ $$$$$$$$$$$$$$$$. configure: configure: configure: configure: configure: Package configured for: OS type : linux-gnu Host CPU : x86_64 build-cpu:vendor:os: x86_64 : unknown : linux-gnu : host-cpu:vendor:os: x86_64 : unknown : linux-gnu :
-Asterisk comes with a wide variety of pre-recorded sound prompts. When you install Asterisk, you can choose to install both core and extra sound packages in several different file formats. Prompts are also available in several languages. To explore the sound files on your system, simply find the sounds directory (this will be /var/lib/asterisk/sounds on most systems) and look at the filenames. You'll find useful prompts ("Please enter the extension of the person you are looking for..."), as well as as a number of off-the-wall prompts (such as "Weasels have eaten our phone system", "The office has been overrun with iguanas", and "Try to spend your time on hold not thinking about a blue-eyed polar bear") as well.
+Cached Data The ./configure command caches certain data to speed things up if it's invoked multiple times. To clear all the cached data, you can use the following command to completely clear out any cached data from the Asterisk build system.
+[root@server asterisk-1.6.X.Y]# make distclean
-Sound Prompt Formats Sound prompts come in a variety of file formats, such as .wav and .ulaw files. When asked to play a sound prompt from disk, Asterisk plays the sound prompt with the file format that can most easily be converted to the CODEC of the current call. For example, if the inbound call is using the alaw CODEC and the sound prompt is available in .gsm and .ulaw format, Asterisk will play the .ulaw file because it requires fewer CPU cycles to transcode to the alaw CODEC. You can type the command core show translation at the Asterisk CLI to see the transcoding times for various CODECs. The times reported (in Asterisk 1.6.0 and later releases) are the number of microseconds it takes Asterisk to transcode one second worth of audio. These times are calculated when Asterisk loads the codec modules, and often vary slightly from machine to machine. To perform a current calculation of translation times, you can type the command core show translation recalc 60.
+Using Menuselect to Select Asterisk Options
-How Asterisk Searches for Sound Prompts Based on Channel Language Each channel in Asterisk can be assigned a language by the channel driver. The channel's language code is split, piece by piece (separated by underscores), and used to build paths to look for sound prompts. Asterisk then uses the first file that is found. This means that if we set the language to en_GB_female_BT, for example, Asterisk would search for files in: .../sounds/en/GB/female/BT .../sounds/en/GB/female .../sounds/en/GB
+The next step in the build process is to tell Asterisk which modules[docs:1] to compile and install, as well as set various compiler options. These settings are all controlled via a menu-driven system called menuselect. To access the menuselect system, type:
+[root@server asterisk-1.6.X.Y]# make menuselect
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-.../sounds/en .../sounds This scheme makes it easy to add new sound prompts for various language variants, while falling back to a more general prompt if there is no prompt recorded in the more specific variant. The Hangup() application hangs up the current call. While not strictly necessary due to auto-fallthrough (see the note on Priority numbers above), in general we recommend you add the Hangup() application as the last priority in any extension. Now let's put Answer(), Playback(), and Hangup() together to play a sample sound file. Place this extension in your [docs:users] context:
-6000,1,Answer(500) exten=>6000,2,Playback(hello-world) exten=>6000,3,Hangup()]]>
+Terminal Window Your terminal window size must be at least eighty characters wide and twenty-one lines high, or menuselect will not work. Instead, you'll get an error message stating
+Terminal must be at least 80 x 21.
-Dial Application
+Asterisk 1.8+
+Terminal must be at least 80 x 27.
-Now that you've learned the basics of using dialplan applications, let's take a closer look at the Dial() application that we used earlier in extensions 6001 and 6002. Dial() attempts to ring an external device, and if the call is answered it bridges the two channels together and does any necessary protocol or CODEC conversion. It also handles call progress responses (busy, no-answer, ringing).
-Dial() and the Dialplan Please note that if the Dial() application successfully bridges two channels together, that the call does not progress in the dialplan. The call will only continue on to the next priority if the Dial() application is unable to bridge the calling channel to the dialed device.
+The menuselect menu should look like the screen-shot below. On the left-hand side, you have a list of categories, such as Applications, Channel Drivers, and PBX Modules. On the right-hand side, you'll see a list of modules that correspond with the select category. At the bottom of the screen you'll see two buttons. You can use the Tab key to cycle between the various sections, and press the Enter key to select or unselect a particular module. If you see [docs:] next to a module name, it signifies that the module has been selected. If you see *XXX next to a module name, it signifies that the select module cannot be built, as one of its dependencies is missing. In that case, you can look at the bottom of the screen for the line labeled Depends upon: for a description of the missing dependency. When you're first learning your way around Asterisk on a test system, you'll probably want to stick with the default settings in menuselect. If you're building a production system, however, you may not wish to build all of the various modules, and instead only build the modules that your system is using.
-The Dial() application takes four parameters:
-1. Devices A list of the device(s) you want to call. Devices are specified as technology or channel driver, a forward slash, and the device or account name. For example, SIP/demo-alice would use the SIP channel driver to call the device specified in the demo-alice section of sip.conf. Devices using the IAX2 channel driver take the form of IAX2/demo-george, and DAHDI channels take the form of DAHDI/1. When calling through a device (such as a gateway) or service provider to reach another number, the syntax is technology/device/number such as SIP/my_provider/5551212 or DAHDI/4/5551212. To dial multiple devices at once, simply concatenate the devices together whith the ampersand character (&). The first device to answer will get bridged with the caller, and the other endpoints will stop ringing. 6003,1,Dial(SIP/demo-alice&SIP/demo-bob,30)]]> 2. Timeout The number of seconds to allow the device(s) to ring before giving up and moving on to the next priority in the extension. 3. Options There are dozens of options that you can set on the outbound call, including call screening, distinctive ringing and more. Type core show application dial at the Asterisk CLI for a complete list of all available options. If you want to specify multiple options, simply concatenate them together. For example, if you want to use both the *m*and H options, you would set mH as the options parameter. 4. URL The fourth parameter is a URL that will be sent to the endpoint. Few endpoints do anything with the URL, but there are a few (softphones mostly) that do act on the URL.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Adding Voice Mail to Dialplan Extensions
+Easier Debugging of Asterisk Crashes
+
+If you're finding that Asterisk is crashing on you, there's a setting in menuselect that will help provide additional information to the Asterisk developers. Go into menuselect, select the the Compiler Flags section (you'll need to scroll down in the left-hand list), and select the DONT_OPTIMIZE setting. Then rebuild Asterisk as shown below. While the Asterisk application will be slightly larger, it will provide additional debugging symbols in the event of a crash.
+
+We should also inform people that the sound prompts are selected in menuselect as well When you are finished selecting the modules and options you'd like in menuselect, press F12 to save and exit, or highlight the Save and Exit button and press enter.
+Building and Installing Asterisk
+
+Now we can compile and install Asterisk. To compile Asterisk, simply type make at the Linux command line.
+[root@server asterisk-1.6.X.Y]# make
+
+The compiling step will take several minutes, and you'll see the various file names scroll by as they are being compiled. Once Asterisk has finished compiling, you'll see a message that looks like:
++--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, and + + can be installed by running: + + + + make install + +-------------------------------------------+ +--------- Asterisk Build Complete ---------+
+
+As the message above suggests, our next step is to install the compiled Asterisk program and modules. To do this, use the make install command.
+[root@server asterisk-1.6.X.Y]# make install
+
+When finished, Asterisk will display the following warning:
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Adding voicemail to the extensions is quite simple. The Asterisk voicemail module provides two key applications for dealing with voice mail. The first, named VoiceMail(), allows a caller to leave a voice mail message in the specified mailbox. The second, called VoiceMailMain(), allows the mailbox owner to retrieve their messages and change their greetings.
-VoiceMail Application
++---- Asterisk Installation Complete -------+ + + + YOU MUST READ THE SECURITY DOCUMENT + + + + Asterisk has successfully been installed. + + If you would like to install the sample + + configuration files (overwriting any + + existing config files), run: + + + + make samples + + + +-------------------------------------------+ +---- Asterisk Installation Complete -------+
-The VoiceMail() applications takes two parameters:
-1. Mailbox This parameter specifies the mailbox in which the voice mail message should be left. It should be a mailbox number and a voice mail context concatenated with an at-sign (@), like 6001@default. (Voice mail boxes are divided out into various voice mail context, similar to the way that extensions are broken up into dialplan contexts.) If the voice mail context is omitted, it will default to the default voice mail context. 2. Options One or more options for controlling the mailbox greetings. The most popular options include the u option to play the unavailable message, the b option to play the busy message, and the s option to skip the system-generated instructions.
+Security Precautions As the message above suggests, we very strongly recommend that you read the security documentation before continuing with your Asterisk installation. Failure to read and follow the security documentation can leave your system vulnerable to a number of security issues, including toll fraud.
-VoiceMailMain Application
+If you installed Asterisk from a tarball (as shown above), the security information is located in a PDF file named asterisk.pdfin the tex/ sub-directory of the source code. If that file doesn't exist, please install the rubber application on your system, and then type:
+[root@server asterisk-1.6.X.Y]# make pdf
-The VoiceMailMain() application allows the owner of a voice mail box to retrieve their messages, as well as set mailbox options such as greetings and their PIN number. The VoiceMailMain() application takes two parameters:
-1. Mailbox - This parameter specifies the mailbox to log into. It should be a mailbox number and a voice mail context, concatenated with an at-sign (@), like 6001@default. If the voice mail context is omitted, it will default to the default voice mail context. If the mailbox number is omitted, the system will prompt the caller for the mailbox number. 2. Options - One or more options for controlling the voicemail system. The most popular option is the s option, which skips asking for the PIN number
+Installing Sample Files
-Direct Access to Voice mail Please exercise extreme caution when using the s option! With this option set, anyone which has access to this extension can retrieve voicemail messages without entering the mailbox passcode.
+To install a set of sample configuration files for Asterisk, type:
+[root@server asterisk-1.6.X.Y]# make samples
-Configuring Voice Mail Boxes
+Any existing sample files which have been modified will be given a .old file extension. For example, if you had an existing file named extensions.conf, it would be renamed to extensions.conf.old and the sample dialplan would be installed as extensions.conf.
+Installing Initialization Scripts
-Now that we've covered the two main voice mail applications, let's look at the voicemail configuration. Voice mail options and mailboxes are configured in the voicemail.conf configuration file. This file has three major sections: The [docs:general] section Near the top of voicemail.conf, you'll find the [docs:general] section. This section of the configuration file controls the general aspects of the voicemail system, such as the maximum number of messages per mailbox, the maximum length of a voicemail message, and so forth. Feel free to look at the sample voicemail.conf file for more details about the various settings. The [docs:zonemessages] section The [docs:zonemessages] section is used to define various timezones around the world. Each mailbox can be assigned to a particular time zone, so that times and dates are announced relative to their local time. The time zones specified in this section also control the way in which times and dates are announced, such as reading the time of day in 24-hour format.
+Now that you have Asterisk compiled and installed, the last step is to install the initialization script, or initscript. This script starts Asterisk when your server starts, and can be used to stop or restart Asterisk as well. To install the initscript, use the make config command.
+[root@server asterisk-1.6.X.Y]# make config
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Voice Mail Contexts After the [docs:general] and [docs:zonemessages] sections, any other bracketed section is a voice mail context. Within each context, you can define one or more mailbox. To define a mailbox, we set a mailbox number, a PIN, the mailbox owner's name, the primary email address, a secondary email address, and a list of mailbox options (separated by the pipe character), as shown below:
-pin,full name,email address,short email address,mailbox options ]]>
-
-By way of explanation, the short email address is an email address that will receive shorter email notifications suitable for mobile devices such as cell phones and pagers. It will never receive attachments. To add voice mail capabilities to extensions 6001 and 6002, add these three lines to the bottom of voicemail.conf.
-8762,Alice Jones,alice@example.com,alice2@example.com,attach=no|tz=central|maxmsg=10 6002 => 9271,Bob Smith,bob@example.com,bob2@example.com,attach=yes|tz=eastern]]>
+As your Asterisk system runs, it will generate logfiles. It is recommended to install the logrotation script in order to compress and rotate those files, to save disk space and to make searching them or cataloguing them easier. To do this, use the make install-logrotate command.
+[root@server asterisk-1.6.X.Y]# make install-logrotate
+Validating Your Installation
-Now that we've defined the mailboxes, we can go into the Asterisk CLI and type voicemail reload to get Asterisk to reload the voicemail.conf file. We can also verify that the new mailboxes have been created by typing voicemail show users.
+Before continuing on, let's check a few things to make sure your system is in good working order. First, let's make sure the DAHDI drivers are loaded. You can use the lsmod under Linux to list all of the loaded kernel modules, and the grep command to filter the input and only show the modules that have dahdi in their name.
+[root@server asterisk-1.6.X.Y]# lsmod | grep dahdi
-server*CLI> voicemail reload Reloading voicemail configuration... server*CLI> voicemail show users Context Mbox User default general New User default 1234 Example Mailbox other 1234 Company2 User vm-demo 6001 Alice Jones vm-demo 6002 Bob Smith 5 voicemail users configured.
+If the command returns nothing, then DAHDI has not been started. Start DAHDI by running:
+[root@server asterisk-1.6.X.Y]# /etc/init.d/dadhi start
-Zone
+Different Methods for Starting Initscripts
-central eastern
+Many Linux distributions have different methods for starting initscripts. On most Red Hat based distributions (such as Red Hat Enterprise Linux, Fedora, and CentOS) you can run:
+[root@server asterisk-1.6.X.Y]# service dahdi start
-NewMsg 0 0 0 0 0
+Distributions based on Debian (such as Ubuntu) have a similar command, though it's not commonly used:
+[root@server asterisk-1.6.X.Y]# invoke-rc.d dahdi start
-Now that we have mailboxes defined, let's add a priority to extensions 6001 and 6002 which will allow callers to leave voice mail in their respective mailboxes. We'll also add an extension 6500 to allow Alice and Bob to check their voicemail messages. Please modify your [docs:users] context in extensions.conf to look like the following:
+If you have DAHDI running, the output of lsmod | grep dahdi should look something like the output below. (The exact details may be different, depending on which DAHDI modules have been built, and so forth.)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-6000,1,Answer(500) exten=>6000,2,Playback(hello-world) exten=>6000,3,Hangup() exten=>6001,1,Dial(SIP/demo-alice,20) exten=>6001,n,VoiceMail(6001@vm-demo,u) exten=>6002,1,Dial(SIP/demo-bob,20) exten=>6002,n,VoiceMail(6002@vm-demo,u) exten=>6500,1,Answer(500) exten=>6500,n,VoiceMailMain(@vm-demo)]]>
+[root@server asterisk-1.6.X.Y]# lsmod | grep dahdi dahdi_dummy 4288 0 dahdi_transcode 7928 1 wctc4xxp dahdi_voicebus 40464 2 wctdm24xxp,wcte12xp dahdi 196544 12 dahdi_dummy,wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp crc_ccitt 2096 1 dahdi
-Reload the dialplan by typing dialplan reload at the Asterisk CLI. You can then test the voice mail system by dialing from one phone to the other and waiting twenty seconds. You should then be connected to the voicemail system, where you can leave a message. You should also be able to dial extension 6500 to retrieve the voicemail message. When prompted, enter the mailbox number and PIN number of the mailbox. While in the VoiceMainMain() application, you can also record the mailbox owner's name, unavailable greeting, and busy greeting by pressing 0 at the voicemail menu. Please record at least the name greeting for both Alice and Bob before continuing on to the next section. Go into lots of detail about the voicemail interface? How to move between messages, move between folders, forward messages, etc?
-Directory Application
+Now that DAHDI is running, you can run dahdi_hardware to list any DAHDI-compatible devices in your system. You can also run the dahdi_tool utility to show the various DAHDI-compatible devices, and their current state. To check if Asterisk is running, you can use the Asterisk initscript.
+[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk status asterisk is stopped
-The next application we'll cover is named Directory(), because it presents the callers with a dial-by-name directory. It asks the caller to enter the first few digits of the person's name, and then attempts to find matching names in the specified voice mail context in voicemail.conf. If the matching mailboxes have a recorded name greeting, Asterisk will play that greeting. Otherwise, Asterisk will spell out the person's name letter by letter.
+To start Asterisk, we'll use the initscript again, this time giving it the start action:
+[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk start Starting asterisk:
-The Directory() application takes three parameters: voicemail_context This is the context within voicemail.conf in which to search for a matching directory entry. If not specified , the [docs:default] context will be searched. dialplan_context When the caller finds the directory entry they are looking for, Asterisk will dial the extension matching their mailbox in this context. options A set of options for controlling the dial-by-name directory. Common options include f for searching based on first name instead of last name and e to read the extension number as well
+When Asterisk starts, it runs as a background service (or daemon), so you typically won't see any response on the command line. We can check the status of Asterisk and see that it's running using the command below. (The process identifier, or pid, will obviously be different on your system.)
+[root@server asterisk-1.6.X.Y]# /etc/init.d/asterisk status asterisk (pid 32117) is running...
+
+And there you have it! You've compiled and installed Asterisk, DAHDI, and libpri from source code.
+Getting Started with Asterisk
+
+In this section, we'll show you how to get started with Asterisk, and how to get around on the Asterisk command-line interface (commonly abbreviated as CLI). We'll also show you how to troubleshoot common problems that you might encounter when first learning Asterisk
+Connecting to the CLI
+
+First, let's show you how to connect to the Asterisk command-line interface. As you should recall from the installation, Asterisk typically runs in the background as a service or daemon. If the Asterisk service is already running, type the command below to connect to its command-line
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-as the name.
-Directory() Options To see the complete list of options for the Directory() application, type core show application Directory at the Asterisk CLI.
+interface.
+[root@server ~]# asterisk -r
-Let's add a dial-by-name directory to our dialplan. Simply add this line to your [docs:users] context in extensions.conf:
-6501,1,Directory(vm-demo,users,ef) ]]>
+The -r parameter tells the system that you want to re-connect to the Asterisk service. If the reconnection is successful, you'll see something like this:
-Now you should be able to dial extension 6501 to test your dial-by-name directory.
-Auto-attendant and IVR Menus
+[root@server ~]# asterisk -r Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. =========================================================================Connec to Asterisk version currently running on server (pid = 11187) server*CLI>
-In this section, we'll cover the how to build voice menus, often referred to as auto-attedants and IVR menus. IVR stands for Interactive Voice Response, and is used to describe a system where a caller navigates through a system by using the touch-tone keys on their phone keypad. When the caller presses a key on their phone keypad, the phone emits two tones, known as DTMF tones. DTMF stands for Dual Tone Multi-Frequency. Asterisk recognizes the DTMF tones and responds accordingly. For more information on DTMF tones, see [Section 440.3. DTMF Dialing]. Let's dive in and learn how to build IVR menus in the Asterisk dialplan!
-Background and WaitExten Applications
+Notice the *CLI> text? That's your Asterisk command-line prompt. All of the Asterisk CLI commands take the form of module action parameters.... For example, type core show uptime to see how long Asterisk has been running.
+server*CLI> core show uptime System uptime: 1 hour, 34 minutes, 17 seconds Last reload: 1 hour, 34 minutes, 17 seconds
-The Background() application plays a sound prompt, but listens for DTMF input. Asterisk then tries to find an extension in the current dialplan context that matches the DTMF input. If it finds a matching extension, Asterisk will send the call to that extension. The Background() application takes the name of the sound prompt as the first parameter just like the Playback() application, so remember not to include the file extension. The Background() application plays a sound prompt, but listens for DTMF input. Asterisk then tries to find an extension in the current dialplan context that matches the DTMF input. If it finds a matching extension, Asterisk will send the call to that extension. The Background() application takes the name of the sound prompt as the first parameter just like the Playback() application, so remember not to include the file extension.
-Multiple Prompts If you have multiple prompts you'd like to play during the Background() application, simply concatenate them together with the ampersand (&) character, like this:
+You can use the built-in help to get more information about the various commands. Simply type core show help at the Asterisk prompt for a full list of commands, or core show help command for help on a particular command. If you'd like to exit the Asterisk console and return to your shell, just use the quit command from the CLI. Such as:
+server*CLI> quit
+Stopping and Restarting Asterisk
-6123,1,Background(prompt1&prompt2&prompt3)
+There are four common commands related to stopping the Asterisk service. They are:
+1. core stop now - This command stops the Asterisk service immediately, ending any calls in progress. 2. core stop gracefully - This command prevents new calls from starting up in Asterisk, but allows calls in progress to continue. When all the calls have finished, Asterisk stops. 3. Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-]]>
+3. core stop when convenient - This command waits until Asterisk has no calls in progress, and then it stops the service. It does not prevent new calls from entering the system.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+There are three related commands for restarting Asterisk as well.
+1. core restart now - This command restarts the Asterisk service immediately, ending any calls in progress. 2. core restart gracefully - This command prevents new calls from starting up in Asterisk, but allows calls in progress to continue. When all the calls have finished, Asterisk restarts. 3. core restart when convenient - This command waits until Asterisk has no calls in progress, and then it restarts the service. It does not prevent new calls from entering the system.
-One problems you may encounter with the Background() application is that you may want Asterisk to wait a few more seconds after playing the sound prompt. In order to do this, you can call the WaitExten application. You'll usually see the WaitExten application called immediately after the Background() application. The first parameter to the WaitExten application is the number of seconds to wait for the caller to enter an extension. If you don't supply the first parameter, Asterisk will use the built-in response timeout.
-Goto Application and Priority Labels
+There is also a command if you change your mind.
+core abort shutdown - This command aborts a shutdown or restart which was previously initiated with the gracefully or when convenient options.
-Before we create a simple auto-attendant menu, let's cover a couple of other useful dialplan applications. The Goto() application allows us to jump from one position in the dialplan to another. The parameters to the Goto() application are slightly more complicated than with the other applications we've looked at so far, but don't let that scare you off. The Goto() application can be called with either one, two, or three parameters. If you call the Goto() application with a single parameter, Asterisk will jump to the specified priority (or its label) within the current extension. If you specify two parameters, Asterisk will read the first as an extension within the current context to jump to, and the second parameter as the priority (or label) within that extension. If you pass three parameters to the application, Asterisk will assume they are the context, extension, and priority (respectively) to jump to.
-SayDigits, SayNumber, SayAlpha, and SayPhonetic Applications
+Changing the Verbose and Debug Levels
-While not exactly related to auto-attendant menus, we'll introduce some applications to read back various pieces of information back to the caller. The SayDigits() and SayNumber() applications read the specified number back to caller. To use the SayDigits() and SayNumber() application simply pass it the number you'd like it to say as the first parameter. The SayDigits() application reads the specified number one digit at a time. For example, if you called SayDigits(123), Asterisk would read back "one two three". On the other hand, the SayNumber() application reads back the number as if it were a whole number. For example, if you called SayNumber(123) Asterisk would read back "one hundred twenty three". The SayAlpha() and SayPhonetic() applications are used to spell an alphanumeric string back to the caller. The SayAlpha() reads the specified string one letter at a time. For example, SayAlpha(hello) would read spell the word "hello" one letter at a time. The SayPhonetic() spells back a string one letter at a time, using the international phonetic alphabet. For example, SayPhonetic(hello) would read back "Hotel Echo Lima Lima Oscar". We'll use these four applications to read back various data to the caller througout this guide. In the meantime, please feel free to add some sample extensions to your dialplan to try out these applications. Here are some examples:
-6592,1,SayDigits(123) exten=>6593,1,SayNumber(123) exten=>6594,1,SayAlpha(hello) exten=>6595,1,SayPhonetic(hello)]]>
+Asterisk has two different classes of messages that appear in the command-line interface. The first class is called verbose messages. Verbose messages give information about the calls on the system, as well as notices, warnings, and errors. Verbose messages are intended for Asterisk administrators to be able to better manage their systems. Asterisk allows you to control the verbosity level of the command-line interface. At a verbosity level of zero, you'll receive minimal information about calls on your system. As you increase the verbosity level, you'll see more and more information about the calls. For example, if you set the verbosity level to three or higher, you'll see each step a call takes as it makes its way through the dialplan. There are very few messages that only appear at verbosity levels higher than three. To change the verbosity level, use the CLI command core set verbose, as shown below:
+server*CLI> core set verbose 3 Verbosity was 0 and is now 3
-Creating a Simple IVR Menu
+You can also increase (but not decrease) the verbosity level when you connect to the Asterisk CLI from the Linux prompt, by using one or more -v parameters to the asterisk application. For example, this would connect to the Asterisk CLI and set the verbosity to three (if it wasn't already three or higher), because we added three -v parameters:
+[root@server ~]# asterisk -vvvr
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+The second class of system messages is known as debug messages. These messages are intended for Asterisk developers, to give information about what's happening in the Asterisk program itself. They're often used by developers when trying to track down problems in the code, or to understand why Asterisk is behaving in a certain manner. To change the debugging level, use the CLI command core set debug, as shown below:
-Let's go ahead and apply what we've learned about the various dialplan applications by building a very simple auto-attendant menu. It is common practice to create an auto-attendant or IVR menu in a new context, so that it remains independant of the other extensions in the dialplan. Please add the following to your dialplan (the extensions.conf file) to create a new demo-menu context. In this new context, we'll create a simple menu that prompts you to enter one or two, and then it will read back what you're entered.
-Sample Sound Prompts Please note that the example below (and many of the other examples in this guide) use sound prompts that are part of the extra sounds packages. If you didn't install the extra sounds earlier, now might be a good time to do that.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-s,1,Answer(500) exten=>s,n(loop),Background(press-1&or&press-2) exten=>s,n,WaitExten() exten=>1,1,Playback(you-entered) exten=>1,n,SayNumber(1) exten=>1,n,Goto(s,loop) exten=>2,1,Playback(you-entered) exten=>2,n,SayNumber(2) exten=>2,n,Goto(s,loop)]]>
+server*CLI> core set debug 4 Core debug was 0 and is now 4
-Before we can use the demo menu above, we need to add an extension to the [docs:users] context to redirect the caller to our menu. Add this line to the [docs:users] context in your dialplan:
-6598,1,Goto(demo-menu,s,1) ]]>
+You can also increase (but not decrease) the debugging level when you connect to the Asterisk CLI from the Linux prompt. Simply add one or more -d parameters to the asterisk application.
+[root@server ~]# asterisk \-ddddr
-Reload your dialplan, and then try dialing extension 6598 to test your auto-attendant menu.
-Handling Special Extensions
+Verbose and Debug Levels
-We have the basics of an auto-attendant created, but now let's make it a bit more robust. We need to be able to handle special situations, such as when the caller enters an invalid extension, or doesn't enter an extension at all. Asterisk has a set of special extensions for dealing with situations like there. They all are named with a single letter, so we recommend you don't create any other extensions named with a single letter. The most common special extensions include: i: the invalid entry extension If Asterisk can't find an extension in the current context that matches the digits dialed during the Background() or WaitExten() applications, it will send the call to the i extension. You can then handle the call however you see fit. t: the reponse timeout extension When the caller waits too long before entering a response to the Background() or WaitExten() applications, and there are no more priorities in the current extension, the call is sent to the t extension. s: the start extension
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Please note that the verbose and debug levels are global settings, and apply to all of Asterisk, not just your command-line interface. We recommend that you set your verbosity level to three while learning Asterisk, so that you can get a feel for what is happening as calls are processed. On a busy production system, however, you'll want to set the verbosity level lower. We also recommend that you use debug messages sparingly, as they tend to be quite verbose and can affect call volume on busy systems.
-When an analog call comes into Asterisk, the call is sent to the s extension. The s extension is also used in macros. Please note that the s extension is not a catch-all extension. It's simply the location that analog calls and macros begin. In our example above, it simply makes a convenient extension to use that can't be easily dialed from the Background() and WaitExten() applications. h: the hangup extension When a call is hung up, Asterisk executes the h extension in the current context. This is typically used for some sort of clean-up after a call has been completed. o: the operator extension If a caller presses the zero key on their phone keypad while recording a voice mail message, and the o extension exists, the caller will be redirected to the o extension. This is typically used so that the caller can press zero to reach an operator. a: the assistant extension This extension is similar to the o extension, only it gets triggered when the caller presses the asterisk (*) key while recording a voice mail message. This is typically used to reach an assistant.
+Simple CLI Tricks
-Let's add a few more lines to our [docs:demo-menu] context, to handle invalid entries and timeouts. Modify your [docs:demo-menu] context so that it matches the one below:
-s,1,Answer(500) exten=>s,n(loop),Background(press-1&or&press-2) exten=>s,n,WaitExten() exten=>1,1,Playback(you-entered) exten=>1,n,SayNumber(1) exten=>1,n,Goto(s,loop) exten=>2,1,Playback(you-entered) exten=>2,n,SayNumber(2) exten=>2,n,Goto(s,loop) exten=>i,1,Playback(option-is-invalid) exten=>i,n,Goto(s,loop) exten=>t,1,Playback(are-you-still-there) exten=>t,n,Goto(s,loop)]]>
+There are a couple of tricks that will help you on the Asterisk command-line interface. The most popular is tab completion. If you type the beginning of a command and press the Tab key, Asterisk will attempt to complete the name of the command for you, or show you the possible commands that start with the letters you have typed. For example, type co and then press the Tab key on your keyboard.
+server*CLI> co[Tab] config core server*CLI> co
-Now dial your auto-attendant menu again (by dialing extension 6598), and try entering an invalid option (such as 3) at the auto-attendant menu. If you watch the Asterisk command-line interface while you dial and your verbosity level is three or higher, you should see something similar to the following:
+Now press the r key, and press tab again. This time Asterisk completes the word for you, as core is the only command that begins with cor. This trick also works with sub-commands. For example, type core show and press tab. (You may have to press tab twice, if you didn't put a space after the word show.) Asterisk will show you all the sub-commands that start with core show.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
--- Executing [6598@users:1] Goto("SIP/demo-alice-00000008", "demo-menu,s,1") in new stack -- Goto (demo-menu,s,1) -- Executing [s@demo-menu:1] Answer("SIP/demo-alice-00000008", "500") in new stack -- Executing [s@demo-menu:2] BackGround("SIP/demo-alice-00000008", "press-1&or&press-2") in new stack -- <SIP/demo-alice-00000008> Playing 'press-1.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'or.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'press-2.gsm' (language 'en') -- Invalid extension '3' in context 'demo-menu' on SIP/demo-alice-00000008 -- Executing [i@demo-menu:1] Playback("SIP/demo-alice-00000008", "option-is-invalid") in new stack -- <SIP/demo-alice-00000008> Playing 'option-is-invalid.gsm' (language 'en') -- Executing [i@demo-menu:2] Goto("SIP/demo-alice-00000008", "s,loop") in new stack -- Goto (demo-menu,s,2) -- Executing [s@demo-menu:2] BackGround("SIP/demo-alice-00000008", "press-1&or&press-2") in new stack -- <SIP/demo-alice-00000008> Playing 'press-1.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'or.gsm' (language 'en') -- <SIP/demo-alice-00000008> Playing 'press-2.gsm' (language 'en')
+server*CLI> core show [Tab] application applications channels channeltype codecs config functions help image license switches sysinfo translation uptime server*CLI> core show
-If you don't enter anything at the auto-attendant menu and instead wait approximately ten seconds, you should hear (and see) Asterisk go to the t extension as well.
-Record Application
+calls channeltypes file hint profile taskprocessors version
-For creating your own auto-attendant or IVR menus, you're probably going to want to record your own custom prompts. An easy way to do this is with the Record() application. The Record() application plays a beep, and then begins recording audio until you press the hash key (#) on your keypad. It then saves the audio to the filename specified as the first parameter to the application and continues on to the next priority in the extension. If you hang up the call before pressing the hash key, the audio will not be recorded. For example, the following extension records a sound prompt called custom-menu in the gsm format in the en/ sub-directory, and then plays it back to you.
-6597,1,Answer(500) exten => 6597,n,Record(en/custom-menu.gsm) exten => 6597,n,Wait(1) exten => 6597,n,Playback(custom-menu) exten => 6597,n,Hangup()]]>
+channel codec function hints settings threads warranty
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Another trick you can use on the CLI is to cycle through your previous commands. Asterisk stores a history of the commands you type and you can press the up arrow key to cycle through the history. If you type an exclamation mark at the Asterisk CLI, you will get a Linux shell. When you exit the Linux shell (by typing exit or pressing Ctrl+D), you return to the Asterisk CLI. You can also type an exclamation mark and a Linux command, and the output of that command will be shown to you, and then you'll be returned to the Asterisk CLI.
+server*CLI> !whoami root server*CLI>
-Recording Formats When specifiying a file extension when using the Record() application, you must choose a file extension which represents one of the supported file formats in Asterisk. For the complete list of file formats supported in your Asterisk installation, type core show file formats at the Asterisk command-line interface.
+As you can see, there's a wealth of information available from the Asterisk command-line interface, and we've only scratched the surface. In later sections, we'll go into more details about how to use the command-line interface for other purposes.
+Troubleshooting
-You've now learned the basics of how to create a simple auto-attendant menu. Now let's build a more practical menu for callers to be able to reach Alice or Bob or the dial-by-name directory. Procedure 216.1. Building a Practical Auto-Attendant Menu
-1. Add an extension 6599 to the [docs:users] context which sends the calls to a new context we'll build called [docs:day-menu]. Your extension should look something like: 6599,1,Goto(day-menu,s,1)]]> 2. Add a new context called [docs:day-menu], with the following contents: s,1,Answer(500) exten=>s,n(playback),Background(custom-menu) exten=>s,n,WaitExten() exten=>1,1,Goto(users,6001,1) exten=>2,1,Goto(users,6002,1) exten=>9,1,Directory(vm-demo,users,fe) exten=>*,1,VoiceMailMain(@vm-demo) exten=>i,1,Playback(option-is-invalid) exten=>i,n,Goto(s,loop) exten=>t,1,Playback(are-you-still-there) exten=>t,n,Goto(s,loop)]]> 3. Dial extension 6597 to record your auto-attendant sound prompt. Your sound prompt should say something like "Thank you for calling! Press one for Alice, press two for Bob, or press 9 for a company directory". Press the hash key (#) on your keypad when you're finished recording, and Asterisk will play it back to you. If you don't like it, simply dial extension 6597 again to re-record it. 4. Dial extension 6599 to test your auto-attendant menu.
+If you're able to get the command-line examples above working, feel free to skip this section. Otherwise, let's look at troubleshooting connections to the Asterisk CLI. The most common problem that people encounter when learning the Asterisk command-line interface is that sometimes they're not able to connect to the Asterisk service running in the background. For example, let's say that Fred starts the Asterisk service, but then isn't able to connect to it with the CLI:
-In just a few lines of code, you've created your own auto-attendant menu. Feel free to experiment with your auto-attendant menu before moving on to the next section.
-Dialplan Architecture
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In this section, we'll begin adding structure to our dialplan. We'll begin by talking about variables and how to use them, as well as how to manipulate them. Then we'll cover more advanced topics, such as pattern matching and using include statements to build classes of functionality.
-Variables
+[root@server ~]# service asterisk start Starting asterisk: [ OK ] [root@server ~]# asterisk -r Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> =========================================================================Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
+
+What does this mean? It most likely means that Asterisk did not remain running between the time that the service was started and the time Fred tried to connect to the CLI (even if it was only a matter of a few seconds.) This could be caused by a variety of things, but the most common is a broken configuration file. To diagnose Asterisk start-up problems, we'll start Asterisk in a special mode, known as console mode. In this mode, Asterisk does not run as a background service or daemon, but instead runs directly in the console. To start Asterisk in console mode, pass the -c parameter to the asterisk application. In this case, we also want to turn up the verbosity, so we can see any error messages that might indicate why Asterisk is unable to start.
+[root@server ~]# asterisk -vvvc Asterisk version, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found == Parsing '/etc/asterisk/extconfig.conf': == Found == Parsing '/etc/asterisk/logger.conf': == Found == Parsing '/etc/asterisk/asterisk.conf': == Found Asterisk Dynamic Loader Starting: == Parsing '/etc/asterisk/modules.conf': == Found ...
-Variables are used in most programming and scripting languages. In Asterisk, we can use variables to simplify our dialplan and begin to add logic to the system. A variable is simply a container that has both a name and a value. For example, we can have a variable named COUNT which has a value of three. Later on, we'll show you how to route calls based on the value of a variable. Before we do that, however, let's learn a bit more about variables. The
+Carefully look for any errors or warnings that are printed to the CLI, and you should have enough information to solve whatever problem is keeping Asterisk from starting up.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-names of variables are case-sensitive, so COUNT is different than Count and count. Any channel variables created by Asterisk will have names that are completely upper-case, but for your own channels you can name them however you would like. In Asterisk, we have two different types of variables: channel variables and global variables.
-Channel Variables Basics
+Running Asterisk in Console Mode
-Channel variables are variables that are set for the current channel (one leg of a bridged phone call). They exist for the lifetime of the channel, and then go away when that channel is hung up. Channel variables on one particular channel are completely independent of channel variables on any other channels; in other words, two channels could each have variables called Channel variables are variables that are set for the current channel (one leg of a bridged phone call). They exist for the lifetime of the channel, and then go away when that channel is hung up. Channel variables on one particular channel are completely independent of channel variables on any other channels; in other words, two channels could each have variables called COUNT with different values. To assign a value to a channel variable, we use the Set() application. Here's an example of setting a variable called COUNT to a value of 3. with different values. To assign a value to a channel variable, we use the Set() application. Here's an example of setting a variable called COUNT to a value of 3.
-6123,1,Set(COUNT=3) ]]>
+We don't recommend you use Asterisk in console mode on a production system, but simply use it for debugging, especially when debugging start-up problems. On production systems, run Asterisk as a background service.
-To retrieve the value of a variable, we use a special syntax. We put a dollar sign and curly braces around the variable name, like ${COUNT} When Asterisk sees the dollar sign and curly braces around a variable name, it substitutes in the value of the variable. Let's look at an example with the SayNumber() application.
-6123,1,Set(COUNT=3) exten=>6123,n,SayNumber(${COUNT}) ]]>
+Asterisk Architecture
-In the second line of this example, Asterisk replaces the ${COUNT} text with the value of the COUNT variable, so that it ends up calling SayNumber(3).
-Global Variables Basics
+From an architectural standpoint, Asterisk is made up of many different modules. This modularity gives you an almost unlimited amount of flexibility in the design of an Asterisk-based system. As an Asterisk administrator, you have the choice on which modules to load. Each module that you loads provides different capabilities to the system. For example, one module might allow your Asterisk system to communicate with analog phone lines, while another might add call reporting capabilities. In this section, we'll discuss the various types of modules and the capabilities they provide.
+Asterisk Architecture, The Big Picture
-Global variables are variables that don't live on one particular channel -- they pertain to all calls on the system. They have global scope. There are two ways to set a global variable. The first is to declare the variable in the [docs:globals] section of extensions.conf, like this:
+Before we dive too far into the various types of modules, let's first take a step back and look at the overall architecture of Asterisk.
-You can also set global variables from dialplan logic using the GLOBAL() dialplan function along with the Set() application. Simply use the syntax:
+Asterisk Architecture We need to add CEL and Bridge modules to this picture, and take CLI and Manager out for now The heart of any Asterisk system is the core. The PBX core is the essential component that takes care of bridging calls. The core also takes care of other items like reading the configuration files and loading the other modules. We'll talk more about the core below, but for now just remember that all the other modules connect to it.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-6124,1,Set(GLOBAL(MYGLOBALVAR)=somevalue) ]]>
+From a logistical standpoint, these modules are typically files with a .so file extension, which live in the Asterisk modules directory (which is typically /usr/lib/asterisk/modules). When Asterisk starts up, it loads these files and adds their functionality to the system.
+A Plethora of Modules
-To retrieve the value of a global channel variable, use the same syntax as you would if you were retrieving the value of a channel variable.
-Manipulating Variables Basics
+Take just a minute and go look at the Asterisk modules directory on your system. You should find a wide variety of modules. A typical Asterisk system has over one hundred fifty different modules!
-It's often useful to do string manipulation on a variable. Let's say, for example, that we have a variable named NUMBER which represents a number we'd like to call, and we want to strip off the first digit before dialing the number. Asterisk provides a special syntax for doing just that, which looks like ${variable[:skip[docs::length]}. The optional skip field tells Asterisk how many digits to strip off the front of the value. For example, if NUMBER were set to a value of 98765, then ${NUMBER:2} would tell Asterisk to remove the first two digits and return 765. If the skip field is negative, Asterisk will instead return the specified number of digits from the end of the number. As an example, if NUMBER were set to a value of 98765, then ${NUMBER:-2} would tell Asterisk to return the last two digits of the variable, or 65. If the optional length field is set, Asterisk will return at most the specified number of digits. As an example, if NUMBER were set to a value of 98765, then ${NUMBER:0:3} would tell Asterisk not to skip any characters in the beginning, but to then return only the three characters from that point, or 987. By that same token, ${NUMBER:1:3} would return 876.
-Variable Inheritance Basics
+The core also contains the dialplan, which is the logic of any Asterisk system. The dialplan contains a list of instructions that Asterisk should follow to know how to handle incoming and outgoing calls on the system. Asterisk modules which are part of the core have a file name that look like pbx_xxxxx.so.
+Types of Asterisk Modules
-When building your Asterisk dialplan, it may be useful to have one channel inherit variables from another channel. For example, imagine that Alice's call has a channel variable containing an account code, and you'd like to pass that variable on to Bob's channel when Alice's call gets bridged to Bob. We call this variable inheritance. There are two levels of variable inheritance in Asterisk: single inheritance and multiple inheritance.
-Multiple Inheritance
+There are many different types of modules, many of which are shown in the diagram above.
+Channel Drivers
-Multiple inheritance means that a channel variable will be inherited by created (spawned) channels, and it will continue to be inherited by any other channels created by the spawned channels. To set multiple inheritance on a channel, preface the variable name with two underscores when giving it a value with the Set() application, as shown below.
-6123,1,Set(__ACCOUNT=5551212) ]]>
-Single Inheritance
+At the top of the diagram, we show channel drivers. Channel drivers communicate with devices outside of Asterisk, and translate that particular signaling or protocol to the core.
+Dialplan Applications
-Single inheritance means that a channel variable will be inherited by created (spawned) channels, but not propogate from there to any other swawned channels. To follow our example above, if Alice sets a channel variable with single inheritance and calls Bob, Bob's channel will inherit that channel variable, but the channel variable won't get inherited by any channels that
+Applications provide call functionality to the system. An application might answer a call, play a sound prompt, hang up a call, and so forth.
+Dialplan Functions
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Functions are used to retrieve or set various settings on a call. A function might be used to set the Caller ID on an outbound call, for example.
+Resources
-might get spawned by Bob's channel (if the call gets transferred, for example). To set single inheritance on a channel, preface the variable name with an underscore when giving it a value with the Set() application, as shown below.
-6123,1,Set(_ACCOUNT=5551212) ]]>
+As the name suggests, resources provide resources to Asterisk. Common examples of resources include music on hold and call parking.
+CODECs
-Using the CONTEXT, EXTEN, PRIORITY, UNIQUEID, and CHANNEL Variables
+A CODEC (which is an acronym for COder/DECoder) is a module for encoding or decoding audio or video. Typically codecs are used to encode media so that it takes less bandwidth.
+File Format Drivers
-Now that you've learned a bit about variables, let's look at a few of the variables that Asterisk automatically creates. Asterisk creates channel variables named CONTEXT, EXTEN, and PRIORITY which contain the current context, extension, and priority. We'll use them in pattern matching (below), as well as when we talk about macros in [Section 308.10. Macros]. Until then, let's show a trivial example of using ${EXTEN} to read back the current extension number.
-exten=>6123,1,SayNumber(${EXTEN})
+File format drivers are used to save media to disk in a particular file format, and to convert those files back to media streams on the network.
-If you were to add this extension to the [docs:users] context of your dialplan and reload the dialplan, you could call extension 6123 and hear Asterisk read back the extension number to you. Another channel variable that Asterisk automatically creates is the UNIQUEID variable. Each channel within Asterisk receives a unique identifier, and that identifier is stored in the UNIQUEID variable. The UNIQUEID is in the form of 1267568856.11, where 1267568856 is the Unix epoch, and 11 shows that this is the eleventh call on the Asterisk system since it was last restarted. Last but not least, we should mention the CHANNEL variable. In addition to a unique identifier, each channel is also given a channel name and that channel name is set in the CHANNEL variable. A SIP call, for example, might have a channel name that looks like SIP/george-0000003b, for example.
-The Verbose and NoOp Applications
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Asterisk has a convenient dialplan applications for printing information to the command-line interface, called Verbose(). The Verbose() application takes two parameters: the first parameter is the minimum verbosity level at which to print the message, and the second parameter is the message to print. This extension would print the current channel identifier and unique identifier for the current call, if the verbosity level is two or higher.
-exten=>6123,1,Verbose(2,The channel name is ${CHANNEL}) exten=>6123,n,Verbose(2,The unique id is ${UNIQUEID})
+Call Detail Record (CDR) Drivers
-The NoOp() application stands for "No Operation". In other words, it does nothing. Because of the way Asterisk prints everything to the console if your verbosity level is three or higher,
+CDR drivers write call logs to a disk or to a database.
+Call Event Log (CEL) Drivers
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Call event logs are similar to call detail records, but record more detail about what happened inside of Asterisk during a particular call.
+Bridge Drivers
-however, the NoOp() application is often used to print debugging information to the console like the Verbose() does. While you'll probably come across examples of the NoOp() application in other examples, we recommend you use the Verbose() application instead.
-The Read Application
+Bridge drivers are used by the bridging architecture in Asterisk, and provide various methods of bridging call media between participants in a call. Now let's go into more detail on each of the module types.
+Channel Driver Modules
-The Read() application allows you to play a sound prompt to the caller and retrieve DTMF input from the caller, and save that input in a variable. The first parameter to the Read() application is the name of the variable to create, and the second is the sound prompt or prompts to play. (If you want multiple prompts, simply concatenate them together with ampersands, just like you would with the Background() application.) There are some additional parameters that you can pass to the Read() application to control the number of digits, timeouts, and so forth. You can get a complete list by running the core show application read command at the Asterisk CLI. If no timeout is specified, Read() will finish when the caller presses the hash key (#) on their keypad.
-exten=>6123,1,Read(Digits,enter-ext-of-person) exten=>6123,n,Playback(you-entered) exten=>6123,n,SayNumber(${Digits})
+All calls from the outside come through a channel driver before reaching the core, and all outbound calls go through a channel driver on their way to the external device. The SIP channel driver, for example, communicates with external devices using the SIP protocol. It translates the SIP signaling into the core. This means that the core of Asterisk is signaling agnostic. Therefore, Asterisk isn't just a SIP PBX, it's a multi-protocol PBX. For more information on the various channel drivers, see [Section 400. Channel Drivers and External Connectivity]. All channel drivers have a file name that look like chan_xxxxx.so, such as chan_sip.so or chan_dahdi.so.
+Dialplan Application Modules
-In this example, the Read() application plays a sound prompt which says "Please enter the extension of the person you are looking for", and saves the captured digits in a variable called Digits. It then plays a sound prompt which says "You entered" and then reads back the value of the Digits variable.
-Pattern Matching
+The application modules provide call functionality to the system. These applications are then scripted sequentially in the dialplan. For example, a call might come into Asterisk dialplan, which might use one application to answer the call, another to play back a sound prompt from disk, and a third application to allow the caller to leave voice mail in a particular mailbox. For more information on dialplan applications, see Dialplan Fundamentals. All application modules have file names that looks like app_xxxxx.so, such as app_voicemail.so.
+Dialplan Function Modules
-The next concept we'll cover is called pattern matching. Pattern matching allows us to create extension patterns in our dialplan that match more than one possible dialed number. Pattern matching saves us from having to create an extension in the dialplan for every possible number that might be dialed. When Alice dials a number on her phone, Asterisk first looks for an extension (in the context specified by the channel driver configuration) that matches exactly what Alice dialed. If there's no exact match, Asterisk then looks for a pattern match that matches. After we show the syntax and some basic examples of pattern matching, we'll explain how Asterisk finds the best match if there are two or more patterns which match the dialed number. Pattern matches always begin with an underscore. This is how Asterisk recognizes that the extension is a pattern and not just an extension with a funny name. Within the pattern, we use various letter and characters to represent sets or ranges of numbers. Here are the most common letters: X The letter X represents a single digit from 0 to 9. Z
+Dialplan functions are somewhat similar to dialplan applications, but instead of doing work on a particular channel or call, they simply retrieve or set a particular setting on a channel, or perform text manipulation. For example, a dialplan function might retrieve the Caller ID information from an incoming call, filter some text, or set a timeout for caller input. For more information on dialplan functions, see [PBX Features].
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The letter Z represents any digit from 1 to 9. N The letter N represents a single digit from 2 to 9. Now let's look at a sample pattern. If you wanted to match all four-digit numbers that had the first two digits as six and four, you would create an extension that looks like:
-exten=>_64XX,1,SayDigits(${EXTEN})
+All dialplan application modules have file names that looks like func_xxxxx.so, such as func_callerid.so.
+Resource Modules
-In this example, each X represents a single digit, with any value from zero to nine. We're essentially saying "The first digit must be a six, the second digit must be a four, the third digit can be anything from zero to nine, and the fourth digit can be anything from zero to nine". If we want to be more specific about a range of numbers, we can put those numbers or number ranges in square brackets. For example, what if we wanted the second digit to be either a three or a four? One way would be to create two patterns (_64XX and _63XX), but a more compact method would be to do _6[docs:34]XX. This specifies that the first digit must be a six, the second digit can be either a three or a four, and that the last two digits can be anything from zero to nine. You can also use ranges within square brackets. For example, [docs:1-468] would match a single digit from one through four or six or eight. It does not match any number from one to four hundred sixty-eight! Within Asterisk patterns, we can also use a couple of other characters to represent ranges of numbers. The period character (.) within a pattern matches on one or more remaining digits in the pattern. It typically appears at the end of a pattern match, especially when you want to match extensions of an indeterminate length. As an example, the pattern _9876. would match any number that began with 9876 and had at least one more character or digit. The exclamation mark (!) character is similar to the period and also matches one more more remaining characters, but is used in overlap dialing. For example, _9876! would match any number that began with 9876, and would respond that the number was complete as soon as there was an unambiguous match.
-Be Careful With Wildcards in Pattern Matches Please be extremely cautious when using the period and exclamation mark characters in your pattern matches. They match more than just digits, they also match on characters as well, and if you're not careful to filter the input from your callers, a malicious caller might try to use these wildcards to bypass security boundaries on your system.
+Resources provide functionality to Asterisk that may be called upon at any time during a call, even while another application is running on the channel. Resources are typically used of asynchronous events such as playing hold music when a call gets placed on hold, or performing call parking. Resource modules have file names that looks like res_xxxxx.so, such as res_musiconhold.so.
+Codec Modules
-For a more complete explanation of this topic and how you can protect yourself, please refer to the README-SERIOUSLY.bestpractices.txt file in the Asterisk source code.
+CODEC modules have file names that look like codec_xxxxx.so, such as codec_alaw.so and codec_ulaw.so. CODECs represent mathematical algorithms for encoding (compressing) and decoding (decompression) media streams. Asterisk uses CODEC modules to both send and recieve media (audio and video). Asterisk also uses CODEC modules to convert (or transcode) media streams between different formats. CODEC modules have file names that look like codec_xxxxx.so, such as codec_alaw.so and codec_ulaw.so. Asterisk is provided with CODEC modules for the following media types:
+ADPCM, 32kbit/s G.711 alaw, 64kbit/s G.711 ulaw, 64kbit/s G.722, 64kbit/s G.726, 32kbit/s GSM, 13kbit/s LPC-10, 2.4kbit/s
-Now let's show what happens when there is more than one pattern that matches the dialed
+If the Speex (www.speex.org) development libraries are detected on your system when Asterisk is built, a CODEC module for Speex will also be installed. If the iLBC (www.ilbcfreeware.org) development libraries are detected on your system when Asterisk is built, a CODEC module for iLBC will also be installed. Support for the patent-encumbered G.729A or G.723.1 CODECs is provided by Digium on a commercial basis through both software and hardware products. For more information about purchasing licenses or hardware to use the G.729A or G.723.1 CODECs with Asterisk, please see Digium's website. Support for Polycom's patent-encumbered but free G.722.1 Siren7 and G.722.1C Siren14 CODECs can be enabled in Asterisk by downloading the binary CODEC modules from Digium's website. For more detailed information on CODECs, see [CODECs].
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-number. How does Asterisk know which pattern to choose as the best match? Asterisk uses a simple set of rules to determine the best match. They are:
-1. Examine the first digit eliminate any patterns which don't match the first digit of the dialed number 2. Sort the remaining patterns based on the most constrained match for the current digit. By most constrained, we mean the pattern that has the fewest possible matches for this digit. As an example, the N character has 8 possible matches (two through nine), while an X has ten possible matches. 3. In the case of a match, sort the patterns in ASCII sort order. For example, _[docs:234]X and _[docs:345]X have three possible matches in the first digit, but 234 comes before 345 in ASCII sort order. 4. Move on to the next digit (moving digit by digit from left to right), and eliminate any patterns which don't match the current digit of the dialed number. Then continue back at step number two. 5. After you've examined all the digits, return the match that has been sorted to the top of the list.
-
-Let's look at an example to better understand how this works. Let's assume Alice dials extension 6401, and she has the following patterns in her dialplan:
-exten=>_64XX,1,SayAlpha(A) exten=>_640X,1,SayAlpha(B) exten=>_64NX,1,SayAlpha(C) exten=>_6XX1,1,SayAlpha(D)
+File Format Drivers
-Can you tell (without reading ahead) which one would match? Let's walk step by step through the rules explained above, and see what happens when Alice dials 6401. Rule 1 We look at the first digit, and all the patterns match. Rule 2 Each of the patterns have the same number of possible matches on this digit (one match -- the number six). Rule 3 We sort the patterns in ASCII sort order. Rule 4 We move on to the second digit. There are no patterns that can be eliminated based on the second digit, so we go back to rule two for this digit. Rule 2 The three patterns with a 4 in the second digit are more constrained than the X, so they get sorted to the top. Rule 3
+Add a list of the file formats that Asterisk supports, then point them at the module in section 400 that goes into more detail? Asterisk uses file format modules to take media (such as audio and video) from the network and save them on disk, or retrieve said files from disk and convert them back to a media stream. While often related to CODECs, there may be more than one available on-disk format for a particular CODEC. File format modules have file names that look like format_xxxxx.so, such as format_wav.so and format_jpeg.so. Add a list of the file formats that Asterisk supports, then point them at the module in section 400 that goes into more detail?
+Call Detail Record (CDR) Drivers
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+CDR modules are used to store call detail records in a variety of formats. Popular storage mechanisms include comma-separated value (CSV) files, as well as relational databases such as PostgreSQL. Call detail records typically contain one record per call, and give details such as who made the call, who answered the call, the amount of time spent on the call, and so forth. For more information on call detail records, see [Section 370. Call Detail Records]. Call detail record modules have file names that look like cdr_xxxxx.so, such as cdr_csv.so and cdr_pgsql.so.
+Call Event Log (CEL) Driver Modules
-The top three patterns get sorted in ASCII sort order, since they are tied in the number of possible matches. Rule 4 We move on to the third digit. The third pattern (the one that would call SayAlpha(C)) is eliminated, because the third digit of this pattern (the N) doesn't match the third dialed digit (the 0 ). The other patterns match, so we now go back to rule two. Rule 2 The second pattern (the one that would call SayAlpha(B)) is the most constrained, as it only has a single possibility, so it gets sorted to the top. Rule 3 There are no ties at the top of the sorting table, so we can move on to rule four. Rule 4 We move on to the fourth digit. Since all the remaining patterns match, the second pattern remains at the top of the sorting table. You might be asking yourself... "What about the fourth pattern? Isn't it more constrained?" Remember that it was less constrained in an earlier digit, so it would only match if none of the other patterns above it in the sorting table matched on this digit. Step 5 Since we have run out of digits, we know that Asterisk will match on the second pattern, as it is the one at the top of the sorting table. To verify that Asterisk actually does sort the extensions in the manner that we've described, add the following extensions to the [docs:users] context of your own dialplan. {noformat}}exten=>_64XX,1,SayAlpha(A) exten=>_640X,1,SayAlpha(B) exten=>_64NX,1,SayAlpha(C) exten=>_6XX1,1,SayAlpha(D)
-Reload the dialplan, and then type *dialplan show 6104@users* at the Asterisk CLI. Asterisk will show you what would match if you were to dial extension *6104* in the *\[docs:users\]* context.
+Call Event Logs record the various actions that happen on a call. As such, they are typically more detailed that call detail records. For example, a call event log might show that Alice called Bob, that Bob's phone rang for twenty seconds, then Bob's mobile phone rang for fifteen seconds, the call then went to Bob's voice mail, where Alice left a twenty-five second voicemail and hung up the call. The system also allows for custom events to be logged as well. For more information about Call Event Logging, see [Call Event Logging]. Call event logging modules have file names that look like cel_xxxxx.so, such as cel_custom.so and cel_adaptive_odbc.so.
+Bridging Modules
-server*CLI> dialplan show 6401@users [ Context 'users' created by 'pbx_config' ] '_640X' => 1. SayAlpha(B) [pbx_config] '_64XX' => 1. SayAlpha(A) [pbx_config] '_6XX1' => 1. SayAlpha(D) [pbx_config] = 3 extensions (3 priorities) in 1 context. =
+Beginning in Asterisk 1.6.2, Asterisk introduced a new method for bridging calls together. It relies on various bridging modules to control how the media streams should be mixed for the participants on a call. The new bridging methods are designed to be more flexible and more efficient than earlier methods. Bridging modules have file names that look like bridge_xxxxx.so, such as bridge_simple.so and bridge_multiplexed.so.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-You can then dial extension 6104 to try it out on your own.
-Be Careful with Pattern Matching Please be aware that because of the way auto-fallthrough works, if Asterisk can't find the next priority number for the current extension or pattern match, it will also look for that same priority in a less specific pattern match. Consider the following example:
+Call Flow and Bridging Model
-6410,1,SayDigits(987)
+Now that you know about the various modules that Asterisk uses, let's talk about the ways that calls flow through an Asterisk system. To explain this clearly, let's say that Alice wants to talk to Bob, and they both have SIP phones connected to their Asterisk system. Let's see what happens! Should we add a graphic to help explain the call flow model?
+1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Alice dials extension 6002, which is Bob's extension on the Asterisk system. A SIP message goes from Alice's phone to the SIP channel driver in Asterisk The SIP channel driver authenticates the call. If Alice's phone does not provide the proper credentials, Asterisk rejects the call. At this point, we have Alice's phone communicating with Asterisk. Now the call goes from the SIP channel driver into the core of Asterisk. Asterisk looks for a set of instructions to follow for extension 6002 in the dialplan. Extension 6002 in the dialplan tells Asterisk to call Bob's phone Asterisk makes a call out through the SIP channel driver to Bob's phone. Bob answers his phone. Now we have two independent calls on the Asterisk system: one from Alice, and to Bob. Asterisk now bridges the audio between these two calls (known as channels in Asterisk parlance). When one channel hangs up, Asterisk signals the other channel to hang up.
-exten=>_641X,1,SayDigits(12345)
+And there we have it! We've shown how calls flow from external devices, through the channel drivers to the core of Asterisk, and back out through the channel drivers to external devices.
+Asterisk on (Open)Solaris
+Asterisk on Solaris 10 and OpenSolaris
-exten=>_641X,n,SayDigits(54321)
+On this page
+Asterisk on Solaris 10 and OpenSolaris Digium's Support Status Build Notes Prerequisites LDAP dependencies Makefile layouts FAX support with SpanDSP Gotchas Runtime issues Build issues
+Digium's Support Status
-]]>
+According to the README file from 1.6.2: "Asterisk has also been 'ported' and reportedly runs properly on other operating systems as well, including Sun Solaris, Apple's Mac OS X, Cygwin, and the BSD variants." Digium's developers have also been doing a good job of addressing build and run-time issues encountered with Asterisk on Solaris.
+Build Notes Prerequisites
-If you were to dial extension 6410, you'd hear "nine eight seven five four three two one". We strongly recommend you make the Hangup() application be the last priority of any extension to avoid this problem, unless you purposely want to fall through to a less specific match.
+The following packages are recommend for building Asterisk 1.6 and later on OpenSolaris:
+SUNWlibm (math library) gcc-dev (compiler and several dependencies) SUNWflexlex (GNU flex) SUNWggrp (GNU grep) SUNWgsed (GNU sed) SUNWdoxygen (optional; needed for "make progdocs")
-Include Statements
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Include statements allow us to split up the functionality in our dialplan into smaller chunks, and then have Asterisk search multiple contexts for a dialed extension. Most commonly, this functionality is used to provide security boundaries between different classes of callers. It is important to remember that when calls come into the Asterisk dialplan, they get directed to a particular context by the channel driver. Asterisk then begins looking for the dialed extension in the context specified by the channel driver. By using include statements, we can include other contexts in the search for the dialed extension. Asterisk supports two different types of include statements: regular includes and time-based includes.
-Include Statements Basics
+SUNWopenldap (optional; needed for res_config_ldap; see below) SUNWgnu-coreutils (optional; provides GNU install; see below)
-To set the stage for our explanation of include statements, let's say that we want to organize our dialplan and create a new context called [docs:features]. We'll leave our extensions 6001 and 6002 for Alice and Bob in the [docs:users] context, and place extensions such as 6500 in the new [docs:features] context. When calls come into the users context and doesn't find a matching extension, the include statement tells Asterisk to also look in the new [docs:features] context.
+Caution: installing SUNW gnu packages will change the default application run when the user types 'sed' and 'grep' from /usr/bin/sed to /usr/gnu/bin/sed. Just be aware of this change, as there are differences between the Sun and GNU versions of these utilities.
+LDAP dependencies
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Because OpenSolaris ships by default with Sun's LDAP libraries, you must install the SUNWopenldap package to provide OpenLDAP libraries. Because of namespace conflicts, the standard LDAP detection will not work. There are two possible solutions:
+1. Port res_config_ldap to use only the RFC-specified API. This should allow it to link against Sun's LDAP libraries. The problem is centered around the use of the OpenLDAP-specific ldap_initialize() call. 2. Change the detection routines in configure to use OpenSolaris' layout of OpenLDAP. This seems doubtful simply because the filesystem layout of SUNWopenldap is so non-standard.
-The syntax for an include statement is very simple. You simply write include=> and then the name of the context you'd like to include from the existing context. If we reorganize our dialplan to add a [docs:features] context, it might look something like this:
-[users] include => features exten=>6001,1,Dial(SIP/demo-alice,20) exten=>6001,n,VoiceMail(6001@vm-demo,u) exten=>6002,1,Dial(SIP/demo-bob,20) exten=>6002,n,VoiceMail(6002@vm-demo,u) [features] exten=>6000,1,Answer(500) exten=>6000,2,Playback(hello-world) exten=>6000,3,Hangup() exten=>6500,1,Answer(500) exten=>6500,n,VoiceMailMain(@vm-demo)
+Despite the above two possibilities, there is a workaround to make Asterisk compile with res_config_ldap.
+Modify the "configure" script, changing all instances of "-lldap" to "-lldap-2.4". At the time of this writing there are only 4 instances. This alone will make configure properly detect LDAP availability. But it will not compile. When running make, specify the use of the OpenLDAP headers like this:
+"make LDAP_INCLUDE=-I/usr/include/openldap"
-Location of Include Statements Please note that in the example above, we placed the include statement before extensions 6001 and 6002. It could have just as well come after. Asterisk will always try to find a matching extension in the current context first, and only follow the include statement to a new context if there isn't anything that matches in the current context.
+Makefile layouts
-Using Include Statements to Create Classes of Service
+This has been fixed in Asterisk 1.8 and is no longer an issue. In Asterisk 1.6 the Makefile overrides any usage of --prefix. I suspect the assumptions are from back before configure provided the ability to set the installation prefix. Regardless, if you are building on OpenSolaris, be aware of this behavior of the Makefile! If you want to alter the install locations you will need to hand-edit the Makefile. Search for the string "SunOS" to find the following section:
-Now that we've shown the basic syntax of include statements, let's put some include statements to good use. Include statements are often used to build chains of functionality or classes of service. In this example, we're going to build several different contexts, each with its own type of outbound calling. We'll then use include statements to chain these contexts together.
-Numbering Plans The examples in this section use patterns designed for the North American Number Plan, and may not fit your individual circumstances. Feel free to use this example as a guide as you build your own dialplan.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In these examples, we're going to assuming that a seven-digit number that does not begin with a zero or a one is a local (non-toll) call. Ten-digit numbers (where neither the first or fourth digits begin with zero or one) are also treated as local calls. A one, followed by ten digits (where neither the first or fourth digits begin with zero or one) is considered a long-distance (toll) call. Again, feel free to modify these examples to fit your own particular circumstances.
+# Define standard directories for various platforms # These apply if they are not redefined in asterisk.conf ifeq ($(OSARCH),SunOS) ASTETCDIR=/etc/asterisk ASTLIBDIR=/opt/asterisk/lib ASTVARLIBDIR=/var/opt/asterisk ASTDBDIR=$(ASTVARLIBDIR) ASTKEYDIR=$(ASTVARLIBDIR) ASTSPOOLDIR=/var/spool/asterisk ASTLOGDIR=/var/log/asterisk ASTHEADERDIR=/opt/asterisk/include/asterisk ASTBINDIR=/opt/asterisk/bin ASTSBINDIR=/opt/asterisk/sbin ASTVARRUNDIR=/var/run/asterisk ASTMANDIR=/opt/asterisk/man else
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Note that, despite the comment, these definitions have build-time and run-time implications. Make sure you make these changes BEFORE you build!
+FAX support with SpanDSP
-Outbound dialing These examples assume that you have a SIP provider named provider configured in sip.conf. The examples dial out through this SIP provider using the SIP/provider/number syntax. Obviously, these examples won't work unless you setup a SIP provider for outbound calls, or replace this syntax with some other type of outbound connection. For more information on configuring a SIP provider, see [Section 420. The SIP Protocol]. For analog connectivity information, see [Section 441. Analog Telephony with DAHDI]. For more information on connectivity via digital circuits, see [Section 450. Basics of Digital Telephony]
+I have been able to get this to work reliably, including T.38 FAX over SIP. If you are running Asterisk 1.6 note Ticket 16342 if you do not install SpanDSP to the default locations (/usr/include and /usr/lib). There is one build issue with SpanDSP that I need to document (FIXME)
+Gotchas Runtime issues
-First, let's create a new context for local calls.
-_NXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; ten-digit local numbers exten => _NXXNXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; emergency services (911), and other three-digit services exten => NXX,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [users] include => users ]]>
+WAV and WAV49 files are not written correctly (see Ticket 16610) 32-bit binaries on Solaris are limited to 255 file descriptors by default. (see http://developers.sun.com/solaris/articles/stdio_256.html)
+Build issues
-Remember that the variable ${EXTEN} will get replaced with the dialed extension. For example, if Bob dials 5551212 in the local context, Asterisk will execute the Dial application with SIP/provider/5551212 as the first parameter. (This syntax means "Dial out to the account named provider using the SIP channel driver, and dial the number 5551212.) Next, we'll build a long-distance context, and link it back to the local context with an include statement. This way, if you dial a local number and your phone's channel driver sends the call to the longdistance context, Asterisk will search the local context if it doesn't find a matching pattern in the longdistance context.
-_1NXXNXXXXXX,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [local] include => local]]>
+bootstrap.sh does not correctly detect OpenSolaris build tools (see Ticket 16341) Console documentation is not properly loaded at startup (see Ticket 16688) Solaris sed does not properly create AEL parser files (see Ticket 16696; workaround is to install GNU sed with SUNWgsed) Asterisk's provided install script, install-sh, is not properly referenced in the makeopts file that is generated during the build. One workaround is to install GNU install from the SUNWgnu-coreutils package. (See Ticket 16781)
-Last but not least, let's add an [docs:international] context. In North America, you dial 011 to signify that you're going to dial an international number.
-_011.,1,Dial(SIP/provider/${EXTEN}) ; if you don't find a match in this context, look in [longdistance] include => longdistance]]>
+Finally, Solaris memory allocation seems far more sensitive than Linux. This has resulted in the discovery of several previously unknown bugs related to uninitialized variables that Linux handled silently. Note that this means, until these bugs are found and fixed, you may get segfaults. At the time of this writing I have had a server up and running reasonably stable. However, there are large sections of Asterisk's codebase I do not use and likely contain more of these
-And there we have it -- a simple chain of contexts going from most privileged (international calls) down to lease privileged (local calling). At this point, you may be asking yourself, "What's the big deal? Why did we need to break them up into contexts, if they're all going out the same outbound connection?" That's a great question! The primary reason for breaking the different classes of calls into separate contexts is so that we can enforce some security boundaries. Do you remember what we said earlier, that the channel drivers point inbound calls at a particular context? In this case, if we point a phone at the [docs:local] context, it could only make local and internal calls. On the other hand, if we were to point it at the [docs:international] context, it could make international and long-distance and local and internal calls. Essentially, we've created different classes of service by chaining contexts together with include statements, and
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-using the channel driver configuration files to point different phones at different contexts along the chain. Many people find it instructive to look at a visual diagram at this point, so let's draw ourselves a map of the contexts we've created so far. Insert graphic showing chain of includes from international through long-distance to local and to users and features In this graphic, we've illustrated the various contexts and how they work together. We've also shown that Alice's phone is pointed at the [docs:international] context, while Bob's phone is only pointed at the [docs:local] context. Please take the next few minutes and implement a series of chained contexts into your own dialplan, similar to what we've explained above. You can then change the configuration for Alice and Bob (in sip.conf, since they're SIP phones) to point to different contexts, and see what happens when you attempt to make various types of calls from each phone.
+uninitialized variable problems and associated potential segfaults.
Configuration and Operation
Here be the top-level page for all of the Asterisk Reference Information as found in the doc/ and doc/tex subdirectories of the Asterisk source. It's been there all along, but now it's here, in an easy to view format (no need to install 800MB of dependancies in Debian just to convert .tex into PDF), that's also searchable. Hoo-ray! Asterisk Calendaring The Asterisk Calendaring API aims to be a generic interface for integrating Asterisk with various calendaring technologies. The goal is to be able to support reading and writing of calendar events as well as allowing notification of pending events through the Asterisk dialplan. There are three calendaring modules that ship with Asterisk that provide support for iCalendar, CalDAV, and Microsoft Exchange Server calendars. All three modules support event notification. Both CalDAV and Exchange support reading and writing calendars, while iCalendar is a read-only format.
@@ -1019,11 +1196,12 @@
Module-independent settings
-The settings related to calendar event notification are handled by the core calendaring API.
+The settings related to calendar event notification are handled by the core calendaring API. These settings are:
+autoreminder - This allows the overriding of any alarms that may or may not be set for a calendar event. It is specified in minutes. refresh - How often to refresh the calendar data; specified in minutes. timeframe - How far into the future each calendar refresh should look. This is the amount of data that will be visible to queries from the dialplan. This setting should always be greater than or equal to the refresh setting or events may be missed. It is specified in minutes. channel - The channel that should be used for making the notification attempt. waittime - How long to wait, in seconds, for the channel to answer a notification attempt. There are two ways to specify how to handle a notification. One option is providing a context and extension, while the other is providing an application and the arguments to that application. One (and only one) of these options should be provided. context - The context of the extension to connect to the notification channel extension - The extension to connect to the notification. Note that the priority will always be 1. app - The dialplan application to execute upon the answer of a notification
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-These settings are:
-autoreminder - This allows the overriding of any alarms that may or may not be set for a calendar event. It is specified in minutes. refresh - How often to refresh the calendar data; specified in minutes. timeframe - How far into the future each calendar refresh should look. This is the amount of data that will be visible to queries from the dialplan. This setting should always be greater than or equal to the refresh setting or events may be missed. It is specified in minutes. channel - The channel that should be used for making the notification attempt. waittime - How long to wait, in seconds, for the channel to answer a notification attempt. There are two ways to specify how to handle a notification. One option is providing a context and extension, while the other is providing an application and the arguments to that application. One (and only one) of these options should be provided. context - The context of the extension to connect to the notification channel extension - The extension to connect to the notification. Note that the priority will always be 1. app - The dialplan application to execute upon the answer of a notification appdata - The data to pass to the notification dialplan application
+appdata - The data to pass to the notification dialplan application
Module-dependent settings
Connection-related options are specific to each module. Currently, all modules take a url, user, and secret for configuration and no other module-specific settings have been implemented. At this time, no support for HTTP redirects has been implemented, so it is important to specify the correct URL-paying attention to any trailing slashes that may be necessary.
@@ -1031,17 +1209,17 @@
Read functions
The simplest dialplan query is the CALENDAR_BUSY query. It takes a single option, the name of the calendar defined, and returns "1" for busy (including tentatively busy) and "0" for not busy. For more information about a calendar event, a combination of CALENDAR_QUERY and CALENDAR_QUERY_RESULT is used. CALENDAR_QUERY takes the calendar name and optionally a start and end time in "unix time" (seconds from unix epoch). It returns an id that can be passed to CALENDAR_QUERY_RESULT along with a field name to return the data in that field. If multiple events are returned in the query, the number of the event in the list can be specified as well. The available fields to return are:
-summary - A short summary of the event description - The full description of the event organizer - Who organized the event location - Where the event is located calendar - The name of the calendar from calendar.conf uid - The unique identifier associated with the event start - The start of the event in seconds since Unix epoch
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-end - The end of the event in seconds since Unix epoch busystate - The busy state 0=Free, 1=Tentative, 2=Busy attendees - A comma separated list of attendees as stored in the event and may include prefixes such as "mailto:".
+summary - A short summary of the event description - The full description of the event organizer - Who organized the event location - Where the event is located calendar - The name of the calendar from calendar.conf uid - The unique identifier associated with the event start - The start of the event in seconds since Unix epoch end - The end of the event in seconds since Unix epoch busystate - The busy state 0=Free, 1=Tentative, 2=Busy attendees - A comma separated list of attendees as stored in the event and may include prefixes such as "mailto:".
When an event notification is sent to the dial plan, the CALENDAR_EVENT function may be used to return the information about the event that is causing the notification. The fields that can be returned are the same as those from CALENDAR_QUERY_RESULT.
Write functions
To write an event to a calendar, the CALENDAR_WRITE function is used. This function takes a calendar name and also uses the same fields as CALENDAR_QUERY_RESULT. As a write function, it takes a set of comma-separated values that are in the same order as the specified fields. For example:
-CALENDAR_WRITE(mycalendar,summary,organizer,start,end,busystate)= "My event","mailto:jdoe@example.com",228383580,228383640,1)
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+CALENDAR_WRITE(mycalendar,summary,organizer,start,end,busystate)= "My event","mailto:jdoe@example.com",228383580,228383640,1)
+
Calendaring Dialplan Examples
Office hours
@@ -1049,17 +1227,15 @@
5555551212,1,Answer exten => 5555551212,n,GotoIf(${CALENDAR_BUSY(officehours)}?closed:attendant,s,1) exten => 5555551212,n(closed),Set(id=${CALENDAR_QUERY(office,${EPOCH},${EPOCH})}) exten => 5555551212,n,Set(soundfile=${CALENDAR_QUERY_RESULT(${id},description)}) exten => 5555551212,n,Playback($[${ISNULL(soundfile)} ? generic-closed :: ${soundfile}]) exten => 5555551212,n,Hangup ]]>
Meeting reminders
-One useful application of Asterisk Calendaring is the ability to execute dialplan logic based on an event notification. Most calendaring technologies allow a user to set an alarm for an event. If these alarms are set on a calendar that Asterisk is monitoring and the calendar is set up for event notification via calendar.conf, then Asterisk will execute notify the specified channel at the time of the alarm. If an overrided notification time is set with the autoreminder setting, then the notification would happen at that time instead.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-The following example demonstrates the set up for a simple event notification that plays back a generic message followed by the time of the upcoming meeting. calendar.conf.
+One useful application of Asterisk Calendaring is the ability to execute dialplan logic based on an event notification. Most calendaring technologies allow a user to set an alarm for an event. If these alarms are set on a calendar that Asterisk is monitoring and the calendar is set up for event notification via calendar.conf, then Asterisk will execute notify the specified channel at the time of the alarm. If an overrided notification time is set with the autoreminder setting, then the notification would happen at that time instead. The following example demonstrates the set up for a simple event notification that plays back a generic message followed by the time of the upcoming meeting. calendar.conf.
extensions.conf :
s,1,Answer exten => s,n,Playback(you-have-a-meeting-at) exten => s,n,SayUnixTime(${CALENDAR_EVENT(start)}) exten => s,n,Hangup ]]>
Writing an event
-Both CalDAV and Exchange calendar servers support creating new events. The following example demonstrates writing a log of a call to a calendar.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Both CalDAV and Exchange calendar servers support creating new events. The following example demonstrates writing a log of a call to a calendar.
6000,1,Set(start=${EPOCH}) exten => 6000,n,Dial(SIP/joe) exten => h,1,Set(end=${EPOCH}) exten => h,n,Set(CALENDAR_WRITE(calendar_joe,summary,start,end)=Call from ${CALLERID(all)},${start},${end}) ]]>
Asterisk Channel Drivers All about Asterisk and its Channel Drivers
@@ -1067,26 +1243,25 @@
Why IAX2?
The first question most people are thinking at this point is "Why do you need another VoIP protocol? Why didn't you just use SIP or H.323?" Well, the answer is a fairly complicated one, but in a nutshell it's like this... Asterisk is intended as a very flexible and powerful communications tool. As such, the primary feature we need from a VoIP protocol is the ability to meet our own goals with Asterisk, and one with enough flexibility that we could use it as a kind of laboratory for inventing and implementing new concepts in the field. Neither H.323 or SIP fit the roles we needed, so we developed our own protocol, which, while not standards based, provides a number of advantages over both SIP and H.323, some of which are:
-Interoperability with NAT/PAT/Masquerade firewalls IAX seamlessly interoperates through all sorts of NAT and PAT and other firewalls, including the ability to place and receive calls, and transfer calls to other stations. High performance, low overhead protocol When running on low-bandwidth connections, or when running large numbers of calls, optimized bandwidth utilization is imperative. IAX uses only 4 bytes of overhead Internationalization support IAX transmits language information, so that remote PBX content can be delivered in the native language of the calling party. Remote dialplan polling IAX allows a PBX or IP phone to poll the availability of a number from a remote server. This allows PBX dialplans to be centralized. Flexible authentication IAX supports cleartext, md5, and RSA authentication, providing flexible security models for outgoing calls and registration services. Multimedia protocol IAX supports the transmission of voice, video, images, text, HTML, DTMF, and URL's. Voice menus can be presented in both audibly and
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-visually. Call statistic gathering IAX gathers statistics about network performance (including latency and jitter, as well as providing end-to-end latency measurement. Call parameter communication Caller*ID, requested extension, requested context, etc are all communicated through the call. Single socket design IAX's single socket design allows up to 32768 calls to be multiplexed.
+Interoperability with NAT/PAT/Masquerade firewalls IAX seamlessly interoperates through all sorts of NAT and PAT and other firewalls, including the ability to place and receive calls, and transfer calls to other stations. High performance, low overhead protocol When running on low-bandwidth connections, or when running large numbers of calls, optimized bandwidth utilization is imperative. IAX uses only 4 bytes of overhead Internationalization support IAX transmits language information, so that remote PBX content can be delivered in the native language of the calling party. Remote dialplan polling IAX allows a PBX or IP phone to poll the availability of a number from a remote server. This allows PBX dialplans to be centralized. Flexible authentication IAX supports cleartext, md5, and RSA authentication, providing flexible security models for outgoing calls and registration services. Multimedia protocol IAX supports the transmission of voice, video, images, text, HTML, DTMF, and URL's. Voice menus can be presented in both audibly and visually. Call statistic gathering IAX gathers statistics about network performance (including latency and jitter, as well as providing end-to-end latency measurement. Call parameter communication Caller*ID, requested extension, requested context, etc are all communicated through the call. Single socket design IAX's single socket design allows up to 32768 calls to be multiplexed.
While we value the importance of standards based (i.e. SIP) call handling, hopefully this will provide a reasonable explanation of why we developed IAX rather than starting with SIP.
Introduction to IAX2
This section is intended as an introduction to the Inter-Asterisk eXchange v2 (or simply IAX2) protocol. It provides both a theoretical background and practical information on its use.
-IAX2 Configuration
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+IAX2 Configuration
For examples of a configuration, please see the iax.conf.sample in the /configs directory of your source code distribution.
IAX2 Jitterbuffer
-The new jitterbuffer You must add "jitterbuffer=yes" to either the [general] part of iax.conf, or to a peer or a user. (just like the old jitterbuffer). Also, you can set "maxjitterbuffer=n", which puts a hard-limit on the size of the jitterbuffer of "n milliseconds". It is not necessary to have the new jitterbuffer on both sides of a call; it works on the receive side only. PLC The new jitterbuffer detects packet loss. PLC is done to try to recreate these lost packets in the codec decoding stage, as the encoded audio is translated to slinear. PLC is also used to mask jitterbuffer growth. This facility is enabled by default in iLBC and speex, as it has no additional cost. This facility can be enabled in adpcm, alaw, g726, gsm, lpc10, and ulaw by setting genericplc = true in the [plc] section of codecs.conf. Trunktimestamps To use this, both sides must be using Asterisk v1.2 or later. Setting "trunktimestamps=yes" in iax.conf will cause your box to send 16-bit timestamps for each trunked frame inside of a trunk frame. This will enable you to use jitterbuffer for an IAX2 trunk, something that was not possible in the old architecture. The other side must also support this functionality, or else, well, bad things will happen. If you don't use trunktimestamps, there's lots of ways the jitterbuffer can get confused because timestamps aren't necessarily sent through the trunk correctly. Communication with Asterisk v1.0.x systems You can set up communication with v1.0.x systems with the new jitterbuffer, but you can't use
+The new jitterbuffer You must add "jitterbuffer=yes" to either the [general] part of iax.conf, or to a peer or a user. (just like the old jitterbuffer). Also, you can set "maxjitterbuffer=n", which puts a hard-limit on the size of the jitterbuffer of "n milliseconds". It is not necessary to have the new jitterbuffer on both sides of a call; it works on the receive side only. PLC The new jitterbuffer detects packet loss. PLC is done to try to recreate these lost packets in the codec decoding stage, as the encoded audio is translated to slinear. PLC is also used to mask jitterbuffer growth. This facility is enabled by default in iLBC and speex, as it has no additional cost. This facility can be enabled in adpcm, alaw, g726, gsm, lpc10, and ulaw by setting genericplc = true in the [plc] section of codecs.conf. Trunktimestamps To use this, both sides must be using Asterisk v1.2 or later. Setting "trunktimestamps=yes" in iax.conf will cause your box to send 16-bit timestamps for each trunked frame inside of a trunk frame. This will enable you to use jitterbuffer for an IAX2 trunk, something that was not possible in the old architecture. The other side must also support this functionality, or else, well, bad things will happen. If you don't use trunktimestamps, there's lots of ways the jitterbuffer can get confused because timestamps aren't necessarily sent through the trunk correctly. Communication with Asterisk v1.0.x systems You can set up communication with v1.0.x systems with the new jitterbuffer, but you can't use trunks with trunktimestamps in this communication. If you are connecting to an Asterisk server with earlier versions of the software (1.0.x), do not enable both jitterbuffer and trunking for the involved peers/users in order to be able to communicate. Earlier systems will not support trunktimestamps. You may also compile chan_iax2.c without the new jitterbuffer, enabling the old backwards compatible architecture. Look in the source code for instructions. Testing and monitoring You can test the effectiveness of PLC and the new jitterbuffer's detection of loss by using the new CLI command "iax2 test losspct n". This will simulate n percent packet loss coming in to chan_iax2. You should find that with PLC and the new JB, 10 percent packet loss should lead to just a tiny amount of distortion, while without PLC, it would lead to silent gaps in your audio.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-trunks with trunktimestamps in this communication. If you are connecting to an Asterisk server with earlier versions of the software (1.0.x), do not enable both jitterbuffer and trunking for the involved peers/users in order to be able to communicate. Earlier systems will not support trunktimestamps. You may also compile chan_iax2.c without the new jitterbuffer, enabling the old backwards compatible architecture. Look in the source code for instructions. Testing and monitoring You can test the effectiveness of PLC and the new jitterbuffer's detection of loss by using the new CLI command "iax2 test losspct n". This will simulate n percent packet loss coming in to chan_iax2. You should find that with PLC and the new JB, 10 percent packet loss should lead to just a tiny amount of distortion, while without PLC, it would lead to silent gaps in your audio. "iax2 show netstats" shows you statistics for each iax2 call you have up. The columns are "RTT" which is the round-trip time for the last PING, and then a bunch of s tats for both the local side (what you're receiving), and the remote side (what the other end is telling us they are seeing). The remote stats may not be complete if the remote end isn't using the new jitterbuffer. The stats shown are:
+"iax2 show netstats" shows you statistics for each iax2 call you have up. The columns are "RTT" which is the round-trip time for the last PING, and then a bunch of s tats for both the local side (what you're receiving), and the remote side (what the other end is telling us they are seeing). The remote stats may not be complete if the remote end isn't using the new jitterbuffer. The stats shown are:
Jit: The jitter we have measured (milliseconds) Del: The maximum delay imposed by the jitterbuffer (milliseconds) Lost: The number of packets we've detected as lost. %: The percentage of packets we've detected as lost recently. Drop: The number of packets we've purposely dropped (to lower latency). OOO: The number of packets we've received out-of-order Kpkts: The number of packets we've received / 1000.
Reporting problems There's a couple of things that can make calls sound bad using the jitterbuffer: The JB and PLC can make your calls sound better, but they can't fix everything. If you lost 10 frames in a row, it can't possibly fix that. It really can't help much more than one or two consecutive frames.
@@ -1095,11 +1270,13 @@
mISDN
Introduction to mISDN
+This package contains the mISDN Channel Driver for the Asterisk PBX. It supports every mISDN Hardware and provides an interface for Asterisk.
+mISDN Features
+NT and TE mode PP and PMP mode BRI and PRI (with BNE1 and BN2E1 Cards) Hardware bridging DTMF detection in HW+mISDNdsp Display messages on phones (on those that support it) app_SendText HOLD/RETRIEVE/TRANSFER on ISDN phones : ) Allow/restrict user number presentation Volume control Crypting with mISDNdsp (Blowfish) Data (HDLC) callthrough Data calling (with app_ptyfork +pppd) Echo cancellation
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This package contains the mISDN Channel Driver for the Asterisk PBX. It supports every mISDN Hardware and provides an interface for Asterisk.
-mISDN Features
-NT and TE mode PP and PMP mode BRI and PRI (with BNE1 and BN2E1 Cards) Hardware bridging DTMF detection in HW+mISDNdsp Display messages on phones (on those that support it) app_SendText HOLD/RETRIEVE/TRANSFER on ISDN phones : ) Allow/restrict user number presentation Volume control Crypting with mISDNdsp (Blowfish) Data (HDLC) callthrough Data calling (with app_ptyfork +pppd) Echo cancellation Call deflection Some others
+Call deflection Some others
mISDN Fast Installation Guide
@@ -1115,26 +1292,28 @@
That's all! Follow the instructions in the mISDN Package for how to load the Kernel Modules. Also install process described in http://www.misdn.org/index.php/Installing_mISDN
mISDN Pre-Requisites
-To compile and install this driver, you'll need at least one mISDN Driver and the mISDNuser package. Chan_misdn works with both, the current release version and the development (svn trunk) version of Asterisk.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-You should use Kernels = 2.6.9
+To compile and install this driver, you'll need at least one mISDN Driver and the mISDNuser package. Chan_misdn works with both, the current release version and the development (svn trunk) version of Asterisk. You should use Kernels = 2.6.9
mISDN Configuration
First of all you must configure the mISDN drivers, please follow the instructions in the mISDN package to do that, the main config file and config script is:
/etc/init.d/misdn-init and /etc/misdn-init.conf
-Now you will want to configure the misdn.conf file which resides in the Asterisk config directory (normally /etc/asterisk). misdn.conf: [general] subsection The misdn.conf file contains a "general" subsection, and user subsections which contain misdn port settings and different Asterisk contexts. In the general subsection you can set options that are not directly port related. There is for example the very important debug variable which you can set from the Asterisk cli (command line interface) or in this configuration file, bigger numbers will lead to more debug output. There's also a trace file option, which takes a path+filename where debug output is written to. misdn.conf: [default] subsection The default subsection is another special subsection which can contain all the options available in the user/port subsections. The user/port subsections inherit their parameters from the default subsection. misdn.conf: user/port subsections The user subsections have names which are unequal to "general". Those subsections contain the ports variable which mean the mISDN Ports. Here you can add multiple ports, comma separated. Especially for TE-Mode Ports there is a msns option. This option tells the chan_misdn driver to listen for incoming calls with the given msns, you can insert a '' as single msn, which leads to getting every incoming call. If you want to share on PMP TE S0 with Asterisk and a phone or ISDN card you should insert here the msns which you assign to Asterisk. Finally a context variable resides in the user subsections, which tells chan_misdn where to send incoming calls to in the Asterisk dial plan (extension.conf).* Dial and Options String The dial string of chan_misdn got more complex, because we added more features, so the generic dial string looks like:
-[:bchannel]|g:<group>/<extension>[/<OPTIONSSTRING>] ]]></OPTIONSSTRING></extension></group>
+Now you will want to configure the misdn.conf file which resides in the Asterisk config directory (normally /etc/asterisk).
-The Optionsstring looks Like:
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-<optarg>:<optchar><optarg>... ]]></optarg></optchar></optarg>
+misdn.conf: [general] subsection The misdn.conf file contains a "general" subsection, and user subsections which contain misdn port settings and different Asterisk contexts. In the general subsection you can set options that are not directly port related. There is for example the very important debug variable which you can set from the Asterisk cli (command line interface) or in this configuration file, bigger numbers will lead to more debug output. There's also a trace file option, which takes a path+filename where debug output is written to. misdn.conf: [default] subsection The default subsection is another special subsection which can contain all the options available in the user/port subsections. The user/port subsections inherit their parameters from the default subsection. misdn.conf: user/port subsections The user subsections have names which are unequal to "general". Those subsections contain the ports variable which mean the mISDN Ports. Here you can add multiple ports, comma separated. Especially for TE-Mode Ports there is a msns option. This option tells the chan_misdn driver to listen for incoming calls with the given msns, you can insert a '' as single msn, which leads to getting every incoming call. If you want to share on PMP TE S0 with Asterisk and a phone or ISDN card you should insert here the msns which you assign to Asterisk. Finally a context variable resides in the user subsections, which tells chan_misdn where to send incoming calls to in the Asterisk dial plan (extension.conf).* Dial and Options String The dial string of chan_misdn got more complex, because we added more features, so the generic dial string looks like:
+[:bchannel]|g:<group>/<extension>[/<OPTIONSSTRING>] ]]></OPTIONSSTRING></extension></group>
+
+The Optionsstring looks Like:
+<optarg>:<optchar><optarg>... ]]></optarg></optchar></optarg>
The ":" character is the delimiter. The available options are:
-a - Have Asterisk detect DTMF tones on called channel c - Make crypted outgoing call, optarg is keyindex d - Send display text to called phone, text is the optarg e - Perform echo cancelation on this channel, takes taps as optarg (32,64,128,256) e! - Disable echo cancelation on this channel f - Enable fax detection h - Make digital outgoing call h1 - Make HDLC mode digital outgoing call i - Ignore detected DTMF tones, don't signal them to Asterisk, they will be transported inband. jb - Set jitter buffer length, optarg is length jt - Set jitter buffer upper threshold, optarg is threshold jn - Disable jitter buffer n - Disable mISDN DSP on channel. Disables: echo cancel, DTMF detection, and volume control. p - Caller ID presentation, optarg is either 'allowed' or 'restricted' s - Send Non-inband DTMF as inband vr - Rx gain control, optarg is gain vt - Tx gain control, optarg is gain
+a - Have Asterisk detect DTMF tones on called channel c - Make crypted outgoing call, optarg is keyindex d - Send display text to called phone, text is the optarg e - Perform echo cancelation on this channel, takes taps as optarg (32,64,128,256) e! - Disable echo cancelation on this channel f - Enable fax detection h - Make digital outgoing call h1 - Make HDLC mode digital outgoing call i - Ignore detected DTMF tones, don't signal them to Asterisk, they will be transported inband. jb - Set jitter buffer length, optarg is length jt - Set jitter buffer upper threshold, optarg is threshold jn - Disable jitter buffer
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+n - Disable mISDN DSP on channel. Disables: echo cancel, DTMF detection, and volume control. p - Caller ID presentation, optarg is either 'allowed' or 'restricted' s - Send Non-inband DTMF as inband vr - Rx gain control, optarg is gain vt - Tx gain control, optarg is gain
chan_misdn registers a new dial plan application "misdn_set_opt" when loaded. This application takes the Optionsstring as argument. The Syntax is:
) ]]>
@@ -1151,13 +1330,13 @@
misdn <tab> <tab>
Now you should see the misdn cli commands:
+clean -> pid (cleans a broken call, use with care, leads often to a segmentation fault) send -> display (sends a Text Message to a Asterisk channel, this channel must be an misdn channel) set -> debug (sets debug level) show -> config (shows the configuration options) channels (shows the current active misdn channels) channel (shows details about the given misdn channels) stacks (shows the current ports, their protocols and states) fullstacks (shows the current active and inactive misdn channels) restart -> port (restarts given port (L2 Restart) ) - reload (reloads misdn.conf)
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+You can only use "misdn send display" when an Asterisk channel is created and isdn is in the correct state. "correct state" means that you have established a call to another phone (must not be isdn though). Then you use it like this:
-clean -> pid (cleans a broken call, use with care, leads often to a segmentation fault) send -> display (sends a Text Message to a Asterisk channel, this channel must be an misdn channel) set -> debug (sets debug level) show -> config (shows the configuration options) channels (shows the current active misdn channels) channel (shows details about the given misdn channels) stacks (shows the current ports, their protocols and states) fullstacks (shows the current active and inactive misdn channels) restart -> port (restarts given port (L2 Restart) ) - reload (reloads misdn.conf)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-You can only use "misdn send display" when an Asterisk channel is created and isdn is in the correct state. "correct state" means that you have established a call to another phone (must not be isdn though). Then you use it like this:
-misdn send display mISDN/1/101 "Hello World!"
+misdn send display mISDN/1/101 "Hello World!"
where 1 is the Port of the Card where the phone is plugged in, and 101 is the msn (callerid) of the Phone to send the text to.
mISDN Variables
@@ -1175,17 +1354,16 @@
On the last line, you will notice the last argument (Hello); this is sent as Display Message to the Phone.
mISDN Known Problems
-Q: I cannot hear any tone after a successful CONNECT to the other end.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-A: You forgot to load mISDNdsp, which is now needed by chan_misdn for switching and DTMF tone detection.
+Q: I cannot hear any tone after a successful CONNECT to the other end. A: You forgot to load mISDNdsp, which is now needed by chan_misdn for switching and DTMF tone detection.
Local Channel
Introduction to Local Channels
In Asterisk, Local channels are a method used to treat an extension in the dialplan as if it were an external device. In essense, Asterisk will send the call back into the dialplan as the destination of the call, versus sending the call to a device. Two of the most common areas where Local channels are used include members configured for queues, and in use with callfiles. There are also other uses where you want to ring two destinations, but with different information, such as different callerID for each outgoing request.
-Local Channel Examples
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Local Channel Examples
Local channels are best demonstrated through the use of an example. Our first example isn't terribly useful, but will demonstrate how Local channels can execute dialplan logic by dialing from the Dial() application.
Trivial Local Channel Example
@@ -1197,15 +1375,16 @@
 Executing [201@devices:1] "2,Dial another part of the Local chan") in == Dial another part of the Verbose("SIP/my_desk_phone-00000014", dialplan via the new stack dialplan via the Local chan
We dial extension 201 from SIP/my_desk_phone which has entered the [devices] context. The first line simply outputs some information via the Verbose() application.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Â Executing [201@devices:2] Verbose("SIP/my_desk_phone-00000014", "2,Outside channel: SIP/my_desk_phone-00000014") in new stack == Outside channel: SIP/my_desk_phone-00000014
+Â Executing [201@devices:2] Verbose("SIP/my_desk_phone-00000014", "2,Outside channel: SIP/my_desk_phone-00000014") in new stack == Outside channel: SIP/my_desk_phone-00000014
The next line is another Verbose() application statement that tells us our current channel name. We can see that the channel executing the current dialplan is a desk phone (aptly named 'my_desk_phone').
 Executing [201@devices:3] Dial("SIP/my_desk_phone-00000014", "Local/201@extensions") in new stack  Called 201@extensions
-Now the third step in our dialplan executes the Dial() application which calls extension 201 in the [extensions] context of our dialplan. There is no requirement that we use the same extension number - we could have just as easily used a named extension, or some other number. Remember that we're dialing another channel, but instead of dialing a device, we're "dialing" another part of the dialplan.
+Now the third step in our dialplan executes the Dial() application which calls extension 201 in the
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+[extensions] context of our dialplan. There is no requirement that we use the same extension number - we could have just as easily used a named extension, or some other number. Remember that we're dialing another channel, but instead of dialing a device, we're "dialing" another part of the dialplan.
 Executing [201@extensions:1] Verbose("Local/201@extensions-7cf4;2", "2,Made it to the Local channel") in new stack == Made it to the Local channel
Now we've verified we've dialed another part of the dialplan. We can see the channel executing the dialplan has changed to Local/201@extensions-7cf4;2. The part '-7cf4;2' is just the unique identifier, and will be different for you.
@@ -1214,15 +1393,14 @@
Here we use the Verbose() application to see what our current channel name is. As you can see the current channel is a Local channel which we created from our SIP channel.
 Executing [201@extensions:3] Dial("Local/201@extensions-7cf4;2", "SIP/some-named-extension,30") in new stack
-And from here, we're using another Dial() application to call a SIP device configured in sip.conf as [some-named-extension]. Now that we understand a simple example of calling the Local channel, let's expand upon this
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-example by using Local channels to call two devices at the same time, but delay calling one of the devices.
+And from here, we're using another Dial() application to call a SIP device configured in sip.conf as [some-named-extension]. Now that we understand a simple example of calling the Local channel, let's expand upon this example by using Local channels to call two devices at the same time, but delay calling one of the devices.
Delay Dialing Devices Example
Lets say when someone calls extension 201, we want to ring both the desk phone and their cellphone at the same time, but we want to wait about 6 seconds to start dialing the cellphone. This is useful in a situation when someone might be sitting at their desk, but don't want both devices ringing at the same time, but also doesn't want to wait for the full ring cycle to execute on their desk phone before rolling over to their cellphone. The dialplan for this would look something like the following:
-201,1,Verbose(2,Call desk phone and cellphone but with delay) exten => 201,n,Dial(Local/deskphone-201@extensions&Local/cellphone-201@extensions,30) exten => 201,n,Voicemail(201@default,${IF($[${DIALSTATUS} = BUSY]?b:u)}) exten => 201,n,Hangup() [extensions] ; Dial the desk phone exten => deskphone-201,1,Verbose(2,Dialing desk phone of extension 201) exten => deskphone-201,n,Dial(SIP/0004f2040001) ; SIP device with MAC address ; of 0004f2040001 ; Dial the cellphone exten => cellphone-201,1,Verbose(2,Dialing cellphone of extension 201) exten => cellphone-201,n,Verbose(2,-- Waiting 6 seconds before dialing) exten => cellphone-201,n,Wait(6) exten => cellphone-201,n,Dial(DAHDI/g0/14165551212) ]]>
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+201,1,Verbose(2,Call desk phone and cellphone but with delay) exten => 201,n,Dial(Local/deskphone-201@extensions&Local/cellphone-201@extensions,30) exten => 201,n,Voicemail(201@default,${IF($[${DIALSTATUS} = BUSY]?b:u)}) exten => 201,n,Hangup() [extensions] ; Dial the desk phone exten => deskphone-201,1,Verbose(2,Dialing desk phone of extension 201) exten => deskphone-201,n,Dial(SIP/0004f2040001) ; SIP device with MAC address ; of 0004f2040001 ; Dial the cellphone exten => cellphone-201,1,Verbose(2,Dialing cellphone of extension 201) exten => cellphone-201,n,Verbose(2,-- Waiting 6 seconds before dialing) exten => cellphone-201,n,Wait(6) exten => cellphone-201,n,Dial(DAHDI/g0/14165551212) ]]>
When someone dials extension 201 in the [devices] context, it will execute the Dial() application, and call two Local channels at the same time:
Local/deskphone-201@extensions Local/cellphone-201@extensions
@@ -1233,10 +1411,11 @@
With Asterisk, we can place a call to multiple destinations by separating the technology/destination pair with an ampersand (&). For example, the following Dial() line would ring two separate destinations for 30 seconds:
201,1,Dial(SIP/0004f2040001&DAHDI/g0/14165551212,30) ]]>
+That line would dial both the SIP/0004f2040001 device (likely a SIP device on the network) and dial the phone number 1-416-555-1212 via a DAHDI interface. In our example though, we would be sending the same callerID information to both end points, but perhaps we want to send a different callerID to one of the destinations? We can send different callerIDs to each of the destinations if we want by using the Local channel. The following example shows how this is possible because we would Dial() two different Local channels from our top level Dial(), and that would then execute some dialplan before sending the call off to the final destinations.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-That line would dial both the SIP/0004f2040001 device (likely a SIP device on the network) and dial the phone number 1-416-555-1212 via a DAHDI interface. In our example though, we would be sending the same callerID information to both end points, but perhaps we want to send a different callerID to one of the destinations? We can send different callerIDs to each of the destinations if we want by using the Local channel. The following example shows how this is possible because we would Dial() two different Local channels from our top level Dial(), and that would then execute some dialplan before sending the call off to the final destinations.
-201,1,NoOp() exten => 201,n,Dial(Local/201@internal&Local/201@external,30) exten => 201,n,Voicemail(201@default,${IF($[${DIALSTATUS} = BUSY]?b:u)}) exten => 201,n,Hangup() [internal] exten => 201,1,Verbose(2,Placing internal call for extension 201) exten => 201,n,Set(CALLERID(name)=From Sales) exten => 201,n,Dial(SIP/0004f2040001,30) [external] exten => 201,1,Verbose(2,Placing external call for extension 201) exten => 201,n,Set(CALLERID(name)=Acme Cleaning) exten => 201,n,Dial(DAHDI/g0/14165551212) ]]>
+201,1,NoOp() exten => 201,n,Dial(Local/201@internal&Local/201@external,30) exten => 201,n,Voicemail(201@default,${IF($[${DIALSTATUS} = BUSY]?b:u)}) exten => 201,n,Hangup() [internal] exten => 201,1,Verbose(2,Placing internal call for extension 201) exten => 201,n,Set(CALLERID(name)=From Sales) exten => 201,n,Dial(SIP/0004f2040001,30) [external] exten => 201,1,Verbose(2,Placing external call for extension 201) exten => 201,n,Set(CALLERID(name)=Acme Cleaning) exten => 201,n,Dial(DAHDI/g0/14165551212) ]]>
With the dialplan above, we've sent two different callerIDs to the destinations:
"From Sales" was sent to the local device SIP/0004f2040001 "Acme Cleaning" was sent to the remote number 1-416-555-1212 via DAHDI
@@ -1245,13 +1424,13 @@
Using Callfiles and Local Channels
Another example is to use callfiles and Local channels so that you can execute some dialplan prior to performing a Dial(). We'll construct a callfile which will then utilize a Local channel to lookup a bit of information in the AstDB and then place a call via the channel configured in the AstDB. First, lets construct our callfile that will use the Local channel to do some lookups prior to placing our call. More information on constructing callfiles is located in the doc/callfiles.txt file of your Asterisk source. Our callfile will simply look like the following:
+Channel: Local/201@devices Application: Playback Data: silence/1&tt-weasels
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Add the callfile information to a file such as 'callfile.new' or some other appropriately named file. Our dialplan will perform a lookup in the AstDB to determine which device to call, and will then call the device, and upon answer, Playback() the silence/1 (1 second of silence) and the tt-weasels sound files. Before looking at our dialplan, lets put some data into AstDB that we can then lookup from the dialplan. From the Asterisk CLI, run the following command:
-Channel: Local/201@devices Application: Playback Data: silence/1&tt-weasels
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Add the callfile information to a file such as 'callfile.new' or some other appropriately named file. Our dialplan will perform a lookup in the AstDB to determine which device to call, and will then call the device, and upon answer, Playback() the silence/1 (1 second of silence) and the tt-weasels sound files. Before looking at our dialplan, lets put some data into AstDB that we can then lookup from the dialplan. From the Asterisk CLI, run the following command:
-*CLI> database put phones 201/device SIP/0004f2040001
+*CLI> database put phones 201/device SIP/0004f2040001
We've now put the device destination (SIP/0004f2040001) into the 201/device key within the phones family. This will allow us to lookup the device location for extension 201 from the database. We can then verify our entry in the database using the 'database show' CLI command:
*CLI> database show /phones/201/device : SIP/0004f2040001
@@ -1265,13 +1444,14 @@
Then after a moment, you should see output on your console similar to the following, and your device ringing. Information about what is going on during the output has also been added throughout.
 Attempting call on Local/201@devices for application Playback(silence/1&tt-weasels) (Retry 1)
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-You'll see the line above as soon as Asterisk gets the request from the callfile.
+You'll see the line above as soon as Asterisk gets the request from the callfile.
 Executing [201@devices:1] NoOp("Local/201@devices-ecf0;2", "") in new stack  Executing [201@devices:2] Set("Local/201@devices-ecf0;2", "DEVICE=SIP/0004f2040001") in new stack
This is where we performed our lookup in the AstDB. The value of SIP/0004f2040001 was then returned and saved to the DEVICE channel variable.
-Â Executing [201@devices:3] GotoIf("Local/201@devices-ecf0;2", "0?hangup") in new stack
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Â Executing [201@devices:3] GotoIf("Local/201@devices-ecf0;2", "0?hangup") in new stack
We perform a check to make sure ${DEVICE} isn't NULL. If it is, we'll just hangup here.
 Executing [201@devices:4] Dial("Local/201@devices-ecf0;2", "SIP/0004f2040001,30") in new stack  Called 000f2040001  SIP/0004f2040001-00000022 is ringing
@@ -1286,13 +1466,13 @@
 <Local/201@devices-ecf0;1> Playing 'silence/1.slin' (language 'en') == Spawn extension (devices, 201, 4) exited non-zero on 'Local/201@devices-ecf0;2'
At this point we now see the Local channel has been optimized out of the call path. This is important as we'll see in examples later. By default, the Local channel will try to optimize itself out of the call path as soon as it can. Now that the call has been established and audio is flowing, it gets out of the way.
+Â <SIP/0004f2040001-00000022> Playing 'tt-weasels.ulaw' (language 'en') [Mar 1 13:35:23] NOTICE[16814]: pbx_spool.c:349 attempt_thread: Call completed to Local/201@devices
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+We can now see the tt-weasels file is played directly to the destination (instead of through the Local channel which was optimized out of the call path) and then a NOTICE stating the call was completed.
-Â <SIP/0004f2040001-00000022> Playing 'tt-weasels.ulaw' (language 'en') [Mar 1 13:35:23] NOTICE[16814]: pbx_spool.c:349 attempt_thread: Call completed to Local/201@devices
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-We can now see the tt-weasels file is played directly to the destination (instead of through the Local channel which was optimized out of the call path) and then a NOTICE stating the call was completed.
-Understanding when to use (slash)n
+Understanding when to use (slash)n
Lets take a look at an example that demonstrates when the use of the /n directive is necessary. If we spawn a Local channel which does a Dial() to a SIP channel, but we use the L() option (which is used to limit the amount of time a call can be active, along with warning tones when the time is nearly up), it will be associated with the Local channel, which is then optimized out of the call path, and thus won't perform as expected. This following dialplan will not perform as expected.
2,1,Dial(SIP/PHONE_B,,L(60000:45000:15000)) [internal] exten => 4,1,Dial(Local/2@services) ]]>
@@ -1303,12 +1483,12 @@
...into the following:
4,1,Dial(Local/2@services/n) ]]>
-By adding /n to the end, our Local channel will now stay in the call path and not go away.
+By adding /n to the end, our Local channel will now stay in the call path and not go away. Why does adding the /n option all of a suddon make the 'L' option work? First we need to show an overview of the call flow that doesn't work properly, and discuss the information associated with the channels:
+1. 2. 3. 4. 5. 6. 7. SIP device PHONE_A calls Asterisk via a SIP INVITE Asterisk accepts the INVITE and then starts processing dialplan logic in the [internal] context Our dialplan calls Dial(Local/2@services) - notice no /n The Local channel then executes dialplan at extension 2 within the [services] context Extension 2 within [services] then performs Dial() to PHONE_B with the line: Dial(SIP/PHONE_B,,L(60000:45000:15000)) SIP/PHONE_B then answers the call Even though the L option was given when dialing the SIP device, the L information is stored in the channel that is doing the Dial() which is the Local channel, and not the endpoint SIP channel. 8. The Local channel in the middle, containing the information for tracking the time allowance of the call, is then optimized out of the call
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Why does adding the /n option all of a suddon make the 'L' option work? First we need to show an overview of the call flow that doesn't work properly, and discuss the information associated with the channels:
-1. 2. 3. 4. 5. 6. 7. SIP device PHONE_A calls Asterisk via a SIP INVITE Asterisk accepts the INVITE and then starts processing dialplan logic in the [internal] context Our dialplan calls Dial(Local/2@services) - notice no /n The Local channel then executes dialplan at extension 2 within the [services] context Extension 2 within [services] then performs Dial() to PHONE_B with the line: Dial(SIP/PHONE_B,,L(60000:45000:15000)) SIP/PHONE_B then answers the call Even though the L option was given when dialing the SIP device, the L information is stored in the channel that is doing the Dial() which is the Local channel, and not the endpoint SIP channel. 8. The Local channel in the middle, containing the information for tracking the time allowance of the call, is then optimized out of the call path, losing all information about when to terminate the call. 9. SIP/PHONE_A and SIP/PHONE_B then continue talking indefinitely.
+8. path, losing all information about when to terminate the call. 9. SIP/PHONE_A and SIP/PHONE_B then continue talking indefinitely.
Now, if we were to add /n to our dialplan at step three (3) then we would force the Local channel to stay in the call path, and the L() option associated with the Dial() from the Local channel would remain, and our warning sounds and timing would work as expected. There are two workarounds for the above described scenario:
1. Use what we just described, Dial(Local/2@services/n) to cause the Local channel to remain in the call path so that the L() option used inside the Local channel is not discarded when optimization is performed. 2. Place the L() option at the outermost part of the path so that when the middle is optimized out of the call path, the information required to make L() work is associated with the outside channel. The L information will then be stored on the calling channel, which is PHONE_A. For example: 2,1,Dial(SIP/PHONE_B) [internal] exten => 4,1,Dial(Local/2@services,,L(60000:45000:15000)); ]]>
@@ -1321,14 +1501,16 @@
This option is available starting in the Asterisk 1.6.0 branch.
Mobile Channel
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-chan_mobile pages
+chan_mobile pages
Introduction to the Mobile Channel
Asterisk Channel Driver to allow Bluetooth Cell/Mobile Phones to be used as FXO devices, and Headsets as FXS devices.
Mobile Channel Features
-Multiple Bluetooth Adapters supported. Multiple phones can be connected. Multiple headsets can be connected. Asterisk automatically connects to each configured mobile phone / headset when it comes in range. CLI command to discover bluetooth devices. Inbound calls on the mobile network to the mobile phones are handled by Asterisk, just like inbound calls on a Zap channel. CLI passed through on inbound calls. Dial outbound on a mobile phone using Dial(Mobile/device/nnnnnnn) in the dialplan. Dial a headset using Dial(Mobile/device) in the dialplan. Application MobileStatus can be used in the dialplan to see if a mobile phone / headset is connected. Supports devicestate for dialplan hinting. Supports Inbound and Outbound SMS. Supports 'channel' groups for implementing 'GSM Gateways'
+Multiple Bluetooth Adapters supported. Multiple phones can be connected. Multiple headsets can be connected.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Asterisk automatically connects to each configured mobile phone / headset when it comes in range. CLI command to discover bluetooth devices. Inbound calls on the mobile network to the mobile phones are handled by Asterisk, just like inbound calls on a Zap channel. CLI passed through on inbound calls. Dial outbound on a mobile phone using Dial(Mobile/device/nnnnnnn) in the dialplan. Dial a headset using Dial(Mobile/device) in the dialplan. Application MobileStatus can be used in the dialplan to see if a mobile phone / headset is connected. Supports devicestate for dialplan hinting. Supports Inbound and Outbound SMS. Supports 'channel' groups for implementing 'GSM Gateways'
Mobile Channel Requirements
@@ -1336,25 +1518,25 @@
Mobile Channel Concepts
chan_mobile deals with both bluetooth adapters and bluetooth devices. This means you need to tell chan_mobile about the bluetooth adapters installed in your server as well as the devices (phones / headsets) you wish to use. chan_mobile currently only allows one device (phone or headset) to be connected to an adapter at a time. This means you need one adapter for each device you wish to use simultaneously. Much effort has gone into trying to make multiple devices per adapter work, but in short it doesnt. Periodically chan_mobile looks at each configured adapter, and if it is not in use (i.e. no device connected) will initiate a search for devices configured to use this adapater that may be in range. If it finds one it will connect the device and it will be available for Asterisk to use. When the device goes out of range, chan_mobile will disconnect the device and the adapter will become available for other devices.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Configuring chan_mobile
+Configuring chan_mobile
The configuration file for chan_mobile is /etc/asterisk/mobile.conf. It is a normal Asterisk config file consisting of sections and key=value pairs. See configs/mobile.conf.sample for an example and an explanation of the configuration.
Using chan_mobile
-chan_mobile.so must be loaded either by loading it using the Asterisk CLI, or by adding it to /etc/asterisk/modules.conf Search for your bluetooth devices using the CLI command 'mobile search'. Be patient with this command as it will take 8 - 10 seconds to do the discovery. This requires a free adapter. Headsets will generally have to be put into 'pairing' mode before they will show up here. This will return something like the following :*CLI> mobile search Address Name Usable Type Port 00:12:56:90:6E:00 LG TU500 Yes Phone 4 00:80:C8:35:52:78 Toaster No Headset 0 00:0B:9E:11:74:A5 Hello II Plus Yes Headset 1 00:0F:86:0E:AE:42 Daves Blackberry Yes Phone 7
-
-This is a list of all bluetooth devices seen and whether or not they are usable with chan_mobile. The Address field contains the 'bd address' of the device. This is like an ethernet mac address. The Name field is whatever is configured into the device as its name. The Usable field tells you whether or not the device supports the Bluetooth Handsfree Profile or Headset profile. The Type field tells you whether the device is usable as a Phone line (FXO) or a headset (FXS) The Port field is the number to put in the configuration file. Choose which device(s) you want to use and edit /etc/asterisk/mobile.conf. There is a sample included with the Asterisk-addons source under configs/mobile.conf.sample. Be sure to configure the right bd address and port number from the search. If you want inbound calls on a device to go to a specific context, add a context= line, otherwise the default will be used. The 'id' of the device [bitinbrackets] can be anything you like, just make it unique. If you are configuring a Headset be sure to include the type=headset line, if left out it defaults to phone. The CLI command 'mobile show devices' can be used at any time to show the status of configured devices, and whether or not the device is capable of sending / receiving SMS via bluetooth.
-
+chan_mobile.so must be loaded either by loading it using the Asterisk CLI, or by adding it to
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-*CLI> mobile show devices ID Address Group Adapter Connected State SMS headset 00:0B:9E:11:AE:C6 0 blue No Init No LGTU550 00:E0:91:7F:46:44 1 dlink No Init No
+/etc/asterisk/modules.conf Search for your bluetooth devices using the CLI command 'mobile search'. Be patient with this command as it will take 8 - 10 seconds to do the discovery. This requires a free adapter. Headsets will generally have to be put into 'pairing' mode before they will show up here. This will return something like the following :*CLI> mobile search Address Name Usable Type Port 00:12:56:90:6E:00 LG TU500 Yes Phone 4 00:80:C8:35:52:78 Toaster No Headset 0 00:0B:9E:11:74:A5 Hello II Plus Yes Headset 1 00:0F:86:0E:AE:42 Daves Blackberry Yes Phone 7
+
+This is a list of all bluetooth devices seen and whether or not they are usable with chan_mobile. The Address field contains the 'bd address' of the device. This is like an ethernet mac address. The Name field is whatever is configured into the device as its name. The Usable field tells you whether or not the device supports the Bluetooth Handsfree Profile or Headset profile. The Type field tells you whether the device is usable as a Phone line (FXO) or a headset (FXS) The Port field is the number to put in the configuration file. Choose which device(s) you want to use and edit /etc/asterisk/mobile.conf. There is a sample included with the Asterisk-addons source under configs/mobile.conf.sample. Be sure to configure the right bd address and port number from the search. If you want inbound calls on a device to go to a specific context, add a context= line, otherwise the default will be used. The 'id' of the device [bitinbrackets] can be anything you like, just make it unique. If you are configuring a Headset be sure to include the type=headset line, if left out it defaults to phone. The CLI command 'mobile show devices' can be used at any time to show the status of configured devices, and whether or not the device is capable of sending / receiving SMS via bluetooth.
+*CLI> mobile show devices ID Address Group Adapter Connected State SMS headset 00:0B:9E:11:AE:C6 0 blue No Init No LGTU550 00:E0:91:7F:46:44 1 dlink No Init No
As each phone is connected you will see a message on the Asterisk console :Loaded chan_mobile.so => (Bluetooth Mobile Device Channel Driver) Â Bluetooth Device blackberry has connected. Â Bluetooth Device dave has connected.
To make outbound calls, add something to you Dialplan like the following :- (modify to suit)
-_9X.,1,Dial(Mobile/LGTU550/${EXTEN:1},45) exten => _9X.,n,Hangup ]]>
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+_9X.,1,Dial(Mobile/LGTU550/${EXTEN:1},45) exten => _9X.,n,Hangup ]]>
To use channel groups, add an entry to each phones definition in mobile.conf like group=n where n is a number. Then if you do something like Dial(Mobile/g1/123456) Asterisk will dial 123456 on the first connected free phone in group 1. Phones which do not have a specific 'group=n' will be in group 0. To dial out on a headset, you need to use some other mechanism, because the headset is not likely to have all the needed buttons on it. res_clioriginate is good for this :*CLI> originate Mobile/headset extension NNNNN@context
@@ -1367,10 +1549,7 @@
MobileStatus Application
chan_mobile also registers an application named MobileStatus. You can use this in your Dialplan to determine the 'state' of a device. For example, suppose you wanted to call dave's extension, but only if he was in the office. You could test to see if his mobile phone was attached to Asterisk, if it is dial his extension, otherwise dial his mobile phone.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-40,1,MobileStatus(dave,DAVECELL) exten => 40,2,GotoIf($["${DAVECELL}" = "1"]?3:5) exten => 40,3,Dial(ZAP/g1/0427466412,45,tT) exten => 40,4,Hangup exten => 40,5,Dial(SIP/40,45,tT) exten => 40,6,Hangup ]]>
+40,1,MobileStatus(dave,DAVECELL) exten => 40,2,GotoIf($["${DAVECELL}" = "1"]?3:5) exten => 40,3,Dial(ZAP/g1/0427466412,45,tT) exten => 40,4,Hangup exten => 40,5,Dial(SIP/40,45,tT) exten => 40,6,Hangup ]]>
MobileStatus sets the value of the given variable to :1 = Disconnected. i.e. Device not in range of Asterisk, or turned off etc etc 2 = Connected and Not on a call. i.e. Free 3 = Connected and on a call. i.e. Busy
@@ -1378,7 +1557,9 @@
DTMF detection varies from phone to phone. There is a configuration variable that allows you to tune this to your needs. e.g. in mobile.conf
-change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF. The smaller the number the more chance of multiple digits being detected.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF. The smaller the number the more chance of multiple digits being detected.
Mobile Channel SMS Sending and Receiving
If Asterisk has detected your mobile phone is capable of SMS via bluetooth, you will be able to send and receive SMS. Incoming SMS's cause Asterisk to create an inbound call to the context you defined in mobile.conf or the default context if you did not define one. The call will start at extension 'sms'. Two channel variables will be available, SMSSRC = the number of the originator of the SMS and SMSTXT which is the text of the SMS. This is not a voice call, so grab the values of the variables and hang the call up. So, to handle incoming SMS's, do something like the following in your dialplan
@@ -1388,12 +1569,14 @@
To send an SMS, use the application MobileSendSMS like the following :99,1,MobileSendSMS(dave,0427123456,Hello World) ]]>
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This will send 'Hello World' via device 'dave' to '0427123456'
+This will send 'Hello World' via device 'dave' to '0427123456'
Mobile Channel Debugging
-Different phone manufacturers have different interpretations of the Bluetooth Handsfree Profile Spec. This means that not all phones work the same way, particularly in the connection setup / initialisation sequence. I've tried to make chan_mobile as general as possible, but it may need modification to support some phone i've never tested. Some phones, most notably Sony Ericsson 'T' series, dont quite conform to the Bluetooth HFP spec. chan_mobile will detect these and adapt accordingly. The T-610 and T-630 have been tested and work fine. If your phone doesnt behave has expected, turn on Asterisk debugging with 'core set debug 1'. This will log a bunch of debug messages indicating what the phone is doing, importantly the rfcomm conversation between Asterisk and the phone. This can be used to sort out what your phone is doing and make chan_mobile support it. Be aware also, that just about all mobile phones behave differently. For example my LG TU500 wont dial unless the phone is a the 'idle' screen. i.e. if the phone is showing a 'menu' on the display, when you dial via Asterisk, the call will not work. chan_mobile handles this, but there may be other phones that do other things too... Important: Watch what your mobile phone is doing the first few times. Asterisk wont make random calls but if chan_mobile fails to hangup for some reason and you get a huge bill from your telco, dont blame me Asterisk Configuration The top-level page for all things related to Asterisk configuration
+Different phone manufacturers have different interpretations of the Bluetooth Handsfree Profile Spec. This means that not all phones work the same way, particularly in the connection setup / initialisation sequence. I've tried to make chan_mobile as general as possible, but it may need modification to support some phone i've never tested. Some phones, most notably Sony Ericsson 'T' series, dont quite conform to the Bluetooth HFP spec. chan_mobile will detect these and adapt accordingly. The T-610 and T-630 have been tested and work fine. If your phone doesnt behave has expected, turn on Asterisk debugging with 'core set debug 1'. This will log a bunch of debug messages indicating what the phone is doing, importantly the
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+rfcomm conversation between Asterisk and the phone. This can be used to sort out what your phone is doing and make chan_mobile support it. Be aware also, that just about all mobile phones behave differently. For example my LG TU500 wont dial unless the phone is a the 'idle' screen. i.e. if the phone is showing a 'menu' on the display, when you dial via Asterisk, the call will not work. chan_mobile handles this, but there may be other phones that do other things too... Important: Watch what your mobile phone is doing the first few times. Asterisk wont make random calls but if chan_mobile fails to hangup for some reason and you get a huge bill from your telco, dont blame me Asterisk Configuration The top-level page for all things related to Asterisk configuration
General Configuration Information
The top-level page for general (typical) Asterisk configuration information.
@@ -1401,14 +1584,14 @@
Introduction The Asterisk configuration parser in the 1.2 version and beyond series has been improved in a number of ways. In addition to the realtime architecture, we now have the ability to create templates in configuration files, and use these as templates when we configure phones, voicemail accounts and queues. These changes are general to the configuration parser, and works in all configuration files. General syntax Asterisk configuration files are defined as follows:
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-In some files, (e.g. mgcp.conf, dahdi.conf and agents.conf), the syntax is a bit different. In these files the syntax is as follows:
+In some files, (e.g. mgcp.conf, dahdi.conf and agents.conf), the syntax is a bit different. In these files the syntax is as follows:
name label3 = value3 label2 = value4 object2 => name2 ]]>
In this syntax, we create objects with the settings defined above the object creation. Note that settings are inherited from the top, so in the example above object2 has inherited the setting for "label1" from the first object. For template configurations, the syntax for defining a section is changed to:
-The options field is used to define templates, refer to templates and hide templates. Any object can be used as a template. No whitespace is allowed between the closing "]" and the parenthesis "(". Comments All lines that starts with semi-colon ";" is treated as comments and is not parsed. The ";" is a marker for a multi-line comment. Everything after that marker will be treated as a comment until the end-marker ";" is found. Parsing begins directly after the end-marker.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+The options field is used to define templates, refer to templates and hide templates. Any object can be used as a template. No whitespace is allowed between the closing "]" and the parenthesis "(". Comments All lines that starts with semi-colon ";" is treated as comments and is not parsed. The ";" is a marker for a multi-line comment. Everything after that marker will be treated as a comment until the end-marker ";" is found. Parsing begins directly after the end-marker.
1000,1,dial(SIP/lisa) ]]>
Including other files In all of the configuration files, you may include the content of another file with the #include statement. The content of the other file will be included at the row that the #include statement occurred.
@@ -1419,15 +1602,14 @@
Adding to an existing section
-In this case, the plus sign indicates that the second section (with the same name) is an addition
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-to the first section. The second section can be in another file (by using the #include statement). If the section name referred to before the plus is missing, the configuration will fail to load. Defining a template-only section
+In this case, the plus sign indicates that the second section (with the same name) is an addition to the first section. The second section can be in another file (by using the #include statement). If the section name referred to before the plus is missing, the configuration will fail to load. Defining a template-only section
The exclamation mark indicates to the config parser that this is a only a template and should not itself be used by the Asterisk module for configuration. The section can be inherited by other sections (see section "Using templates" below) but is not used by itself. Using templates (or other configuration sections)
-The name within the parenthesis refers to other sections, either templates or standard sections. The referred sections are included before the configuration engine parses the local settings within the section as though their entire contents (and anything they were previously based upon) were included in the new section. For example consider the following:
+The name within the parenthesis refers to other sections, either templates or standard sections. The referred sections are included before the configuration engine parses the local settings
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+within the section as though their entire contents (and anything they were previously based upon) were included in the new section. For example consider the following:
The [baz] section will be processed as though it had been written in the following way:
@@ -1439,27 +1621,27 @@
This example defines two phones - phone1 and phone2 with settings inherited from "def-customer1". The "def-customer1" is a template that inherits from "defaults", which also is a template.
The asterisk.conf file
-Asterisk Main Configuration File
+Asterisk Main Configuration File Below is a sample of the main Asterisk configuration file, asterisk.conf. Note that this file is not provided in sample form, because the Makefile creates it when needed and does not touch it when it already exists.
+/etc/asterisk ; Where the Asterisk loadable modules are located astmoddir => /usr/lib/asterisk/modules ; Where additional 'library' elements (scripts, etc.) are located astvarlibdir => /var/lib/asterisk ; Where AGI scripts/programs are located astagidir => /var/lib/asterisk/agi-bin ; Where spool directories are located ; Voicemail, monitor, dictation and other apps will create files here ; and outgoing call files (used with pbx_spool) must be placed here astspooldir => /var/spool/asterisk
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Below is a sample of the main Asterisk configuration file, asterisk.conf. Note that this file is not provided in sample form, because the Makefile creates it when needed and does not touch it when it already exists.
-/etc/asterisk ; Where the Asterisk loadable modules are located astmoddir => /usr/lib/asterisk/modules ; Where additional 'library' elements (scripts, etc.) are located astvarlibdir => /var/lib/asterisk ; Where AGI scripts/programs are located astagidir => /var/lib/asterisk/agi-bin ; Where spool directories are located ; Voicemail, monitor, dictation and other apps will create files here ; and outgoing call files (used with pbx_spool) must be placed here astspooldir => /var/spool/asterisk ; Where the Asterisk process ID (pid) file should be created astrundir => /var/run/asterisk ; Where the Asterisk log files should be created astlogdir => /var/log/asterisk [options] ;Under "options" you can enter configuration options ;that you also can set with command line options ; Verbosity level for logging (-v) verbose = 0 ; Debug: "No" or value (1-4) debug = 3 ; Background execution disabled (-f) nofork=yes | no ; Always background, even with -v or -d (-F) alwaysfork=yes | no ; Console mode (-c) console= yes | no ; Execute with high priority (-p) highpriority = yes | no ; Initialize crypto at startup (-i) initcrypto = yes | no ; Disable ANSI colors (-n) nocolor = yes | no ; Dump core on failure (-g) dumpcore = yes | no ; Run quietly (-q) quiet = yes | no ; Force timestamping in CLI verbose output (-T) timestamp = yes | no ; User to run asterisk as (-U) NOTE: will require changes to ; directory and device permissions runuser = asterisk
+; Where the Asterisk process ID (pid) file should be created astrundir => /var/run/asterisk ; Where the Asterisk log files should be created astlogdir => /var/log/asterisk [options] ;Under "options" you can enter configuration options ;that you also can set with command line options ; Verbosity level for logging (-v) verbose = 0 ; Debug: "No" or value (1-4) debug = 3 ; Background execution disabled (-f) nofork=yes | no ; Always background, even with -v or -d (-F) alwaysfork=yes | no ; Console mode (-c) console= yes | no ; Execute with high priority (-p) highpriority = yes | no ; Initialize crypto at startup (-i) initcrypto = yes | no ; Disable ANSI colors (-n) nocolor = yes | no ; Dump core on failure (-g) dumpcore = yes | no ; Run quietly (-q) quiet = yes | no ; Force timestamping in CLI verbose output (-T) timestamp = yes | no ; User to run asterisk as (-U) NOTE: will require changes to ; directory and device permissions runuser = asterisk ; Group to run asterisk as (-G) rungroup = asterisk ; Enable internal timing support (-I) internal_timing = yes | no ; Language Options documentation_language = en | es | ru ; These options have no command line equivalent ; Cache record() files in another directory until completion cache_record_files = yes | no record_cache_dir = <dir> ; Build transcode paths via SLINEAR transcode_via_sln = yes | no ; send SLINEAR silence while channel is being recorded
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-; Group to run asterisk as (-G) rungroup = asterisk ; Enable internal timing support (-I) internal_timing = yes | no ; Language Options documentation_language = en | es | ru ; These options have no command line equivalent ; Cache record() files in another directory until completion cache_record_files = yes | no record_cache_dir = <dir> ; Build transcode paths via SLINEAR transcode_via_sln = yes | no ; send SLINEAR silence while channel is being recorded transmit_silence_during_record = yes | no ; The maximum load average we accept calls for maxload = 1.0 ; The maximum number of concurrent calls you want to allow maxcalls = 255 ; Stop accepting calls when free memory falls below this amount specified in MB minmemfree = 256 ; Allow #exec entries in configuration files execincludes = yes | no ; Don't over-inform the Asterisk sysadm, he's a guru dontwarn = yes | no ; System name. Used to prefix CDR uniqueid and to fill \${SYSTEMNAME} systemname = <a_string> ; Should language code be last component of sound file name or first? ; when off, sound files are searched as <path>/<lang>/<file> ; when on, sound files are search as <lang>/<path>/<file> ; (only affects relative paths for sound files) languageprefix = yes | no ; Locking mode for voicemail ; - lockfile: default, for normal use ; - flock: for where the lockfile locking method doesn't work ; eh. on SMB/CIFS mounts lockmode = lockfile | flock ; ; ; ; ; Entity ID. This is in the form of a MAC address. It should be universally unique. It must be unique between servers communicating with a protocol that uses this value. The only thing that uses this currently is DUNDi, but other things will use it in the future. entityid=00:11:22:33:44:55
+transmit_silence_during_record = yes | no ; The maximum load average we accept calls for maxload = 1.0 ; The maximum number of concurrent calls you want to allow maxcalls = 255 ; Stop accepting calls when free memory falls below this amount specified in MB minmemfree = 256 ; Allow #exec entries in configuration files execincludes = yes | no ; Don't over-inform the Asterisk sysadm, he's a guru dontwarn = yes | no ; System name. Used to prefix CDR uniqueid and to fill \${SYSTEMNAME} systemname = <a_string> ; Should language code be last component of sound file name or first? ; when off, sound files are searched as <path>/<lang>/<file> ; when on, sound files are search as <lang>/<path>/<file> ; (only affects relative paths for sound files) languageprefix = yes | no ; Locking mode for voicemail ; - lockfile: default, for normal use ; - flock: for where the lockfile locking method doesn't work ; eh. on SMB/CIFS mounts lockmode = lockfile | flock ; ; ; ; ; Entity ID. This is in the form of a MAC address. It should be universally unique. It must be unique between servers communicating with a protocol that uses this value. The only thing that uses this currently is DUNDi, but other things will use it in the future. entityid=00:11:22:33:44:55
-[files] ; Changing the following lines may compromise your security ; Asterisk.ctl is the pipe that is used to connect the remote CLI ; (asterisk -r) to Asterisk. Changing these settings change the ; permissions and ownership of this file. ; The file is created when Asterisk starts, in the "astrundir" above.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-;astctlpermissions = 0660 ;astctlowner = root ;astctlgroup = asterisk ;astctl = asterisk.ctl ]]></file></path></lang></file></lang></path></a_string></dir>
+[files] ; Changing the following lines may compromise your security ; Asterisk.ctl is the pipe that is used to connect the remote CLI ; (asterisk -r) to Asterisk. Changing these settings change the ; permissions and ownership of this file. ; The file is created when Asterisk starts, in the "astrundir" above. ;astctlpermissions = 0660 ;astctlowner = root ;astctlgroup = asterisk ;astctl = asterisk.ctl ]]></file></path></lang></file></lang></path></a_string></dir>
CLI Prompt
Changing the CLI Prompt The CLI prompt is set with the ASTERISK_PROMPT UNIX environment variable that you set from the Unix shell before starting Asterisk You may include the following variables, that will be replaced by the current value by Asterisk:
-%d - Date (year-month-date) %s - Asterisk system name (from asterisk.conf) %h - Full hostname %H - Short hostname %t - Time %u - Username %g - Groupname %% - Percent sign %# - '#' if Asterisk is run in console mode, '' if running as remote console %Cn[;n] - Change terminal foreground (and optional background) color to specified A full list of colors may be found in include/asterisk/term.h
+%d - Date (year-month-date) %s - Asterisk system name (from asterisk.conf) %h - Full hostname
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+%H - Short hostname %t - Time %u - Username %g - Groupname %% - Percent sign %# - '#' if Asterisk is run in console mode, '' if running as remote console %Cn[;n] - Change terminal foreground (and optional background) color to specified A full list of colors may be found in include/asterisk/term.h
On systems which implement getloadavg(3), you may also use:
%l1 - Load average over past minute %l2 - Load average over past 5 minutes %l3 - Load average over past 15 minutes
@@ -1467,12 +1649,12 @@
The Asterisk Dialplan
The Asterisk dialplan
-The Asterisk dialplan is divided into contexts. A context is simply a group of extensions. For each "line" that should be able to be called, an extension must be added to a context. Then, you configure the calling "line" to have access to this context. If you change the dialplan, you can use the Asterisk CLI command "dialplan reload" to load the new dialplan without disrupting service in your PBX. Extensions are routed according to priority and may be based on any set of characters (a-z), digits, #, and *. Please note that when matching a pattern, "N", "X", and "Z" are interpreted as classes of digits. For each extension, several actions may be listed and must be given a unique priority. When each action completes, the call continues at the next priority (except for some modules which use explicitly GOTO's). Extensions frequently have data they pass to the executing application (most frequently a string). You can see the available dialplan applications by entering the "core show applications" command in the CLI.
+The Asterisk dialplan is divided into contexts. A context is simply a group of extensions. For each "line" that should be able to be called, an extension must be added to a context. Then, you configure the calling "line" to have access to this context. If you change the dialplan, you can use the Asterisk CLI command "dialplan reload" to load the new dialplan without disrupting service in your PBX. Extensions are routed according to priority and may be based on any set of characters (a-z), digits, #, and *. Please note that when matching a pattern, "N", "X", and "Z" are interpreted as classes of digits. For each extension, several actions may be listed and must be given a unique priority. When each action completes, the call continues at the next priority (except for some modules which use explicitly GOTO's). Extensions frequently have data they pass to the executing application (most frequently a string). You can see the available dialplan applications by entering the "core show applications" command in the CLI. In this version of Asterisk, dialplan functions are added. These can be used as arguments to any application. For a list of the installed functions in your Asterisk, use the "core show functions" command. Example dialplan The example dial plan, in the configs/extensions.conf.sample file is installed as extensions.conf if you run "make samples" after installation of Asterisk. This file includes many more instructions and examples than this file, so it's worthwhile to read it. Special extensions There are some extensions with important meanings:
+s - What to do when an extension context is entered (unless overridden by the low level channel interface) This is used in macros, and
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In this version of Asterisk, dialplan functions are added. These can be used as arguments to any application. For a list of the installed functions in your Asterisk, use the "core show functions" command. Example dialplan The example dial plan, in the configs/extensions.conf.sample file is installed as extensions.conf if you run "make samples" after installation of Asterisk. This file includes many more instructions and examples than this file, so it's worthwhile to read it. Special extensions There are some extensions with important meanings:
-s - What to do when an extension context is entered (unless overridden by the low level channel interface) This is used in macros, and some special cases. "s" is not a generic catch-all wildcard extension. i - What to do if an invalid extension is entered h - The hangup extension, executed at hangup t - What to do if nothing is entered in the requisite amount of time. T - This is the extension that is executed when the 'absolute' timeout is reached. See "core show function TIMEOUT" for more information on setting timeouts. e - This extension will substitute as a catchall for any of the 'i', 't', or 'T' extensions, if any of them do not exist and catching the error in a single routine is desired. The function EXCEPTION may be used to query the type of exception or the location where it occurred.
+some special cases. "s" is not a generic catch-all wildcard extension. i - What to do if an invalid extension is entered h - The hangup extension, executed at hangup t - What to do if nothing is entered in the requisite amount of time. T - This is the extension that is executed when the 'absolute' timeout is reached. See "core show function TIMEOUT" for more information on setting timeouts. e - This extension will substitute as a catchall for any of the 'i', 't', or 'T' extensions, if any of them do not exist and catching the error in a single routine is desired. The function EXCEPTION may be used to query the type of exception or the location where it occurred.
And finally, the extension context "default" is used when either a) an extension context is deleted while an extension is in use, or b) a specific starting extension handler has not been defined (unless overridden by the low level channel interface).
IP Quality of Service
@@ -1481,63 +1663,58 @@
Asterisk supports different QoS settings at the application level for various protocols on both signaling and media. The Type of Service (TOS) byte can be set on outgoing IP packets for various protocols. The TOS byte is used by the network to provide some level of Quality of Service (QoS) even if the network is congested with other traffic. Asterisk running on Linux can also set 802.1p CoS marks in VLAN packets for the VoIP protocols it uses. This is useful when working in a switched environment. In fact Asterisk only set priority for Linux socket. For mapping this priority and VLAN CoS mark you need to use this command:
The table below shows all VoIP channel drivers and other Asterisk modules that support QoS settings for network traffic. It also shows the type(s) of traffic for which each module can support setting QoS settings. Table 2.1: Channel Driver QoS Settings
-Signaling chan_sip chan_skinny + + Audio + + Video + + Text +
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-chan_mgcp chan_unistm chan_h323 chan_iax2
-
-+ +
-
-+ + +
-
-+
+Signaling chan_sip chan_skinny chan_mgcp chan_unistm chan_h323 chan_iax2 + + + + + Audio + + + + + Video + + Text +
Table 2.2: Other ToS Settings
Signaling dundi.conf iaxprov.conf + (tos setting) + (tos setting) Audio Video Text
-IP TOS values The allowable values for any of the tos parameters are: CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, AF43 and ef (expedited forwarding),* The tos parameters also take numeric values.* Note that on a Linux system, Asterisk must be compiled with libcap in order to use the ef tos setting if Asterisk is not run as root. The lowdelay, throughput, reliability, mincost, and none values have been removed in current releases. 802.1p CoS values Because 802.1p uses 3 bits of the VLAN header, this parameter can take integer values from 0 to 7. Recommended values The recommended values shown below are also included in sample configuration files: Table 2.3: Recommended QoS Settings
+IP TOS values The allowable values for any of the tos parameters are: CS0, CS1, CS2, CS3, CS4, CS5, CS6,
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+CS7, AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, AF43 and ef (expedited forwarding),* The tos parameters also take numeric values.* Note that on a Linux system, Asterisk must be compiled with libcap in order to use the ef tos setting if Asterisk is not run as root. The lowdelay, throughput, reliability, mincost, and none values have been removed in current releases. 802.1p CoS values Because 802.1p uses 3 bits of the VLAN header, this parameter can take integer values from 0 to 7. Recommended values The recommended values shown below are also included in sample configuration files: Table 2.3: Recommended QoS Settings
tos Signaling Audio Video Text Other cs3 ef af41 af41 ef cos 3 5 4 3
-IAX2 In iax.conf, there is a "tos" parameter that sets the global default TOS for IAX packets generated by chan_iax2. Since IAX connections combine signalling, audio, and video into one UDP stream, it is not possible to set the TOS separately for the different types of traffic.
+IAX2 In iax.conf, there is a "tos" parameter that sets the global default TOS for IAX packets generated by chan_iax2. Since IAX connections combine signalling, audio, and video into one UDP stream, it is not possible to set the TOS separately for the different types of traffic. In iaxprov.conf, there is a "tos" parameter that tells the IAXy what TOS to set on packets it generates. As with the parameter in iax.conf, IAX packets generated by an IAXy cannot have different TOS settings based upon the type of packet. However different IAXy devices can have different TOS settings. SIP In sip.conf, there are four parameters that control the TOS settings: "tos_sip", "tos_audio", "tos_video" and "tos_text". tos_sip controls what TOS SIP call signaling packets are set to. tos_audio, tos_video and tos_text control what TOS values are used for RTP audio, video, and text packets, respectively. There are four parameters to control 802.1p CoS: "cos_sip", "cos_audio", "cos_video" and "cos_text". The behavior of these parameters is the same as for the SIP TOS settings described above.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In iaxprov.conf, there is a "tos" parameter that tells the IAXy what TOS to set on packets it generates. As with the parameter in iax.conf, IAX packets generated by an IAXy cannot have different TOS settings based upon the type of packet. However different IAXy devices can have different TOS settings. SIP In sip.conf, there are four parameters that control the TOS settings: "tos_sip", "tos_audio", "tos_video" and "tos_text". tos_sip controls what TOS SIP call signaling packets are set to. tos_audio, tos_video and tos_text control what TOS values are used for RTP audio, video, and text packets, respectively. There are four parameters to control 802.1p CoS: "cos_sip", "cos_audio", "cos_video" and "cos_text". The behavior of these parameters is the same as for the SIP TOS settings described above. Other RTP channels chan_mgcp, chan_h323, chan_skinny and chan_unistim also support TOS and CoS via setting tos and cos parameters in their corresponding configuration files. Naming style and behavior are the same as for chan_sip. Reference IEEE 802.1Q Standard: http://standards.ieee.org/getieee802/download/802.1Q-1998.pdfRelated protocols: IEEE 802.3, 802.2, 802.1D, 802.1Q RFC 2474 - "Definition of the Differentiated Services Field (DS field) in the IPv4 and IPv6 Headers", Nichols, K., et al, December 1998. IANA Assignments, DSCP registry Differentiated Services Field Codepoints http://www.iana.org/assignments/dscp-registry To get the most out of setting the TOS on packets generated by Asterisk, you will need to ensure that your network handles packets with a TOS properly. For Cisco devices, see the previously mentioned "Enterprise QoS Solution Reference Network Design Guide". For Linux systems see the "Linux Advanced Routing & Traffic Control HOWTO" at http://www.lartc.org/. For more information on Quality of Service for VoIP networks see the "Enterprise QoS Solution Reference Network Design Guide" version 3.3 from Cisco at: http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration_09186a008049b062.pdf
+Other RTP channels chan_mgcp, chan_h323, chan_skinny and chan_unistim also support TOS and CoS via setting tos and cos parameters in their corresponding configuration files. Naming style and behavior are the same as for chan_sip. Reference IEEE 802.1Q Standard: http://standards.ieee.org/getieee802/download/802.1Q-1998.pdfRelated protocols: IEEE 802.3, 802.2, 802.1D, 802.1Q RFC 2474 - "Definition of the Differentiated Services Field (DS field) in the IPv4 and IPv6 Headers", Nichols, K., et al, December 1998. IANA Assignments, DSCP registry Differentiated Services Field Codepoints http://www.iana.org/assignments/dscp-registry To get the most out of setting the TOS on packets generated by Asterisk, you will need to ensure that your network handles packets with a TOS properly. For Cisco devices, see the previously mentioned "Enterprise QoS Solution Reference Network Design Guide". For Linux systems see the "Linux Advanced Routing & Traffic Control HOWTO" at http://www.lartc.org/. For more information on Quality of Service for VoIP networks see the "Enterprise QoS Solution Reference Network Design Guide" version 3.3 from Cisco at: http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration_09186a008049b062.pdf
MP3 Support
MP3 Music On Hold
Use of the mpg123 for your music on hold is no longer recommended and is now officially deprecated. You should now use one of the native formats for your music on hold selections. However, if you still need to use mp3 as your music on hold format, a format driver for reading MP3 audio files is available in the asterisk-addons SVN repository on svn.digium.com or in the asterisk-addons release at http://downloads.asterisk.org/pub/telephony/asterisk/.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-ICES
+ICES
The advent of icecast into Asterisk allows you to do neat things like have a caller stream right into an ice-cast stream as well as using chan_local to place things like conferences, music on hold, etc. into the stream. You'll need to specify a config file for the ices encoder. An example is included in contrib/asterisk-ices.xml.
Database Support Configuration
Top-level page for information about Database support.
Realtime Database Configuration
-Introduction
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Introduction
The Asterisk Realtime Architecture is a new set of drivers and functions implemented in Asterisk. The benefits of this architecture are many, both from a code management standpoint and from an installation perspective. The ARA is designed to be independent of storage. Currently, most drivers are based on SQL, but the architecture should be able to handle other storage methods in the future, like LDAP. The main benefit comes in the database support. In Asterisk v1.0 some functions supported MySQL database, some PostgreSQL and other ODBC. With the ARA, we have a unified database interface internally in Asterisk, so if one function supports database integration, all databases that has a realtime driver will be supported in that function. Currently there are three realtime database drivers:
1. ODBC: Support for UnixODBC, integrated into Asterisk The UnixODBC subsystem supports many different databases, please check www.unixodbc.org for more information. 2. MySQL: Native support for MySQL, integrated into Asterisk 3. PostgreSQL: Native support for Postgres, integrated into Asterisk
-Two modes: Static and Realtime The ARA realtime mode is used to dynamically load and update objects. This mode is used in the SIP and IAX2 channels, as well as in the voicemail system. For SIP and IAX2 this is similar to the v1.0 MYSQL_FRIENDS functionality. With the ARA, we now support many more databases for dynamic configuration of phones. The ARA static mode is used to load configuration files. For the Asterisk modules that read configurations, there's no difference between a static file in the file system, like extensions.conf, and a configuration loaded from a database. You just have to always make sure the var_metric values are properly set and ordered as you expect in your database server if you're using the static mode with ARA (either sequentially or with the same var_metric value for everybody). If you have an option that depends on another one in a given configuration file (i.e, 'musiconhold' depending on 'agent' from agents.conf) but their var_metric are not sequential you'll probably get default values being assigned for those options instead of the desired ones. You can still use the
-
+Two modes: Static and Realtime The ARA realtime mode is used to dynamically load and update objects. This mode is used in the SIP and IAX2 channels, as well as in the voicemail system. For SIP and IAX2 this is similar to the v1.0 MYSQL_FRIENDS functionality. With the ARA, we now support many more databases for dynamic configuration of phones. The ARA static mode is used to load configuration files. For the Asterisk modules that read configurations, there's no difference between a static file in the file system, like extensions.conf, and a configuration loaded from a database. You just have to always make sure the var_metric values are properly set and ordered as you expect in your database server if you're using the static mode with ARA (either sequentially or with the same var_metric value for everybody). If you have an option that depends on another one in a given configuration file (i.e, 'musiconhold' depending on 'agent' from agents.conf) but their var_metric are not sequential you'll probably get default values being assigned for those options instead of the desired ones. You can still use the same var_metric for all entries in your DB, just make sure the entries are recorded in an order that does not break the option dependency. That doesn't happen when you use a static file in the file system. Although this might be interpreted as a bug or limitation, it is not. Realtime SIP friends The SIP realtime objects are users and peers that are loaded in memory when needed, then deleted. This means that Asterisk currently can't handle voicemail notification and NAT keepalives for these peers. Other than that, most of the functionality works the same way for realtime friends as for the ones in static configuration. With caching, the device stays in memory for a specified time. More information about this is to be found in the sip.conf sample file.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-same var_metric for all entries in your DB, just make sure the entries are recorded in an order that does not break the option dependency. That doesn't happen when you use a static file in the file system. Although this might be interpreted as a bug or limitation, it is not. Realtime SIP friends The SIP realtime objects are users and peers that are loaded in memory when needed, then deleted. This means that Asterisk currently can't handle voicemail notification and NAT keepalives for these peers. Other than that, most of the functionality works the same way for realtime friends as for the ones in static configuration. With caching, the device stays in memory for a specified time. More information about this is to be found in the sip.conf sample file. If you specify a separate family called "sipregs" SIP registration data will be stored in that table and not in the "sippeers" table. Realtime H.323 friends Like SIP realtime friends, H.323 friends also can be configured using dynamic realtime objects. New function in the dial plan: The Realtime Switch The realtime switch is more than a port of functionality in v1.0 to the new architecture, this is a new feature of Asterisk based on the ARA. The realtime switch lets your Asterisk server do database lookups of extensions in realtime from your dial plan. You can have many Asterisk servers sharing a dynamically updated dial plan in real time with this solution. Note that this switch does NOT support Caller ID matching, only extension name or pattern matching. Capabilities The realtime Architecture lets you store all of your configuration in databases and reload it whenever you want. You can force a reload over the AMI, Asterisk Manager Interface or by calling Asterisk from a shell script with
+If you specify a separate family called "sipregs" SIP registration data will be stored in that table and not in the "sippeers" table. Realtime H.323 friends Like SIP realtime friends, H.323 friends also can be configured using dynamic realtime objects. New function in the dial plan: The Realtime Switch The realtime switch is more than a port of functionality in v1.0 to the new architecture, this is a new feature of Asterisk based on the ARA. The realtime switch lets your Asterisk server do database lookups of extensions in realtime from your dial plan. You can have many Asterisk servers sharing a dynamically updated dial plan in real time with this solution. Note that this switch does NOT support Caller ID matching, only extension name or pattern matching. Capabilities The realtime Architecture lets you store all of your configuration in databases and reload it whenever you want. You can force a reload over the AMI, Asterisk Manager Interface or by calling Asterisk from a shell script with
You may also dynamically add SIP and IAX devices and extensions and making them available without a reload, by using the realtime objects and the realtime switch. Configuration in extconfig.conf You configure the ARA in extconfig.conf (yes, it's a strange name, but is was defined in the early days of the realtime architecture and kind of stuck). The part of Asterisk that connects to the ARA use a well defined family name to find the proper database driver. The syntax is easy:
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-=> <realtime driver="driver">,<db name="name">[,<table>] ]]></table></db></realtime>
+=> <realtime driver="driver">,<db name="name">[,<table>] ]]></table></db></realtime>
The options following the realtime driver identified depends on the driver. Defined well-known family names are:
sippeers, sipusers - SIP peers and users iaxpeers, iaxusers - IAX2 peers and users voicemail - Voicemail accounts queues - Queues queue_members - Queue members extensions - Realtime extensions (switch)
-Voicemail storage with the support of ODBC described in file docs/odbcstorage.tex ([12.1|]). Limitations Currently, realtime extensions do not support realtime hints. There is a workaround available by using func_odbc. See the sample func_odbc.conf for more information. FreeTDS supported with connection pooling In order to use a FreeTDS-based database with realtime, you need to turn connection pooling on in res_odbc.conf. This is due to a limitation within the FreeTDS protocol itself. Please note that this includes databases such as MS SQL Server and Sybase. This support is new in the current release. You may notice a performance issue under high load using UnixODBC. The UnixODBC driver supports threading but you must specifically enable threading within the UnixODBC configuration file like below for each engine:
+Voicemail storage with the support of ODBC described in ODBC Voicemail Storage. Limitations
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Currently, realtime extensions do not support realtime hints. There is a workaround available by using func_odbc. See the sample func_odbc.conf for more information. FreeTDS supported with connection pooling In order to use a FreeTDS-based database with realtime, you need to turn connection pooling on in res_odbc.conf. This is due to a limitation within the FreeTDS protocol itself. Please note that this includes databases such as MS SQL Server and Sybase. This support is new in the current release. You may notice a performance issue under high load using UnixODBC. The UnixODBC driver supports threading but you must specifically enable threading within the UnixODBC configuration file like below for each engine:
This will enable the driver to service many requests at a time, rather than serially.
FreeTDS
@@ -1548,25 +1725,24 @@
So, you want to avoid talking to pesky telemarketers/charity seekers/poll takers/magazine renewers/etc?
FTC Don't Call List
-The FTC "Don't call" database, this alone will reduce your telemarketing call volume
+The FTC "Don't call" database, this alone will reduce your telemarketing call volume considerably. (see: https://www.donotcall.gov/default.aspx ) But, this list won't protect from the Charities, previous business relationships, etc.
+Fighting Autodialers
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Zapateller detects if callerid is present, and if not, plays the da-da-da tones that immediately precede messages like, "I'm sorry, the number you have called is no longer in service." Most humans, even those with unlisted/callerid-blocked numbers, will not immediately slam the handset down on the hook the moment they hear the three tones. But autodialers seem pretty quick to do this. I just counted 40 hangups in Zapateller over the last year in my CDR's. So, that is possibly 40 different telemarketers/charities that have hopefully slashed my back-waters, out-of-the-way, humble home phone number from their lists.
-considerably. (see: https://www.donotcall.gov/default.aspx ) But, this list won't protect from the Charities, previous business relationships, etc.
-Fighting Autodialers
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Zapateller detects if callerid is present, and if not, plays the da-da-da tones that immediately precede messages like, "I'm sorry, the number you have called is no longer in service." Most humans, even those with unlisted/callerid-blocked numbers, will not immediately slam the handset down on the hook the moment they hear the three tones. But autodialers seem pretty quick to do this. I just counted 40 hangups in Zapateller over the last year in my CDR's. So, that is possibly 40 different telemarketers/charities that have hopefully slashed my back-waters, out-of-the-way, humble home phone number from their lists. I highly advise Zapateller for those seeking the nirvana of "privacy".
+I highly advise Zapateller for those seeking the nirvana of "privacy".
Fighting Empty Caller ID
A considerable percentage of the calls you don't want, come from sites that do not provide CallerID. Null callerid's are a fact of life, and could be a friend with an unlisted number, or some charity looking for a handout. The PrivacyManager application can help here. It will ask the caller to enter a 10-digit phone number. They get 3 tries(configurable), and this is configurable, with control being passed to next priority where you can check the channelvariable PRIVACYMGRSTATUS. If the callerid was valid this variable will have the value SUCCESS, otherwise it will have the value FAILED. PrivacyManager can't guarantee that the number they supply is any good, tho, as there is no way to find out, short of hanging up and calling them back. But some answers are obviously wrong. For instance, it seems a common practice for telemarketers to use your own number instead of giving you theirs. A simple test can detect this. More advanced tests would be to look for 555 numbers, numbers that count up or down, numbers of all the same digit, etc. PrivacyManager can be told about a context where you can have patterns that describe valid phone numbers. If none of the patterns match the input, it will be considered a non-valid phonenumber and the user can try again until the retry counter is reached. This helps in resolving the issues stated in the previous paragraph. My logs show that 39 have hung up in the PrivacyManager script over the last year. (Note: Demanding all unlisted incoming callers to enter their CID may not always be appropriate for all users. Another option might be to use call screening. See below.)
Using Welcome Menus for Privacy
-Experience has shown that simply presenting incoming callers with a set of options, no matter how simple, will deter them from calling you. In the vast majority of situations, a telemarketer will
+Experience has shown that simply presenting incoming callers with a set of options, no matter how simple, will deter them from calling you. In the vast majority of situations, a telemarketer will simply hang up rather than make a choice and press a key. This will also immediately foil all autodialers that simply belch a message in your ear and hang up. Example usage of Zapateller and PrivacyManager
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-simply hang up rather than make a choice and press a key. This will also immediately foil all autodialers that simply belch a message in your ear and hang up. Example usage of Zapateller and PrivacyManager
-s,1,Answer exten => s,2,SetVar,repeatcount=0 exten => s,3,Zapateller,nocallerid exten => s,4,PrivacyManager ;; do this if they don't enter a number to Privacy Manager exten => s,5,GotoIf($[ "${PRIVACYMGRSTATUS}" = "FAILED" ]?s,105) exten => s,6,GotoIf($[ "${CALLERID(num)}" = "7773334444" & "${CALLERID(name)}" : "Privacy Manager" ]?callerid-liar,s,1:s,7) exten => s,7,Dial(SIP/yourphone) exten => s,105,Background(tt-allbusy) exten => s,106,Background(tt-somethingwrong) exten => s,107,Background(tt-monkeysintro) exten => s,108,Background(tt-monkeys) exten => s,109,Background(tt-weasels) exten => s,110,Hangup ]]>
+s,1,Answer exten => s,2,SetVar,repeatcount=0 exten => s,3,Zapateller,nocallerid exten => s,4,PrivacyManager ;; do this if they don't enter a number to Privacy Manager exten => s,5,GotoIf($[ "${PRIVACYMGRSTATUS}" = "FAILED" ]?s,105) exten => s,6,GotoIf($[ "${CALLERID(num)}" = "7773334444" & "${CALLERID(name)}" : "Privacy Manager" ]?callerid-liar,s,1:s,7) exten => s,7,Dial(SIP/yourphone) exten => s,105,Background(tt-allbusy) exten => s,106,Background(tt-somethingwrong) exten => s,107,Background(tt-monkeysintro) exten => s,108,Background(tt-monkeys) exten => s,109,Background(tt-weasels) exten => s,110,Hangup ]]>
I suggest using Zapateller at the beginning of the context, before anything else, on incoming calls.This can be followed by the PrivacyManager App. Make sure, if you do the PrivacyManager app, that you take care of the error condition! or their non-compliance will be rewarded with access to the system. In the above, if they can't enter a 10-digit number in 3 tries, they get the humorous "I'm sorry, but all household members are currently helping other telemarketers...", "something is terribly wrong", "monkeys have carried them away...", various loud monkey screechings, "weasels have...", and a hangup. There are plenty of other paths to my torture scripts, I wanted to have some fun. In nearly all cases now, the telemarketers/charity-seekers that usually get thru to my main intro, hang up. I guess they can see it's pointless, or the average telemarketer/charity-seeker is instructed not to enter options when encountering such systems. Don't know.
Making life difficult for telemarketers
@@ -1574,13 +1750,12 @@
I have developed an elaborate script to torture Telemarketers, and entertain friends. While mostly those that call in and traverse my teletorture scripts are those we know, and are doing so out of curiosity, there have been these others from Jan 1st,2004 thru June 1st, 2004: (the numbers may or may not be correct.)
603890zzzz - hung up telemarket options. "Integrated Sale" - called a couple times. hung up in telemarket options "UNITED STATES GOV" - maybe a military recruiter, trying to lure one of my sons. 800349zzzz - hung up in charity intro 800349zzzz - hung up in charity choices, intro, about the only one who actually travelled to the bitter bottom of the scripts! 216377zzzz - hung up the magazine section 626757zzzz = "LIR " (pronounced "Liar"?) hung up in telemarket intro, then choices 757821zzzz - hung up in new magazine subscription options.
-That averages out to maybe 1 a month. That puts into question whether the ratio of the amount of labor it took to make the scripts versus the benefits of lower call volumes was worth it, but,
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-well, I had fun, so what the heck. But, that's about it. Not a whole lot. But I haven't had to say "NO" or "GO AWAY" to any of these folks for about a year now ...!
+That averages out to maybe 1 a month. That puts into question whether the ratio of the amount of labor it took to make the scripts versus the benefits of lower call volumes was worth it, but, well, I had fun, so what the heck. But, that's about it. Not a whole lot. But I haven't had to say "NO" or "GO AWAY" to any of these folks for about a year now ...!
Using Call Screening
-Another option is to use call screening in the Dial command. It has two main privacy modes, one that remembers the CID of the caller, and how the callee wants the call handled, and the other, which does not have a "memory". Turning on these modes in the dial command results in this sequence of events, when someone calls you at an extension: The caller calls the Asterisk system, and at some point, selects an option or enters an extension number that would dial your extension. Before ringing your extension, the caller is asked to supply an introduction. The application asks them: "After the tone, say your name". They are allowed 4 seconds of introduction. After that, they are told "Hang on, we will attempt to connect you to your party. Depending on your dial options, they will hear ringing indications, or get music on hold. I suggest music on hold. Your extension is then dialed. When (and if) you pick up, you are told that a caller presenting themselves as their recorded intro is played is calling, and you have options, like being connected, sending them to voicemail, torture, etc. You make your selection, and the call is handled as you chose. There are some variations, and these will be explained in due course. To use these options, set your Dial to something like:
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Another option is to use call screening in the Dial command. It has two main privacy modes, one that remembers the CID of the caller, and how the callee wants the call handled, and the other, which does not have a "memory". Turning on these modes in the dial command results in this sequence of events, when someone calls you at an extension: The caller calls the Asterisk system, and at some point, selects an option or enters an extension number that would dial your extension. Before ringing your extension, the caller is asked to supply an introduction. The application asks them: "After the tone, say your name". They are allowed 4 seconds of introduction. After that, they are told "Hang on, we will attempt to connect you to your party. Depending on your dial options, they will hear ringing indications, or get music on hold. I suggest music on hold. Your extension is then dialed. When (and if) you pick up, you are told that a caller presenting themselves as their recorded intro is played is calling, and you have options, like being connected, sending them to voicemail, torture, etc. You make your selection, and the call is handled as you chose. There are some variations, and these will be explained in due course. To use these options, set your Dial to something like:
3,3,Dial(DAHDI/5r3&DAHDI/6r3,35,tmPA(beep)) ]]>
or:
@@ -1589,11 +1764,11 @@
or:
3,3,Dial(DAHDI/5r3&DAHDI/6r3,35,tmpA(beep)) ]]>
-The 't' allows the dialed party to transfer the call using '#'. It's optional. The 'm' is for music on hold. I suggest it. Otherwise, the calling party gets to hear all the ringing, and lack thereof. It is generally better to use Music On Hold. Lots of folks hang up after the 3rd or 4th ring, and you might lose the call before you can enter an option! The 'P' option alone will database everything using the extension as a default 'tree'. To get
+The 't' allows the dialed party to transfer the call using '#'. It's optional. The 'm' is for music on hold. I suggest it. Otherwise, the calling party gets to hear all the ringing, and lack thereof. It is generally better to use Music On Hold. Lots of folks hang up after the 3rd or 4th ring, and you might lose the call before you can enter an option! The 'P' option alone will database everything using the extension as a default 'tree'. To get multiple extensions sharing the same database, use P(some-shared-key). Also, if the same person has multiple extensions, use P(unique-id) on all their dial commands. Use little 'p' for screening. Every incoming call will include a prompt for the callee's choice. The A(beep), will generate a 'beep' that the callee will hear if they choose to talk to the caller. It's
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-multiple extensions sharing the same database, use P(some-shared-key). Also, if the same person has multiple extensions, use P(unique-id) on all their dial commands. Use little 'p' for screening. Every incoming call will include a prompt for the callee's choice. The A(beep), will generate a 'beep' that the callee will hear if they choose to talk to the caller. It's kind of a prompt to let the callee know that he has to say 'hi'. It's not required, but I find it helpful. When there is no CallerID, P and p options will always record an intro for the incoming caller. This intro will be stored temporarily in the /var/lib/asterisk/sounds/priv-callerintros dir, under the name NOCALLERID_extension channelname and will be erased after the callee decides what to do with the call. Of course, NOCALLERID is not stored in the database. All those with no CALLERID will be considered "Unknown".
+kind of a prompt to let the callee know that he has to say 'hi'. It's not required, but I find it helpful. When there is no CallerID, P and p options will always record an intro for the incoming caller. This intro will be stored temporarily in the /var/lib/asterisk/sounds/priv-callerintros dir, under the name NOCALLERID_extension channelname and will be erased after the callee decides what to do with the call. Of course, NOCALLERID is not stored in the database. All those with no CALLERID will be considered "Unknown".
Call Screening Options
Two other options exist, that act as modifiers to the privacy options 'P' and 'p'. They are 'N' and 'n'. You can enter them as dialing options, but they only affect things if P or p are also in the options. 'N' says, "Only screen the call if no CallerID is present". So, if a callerID were supplied, it will come straight thru to your extension. 'n' says, "Don't save any introductions". Folks will be asked to supply an introduction ("At the tone, say your name") every time they call. Their introductions will be removed after the callee makes a choice on how to handle the call. Whether the P option or the p option is used, the incoming caller will have to supply their intro every time they call.
@@ -1603,19 +1778,17 @@
The 'P' option stores the CALLERID in the database, along with the callee's choice of actions, as a convenience to the CALLEE, whereas introductions are stored and re-used for the convenience of the CALLER.
Introductions
-Unless instructed to not save introductions (see the 'n' option above), the screening modes will save the recordings of the caller's names in the directory /var/lib/asterisk/sounds/priv-callerintros, if they have a CallerID. Just the 10-digit callerid numbers are used as filenames, with a ".gsm" at the end. Having these recordings around can be very useful, however... First of all, if a callerid is supplied, and a recorded intro for that number is already present, the caller is spared the inconvenience of having to supply their name, which shortens their call a bit.
+Unless instructed to not save introductions (see the 'n' option above), the screening modes will save the recordings of the caller's names in the directory /var/lib/asterisk/sounds/priv-callerintros, if they have a CallerID. Just the 10-digit callerid numbers are used as filenames, with a ".gsm" at the end. Having these recordings around can be very useful, however... First of all, if a callerid is supplied, and a recorded intro for that number is already present, the caller is spared the inconvenience of having to supply their name, which shortens their call a bit. Next of all, these intros can be used in voicemail, played over loudspeakers, and perhaps other nifty things. For instance:
+s,6,Set(PATH=/var/lib/asterisk/sounds/priv-callerintros) exten => s,7,System(/usr/bin/play ${PATH}/${CALLERID(num)}.gsm&,0) ]]>
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Next of all, these intros can be used in voicemail, played over loudspeakers, and perhaps other nifty things. For instance:
-s,6,Set(PATH=/var/lib/asterisk/sounds/priv-callerintros) exten => s,7,System(/usr/bin/play ${PATH}/${CALLERID(num)}.gsm&,0) ]]>
-
-When a call comes in at the house, the above priority gets executed, and the callers intro is played over the phone systems speakers. This gives us a hint who is calling. (Note: the ,0 option at the end of the System command above, is a local mod I made to the System command. It forces a 0 result code to be returned, whether the play command successfully completed or not. Therefore, I don't have to ensure that the file exists or not. While I've turned this mod into the developers, it hasn't been incorporated yet. You might want to write an AGI or shell script to handle it a little more intelligently) And one other thing. You can easily supply your callers with an option to listen to, and re-record their introductions. Here's what I did in the home system's extensions.conf. (assume that a Goto(home-introduction,s,1) exists somewhere in your main menu as an option):
-s,1,Background(intro-options) ;; Script: ;; To hear your Introduction, dial 1. ;; to record a new introduction, dial 2. ;; to return to the main menu, dial 3. ;; to hear what this is all about, dial 4. exten => 1,1,Playback,priv-callerintros/${CALLERID(num)} exten => 1,2,Goto(s,1) exten => 2,1,Goto(home-introduction-record,s,1) exten => 3,1,Goto(homeline,s,7) exten => 4,1,Playback(intro-intro) ;; Script: ;; This may seem a little strange, but it really is a neat ;; thing, both for you and for us. I've taped a short introduction ;; for many of the folks who normally call us. Using the Caller ID ;; from each incoming call, the system plays the introduction ;; for that phone number over a speaker, just as the call comes in. ;; This helps the folks ;; here in the house more quickly determine who is calling. ;; and gets the right ones to gravitate to the phone. ;; You can listen to, and record a new intro for your phone number ;; using this menu. exten => 4,2,Goto(s,1) exten => t,1,Goto(s,1) exten => i,1,Background(invalid) exten => i,2,Goto(s,1) exten => o,1,Goto(s,1) [home-introduction-record] exten => s,1,Background(intro-record-choices) ;; Script: ;; If you want some advice about recording your ;; introduction, dial 1. ;; otherwise, dial 2, and introduce yourself after ;; the beep. exten => 1,1,Playback(intro-record) ;; Your introduction should be short and sweet and crisp. ;; Your introduction will be limited to 4 seconds. ;; This is NOT meant to be a voice mail message, so ;; please, don't say anything about why you are calling. ;; After we are done making the recording, your introduction ;; will be saved for playback.
+When a call comes in at the house, the above priority gets executed, and the callers intro is played over the phone systems speakers. This gives us a hint who is calling. (Note: the ,0 option at the end of the System command above, is a local mod I made to the System command. It forces a 0 result code to be returned, whether the play command successfully completed or not. Therefore, I don't have to ensure that the file exists or not. While I've turned this mod into the developers, it hasn't been incorporated yet. You might want to write an AGI or shell script to handle it a little more intelligently) And one other thing. You can easily supply your callers with an option to listen to, and re-record their introductions. Here's what I did in the home system's extensions.conf. (assume that a Goto(home-introduction,s,1) exists somewhere in your main menu as an option):
+s,1,Background(intro-options) ;; Script: ;; To hear your Introduction, dial 1. ;; to record a new introduction, dial 2. ;; to return to the main menu, dial 3. ;; to hear what this is all about, dial 4. exten => 1,1,Playback,priv-callerintros/${CALLERID(num)} exten => 1,2,Goto(s,1) exten => 2,1,Goto(home-introduction-record,s,1) exten => 3,1,Goto(homeline,s,7) exten => 4,1,Playback(intro-intro) ;; Script: ;; This may seem a little strange, but it really is a neat ;; thing, both for you and for us. I've taped a short introduction ;; for many of the folks who normally call us. Using the Caller ID ;; from each incoming call, the system plays the introduction ;; for that phone number over a speaker, just as the call comes in. ;; This helps the folks ;; here in the house more quickly determine who is calling. ;; and gets the right ones to gravitate to the phone. ;; You can listen to, and record a new intro for your phone number ;; using this menu. exten => 4,2,Goto(s,1) exten => t,1,Goto(s,1) exten => i,1,Background(invalid) exten => i,2,Goto(s,1) exten => o,1,Goto(s,1) [home-introduction-record] exten => s,1,Background(intro-record-choices) ;; Script: ;; If you want some advice about recording your ;; introduction, dial 1. ;; otherwise, dial 2, and introduce yourself after ;; the beep. exten => 1,1,Playback(intro-record) ;; Your introduction should be short and sweet and crisp. ;; Your introduction will be limited to 4 seconds. ;; This is NOT meant to be a voice mail message, so ;; please, don't say anything about why you are calling. ;; After we are done making the recording, your introduction ;; will be saved for playback. ;; If you are the only person that would call from this number, ;; please state your name. Otherwise, state your business ;; or residence name instead. For instance, if you are ;; friend of the family, say, Olie McPherson, and both ;; you and your kids might call here a lot, you might ;; say: "This is the distinguished Olie McPherson Residence!" ;; If you are the only person calling, you might say this: ;; "This is the illustrious Kermit McFrog! Pick up the Phone, someone!!
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-;; If you are the only person that would call from this number, ;; please state your name. Otherwise, state your business ;; or residence name instead. For instance, if you are ;; friend of the family, say, Olie McPherson, and both ;; you and your kids might call here a lot, you might ;; say: "This is the distinguished Olie McPherson Residence!" ;; If you are the only person calling, you might say this: ;; "This is the illustrious Kermit McFrog! Pick up the Phone, someone!! ;; If you are calling from a business, you might pronounce a more sedate introduction, like, ;; "Fritz from McDonalds calling.", or perhaps the more original introduction: ;; "John, from the Park County Morgue. You stab 'em, we slab 'em!". ;; Just one caution: the kids will hear what you record every time ;; you call. So watch your language! ;; I will begin recording after the tone. ;; When you are done, hit the # key. Gather your thoughts and get ;; ready. Remember, the # key will end the recording, and play back ;; your intro. Good Luck, and Thank you!" exten => 1,2,Goto(2,1) exten => 2,1,Background(intro-start) ;; OK, here we go! After the beep, please give your introduction. exten => 2,2,Background(beep) exten => 2,3,Record(priv-callerintros/${CALLERID(num)}:gsm,4) exten => 2,4,Background(priv-callerintros/${CALLERID(num)}) exten => 2,5,Goto(home-introduction,s,1) exten => t,1,Goto(s,1) exten => i,1,Background(invalid) exten => i,2,Goto(s,1) exten => o,1,Goto(s,1) ]]>
+;; If you are calling from a business, you might pronounce a more sedate introduction, like, ;; "Fritz from McDonalds calling.", or perhaps the more original introduction: ;; "John, from the Park County Morgue. You stab 'em, we slab 'em!". ;; Just one caution: the kids will hear what you record every time ;; you call. So watch your language! ;; I will begin recording after the tone. ;; When you are done, hit the # key. Gather your thoughts and get ;; ready. Remember, the # key will end the recording, and play back ;; your intro. Good Luck, and Thank you!" exten => 1,2,Goto(2,1) exten => 2,1,Background(intro-start) ;; OK, here we go! After the beep, please give your introduction. exten => 2,2,Background(beep) exten => 2,3,Record(priv-callerintros/${CALLERID(num)}:gsm,4) exten => 2,4,Background(priv-callerintros/${CALLERID(num)}) exten => 2,5,Goto(home-introduction,s,1) exten => t,1,Goto(s,1) exten => i,1,Background(invalid) exten => i,2,Goto(s,1) exten => o,1,Goto(s,1) ]]>
In the above, you'd most likely reword the messages to your liking, and maybe do more advanced things with the 'error' conditions (i,o,t priorities), but I hope it conveys the idea. Asterisk Extension Language (AEL) Top-level page for all things AEL
Introduction to AEL
@@ -1623,12 +1796,14 @@
AEL is a specialized language intended purely for describing Asterisk dial plans. The current version was written by Steve Murphy, and is a rewrite of the original version. This new version further extends AEL, and provides more flexible syntax, better error messages, and some missing functionality. AEL is really the merger of 4 different 'languages', or syntaxes:
1. The first and most obvious is the AEL syntax itself. A BNF is provided near the end of this document. 2. The second syntax is the Expression Syntax, which is normally handled by Asterisk extension engine, as expressions enclosed in $[...]. The right hand side of assignments are wrapped in $[ ... ] by AEL, and so are the if and while expressions, among others. 3. The third syntax is the Variable Reference Syntax, the stuff enclosed in ${..} curly braces. It's a bit more involved than just putting a variable name in there. You can include one of dozens of 'functions', and their arguments, and there are even some string manipulation notation in there. 4. The last syntax that underlies AEL, and is not used directly in AEL, is the Extension Language Syntax. The extension language is what you see in extensions.conf, and AEL compiles the higher level AEL language into extensions and priorities, and passes them via function calls into Asterisk. Embedded in this language is the Application/AGI commands, of which one application call per step, or priority can be made. You can think of this as a "macro assembler" language, that AEL will compile into.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Any programmer of AEL should be familiar with its syntax, of course, as well as the Expression syntax, and the Variable syntax.
+Any programmer of AEL should be familiar with its syntax, of course, as well as the Expression syntax, and the Variable syntax.
AEL and Asterisk in a Nutshell
-Asterisk acts as a server. Devices involved in telephony, like DAHDI cards, or Voip phones, all indicate some context that should be activated in their behalf. See the config file formats for IAX, SIP, dahdi.conf, etc. They all help describe a device, and they all specify a context to activate when somebody picks up a phone, or a call comes in from the phone company, or a voip phone, etc.
+Asterisk acts as a server. Devices involved in telephony, like DAHDI cards, or Voip phones, all
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+indicate some context that should be activated in their behalf. See the config file formats for IAX, SIP, dahdi.conf, etc. They all help describe a device, and they all specify a context to activate when somebody picks up a phone, or a call comes in from the phone company, or a voip phone, etc.
AEL about Contexts
Contexts are a grouping of extensions. Contexts can also include other contexts. Think of it as a sort of merge operation at runtime, whereby the included context's extensions are added to the contexts making the inclusion.
@@ -1638,12 +1813,13 @@
AEL about Macros
Think of a macro as a combination of a context with one nameless extension, and a subroutine. It has arguments like a subroutine might. A macro call can be made within an extension, and the individual statements there are executed until it ends. At this point, execution returns to the next statement after the macro call. Macros can call other macros. And they work just like function calls.
+AEL about Applications
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Application calls, like "Dial()", or "Hangup()", or "Answer()", are available for users to use to accomplish the work of the dialplan. There are over 145 of them at the moment this was written, and the list grows as new needs and wants are uncovered. Some applications do fairly simple
-AEL about Applications
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application calls, like "Dial()", or "Hangup()", or "Answer()", are available for users to use to accomplish the work of the dialplan. There are over 145 of them at the moment this was written, and the list grows as new needs and wants are uncovered. Some applications do fairly simple things, some provide amazingly complex services. Hopefully, the above objects will allow you do anything you need to in the Asterisk environment!
+things, some provide amazingly complex services. Hopefully, the above objects will allow you do anything you need to in the Asterisk environment!
Getting Started with AEL
The AEL parser (res_ael.so) is completely separate from the module that parses extensions.conf (pbx_config.so). To use AEL, the only thing that has to be done is the module res_ael.so must be loaded by Asterisk. This will be done automatically if using 'autoload=yes' in /etc/asterisk/modules.conf. When the module is loaded, it will look for 'extensions.ael' in /etc/asterisk/. extensions.conf and extensions.ael can be used in conjunction with each other if that is what is desired. Some users may want to keep extensions.conf for the features that are configured in the 'general' section of extensions.conf. To reload extensions.ael, the following command can be issued at the CLI:
@@ -1665,9 +1841,11 @@
About "aelparse"
+You can use the "aelparse" program to check your extensions.ael file before feeding it to asterisk. Wouldn't it be nice to eliminate most errors before giving the file to asterisk? aelparse is compiled in the utils directory of the asterisk release. It isn't installed anywhere (yet).
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-You can use the "aelparse" program to check your extensions.ael file before feeding it to asterisk. Wouldn't it be nice to eliminate most errors before giving the file to asterisk? aelparse is compiled in the utils directory of the asterisk release. It isn't installed anywhere (yet). You can copy it to your favorite spot in your PATH. aelparse has two optional arguments:
+You can copy it to your favorite spot in your PATH. aelparse has two optional arguments:
1. -d - Override the normal location of the config file dir, (usually /etc/asterisk), and use the current directory instead as the config file dir. Aelparse will then expect to find the file "./extensions.ael" in the current directory, and any included files in the current directory as well. 2. -n - Don't show all the function calls to set priorities and contexts within asterisk. It will just show the errors and warnings from the parsing and semantic checking phases.
General Notes about AEL Syntax
@@ -1683,11 +1861,11 @@
AEL Keywords
The AEL keywords are case-sensitive. If an application name and a keyword overlap, there is probably good reason, and you should consider replacing the application call with an AEL statement. If you do not wish to do so, you can still use the application, by using a capitalized letter somewhere in its name. In the Asterisk extension language, application names are NOT case-sensitive. The following are keywords in the AEL language:
-abstract context macro globals ignorepat switch if ifTime else
+abstract context macro globals ignorepat switch if ifTime else random goto jump local return break
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-random goto jump local return break continue regexten hint for while case pattern default NOTE: the "default" keyword can be used as a context name, for those who would like to do so. catch switches eswitches includes
+continue regexten hint for while case pattern default NOTE: the "default" keyword can be used as a context name, for those who would like to do so. catch switches eswitches includes
AEL Procedural Interface and Internals
@@ -1696,39 +1874,37 @@
(hopefully, something close to bnf). First, some basic objects
------------------------<word> a lexical token consisting of characters matching this pattern: [-a-zA-Z0-9"_/.\<\>\*\+!$#\[\]][-a-zA-Z0-9"_/.!\*\+\<\>\{\}$#\[\]]* <word3-list> a concatenation of up to 3 <word>s. <collected-word> all characters encountered until the character that follows the <collected-word> in the grammar. ------------------------<file> :== <objects> <objects> :== <object> | <objects> <object> <object> :== <context>
+-----------------------<word> a lexical token consisting of characters matching this pattern: [-a-zA-Z0-9"_/.\<\>\*\+!$#\[\]][-a-zA-Z0-9"_/.!\*\+\<\>\{\}$#\[\]]* <word3-list> a concatenation of up to 3 <word>s. <collected-word> all characters encountered until the character that follows the <collected-word> in the grammar. ------------------------<file> :== <objects> <objects> :== <object> | <objects> <object> <object> :== <context> | <macro> | <globals> | ';'
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-| <macro> | <globals> | ';' <context> :== | | | | | | | 'context' <word> '{' <elements> '}' 'context' <word> '{' '}' 'context' 'default' '{' <elements> '}' 'context' 'default' '{' '}' 'abstract' 'context' <word> '{' <elements> '}' 'abstract' 'context' <word> '{' '}' 'abstract' 'context' 'default' '{' <elements> '}' 'abstract' 'context' 'default' '{' '}'
+<context> :== | | | | | | |
+
+'context' <word> '{' <elements> '}' 'context' <word> '{' '}' 'context' 'default' '{' <elements> '}' 'context' 'default' '{' '}' 'abstract' 'context' <word> '{' <elements> '}' 'abstract' 'context' <word> '{' '}' 'abstract' 'context' 'default' '{' <elements> '}' 'abstract' 'context' 'default' '{' '}'
<macro> :== 'macro' <word> '(' <arglist> ')' '{' <macro_statements> '}' | 'macro' <word> '(' <arglist> ')' '{' '}' | 'macro' <word> '(' ')' '{' <macro_statements> '}' | 'macro' <word> '(' ')' '{' '}' <globals> :== 'globals' '{' <global_statements> '}' | 'globals' '{' '}' <global_statements> :== <global_statement> | <global_statements> <global_statement>
<global_statement> :== <word> '=' <collected-word> ';' <arglist> :== <word> | <arglist> ',' <word> <elements> :== <element> | <elements> <element> <element> :== <extension> | <includes> | <switches> | <eswitches> | <ignorepat> | <word> '=' <collected-word> ';' | 'local' <word> '=' <collected-word> ';' | ';'
-<ignorepat> :== 'ignorepat' '=>' <word> ';'
+<ignorepat> :== 'ignorepat' '=>' <word> ';' <extension> :== <word> '=>' <statement> | 'regexten' <word> '=>' <statement> | 'hint' '(' <word3-list> ')' <word> '=>' <statement> | 'regexten' 'hint' '(' <word3-list> ')' <word> '=>'
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-<extension> :== <word> '=>' <statement> | 'regexten' <word> '=>' <statement> | 'hint' '(' <word3-list> ')' <word> '=>' <statement> | 'regexten' 'hint' '(' <word3-list> ')' <word> '=>' <statement> <statements> :== <statement> | <statements> <statement> <if_head> :== 'if' '(' <collected-word> ')' <random_head> :== 'random' '(' <collected-word> ')' <ifTime_head> :== 'ifTime' '(' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ')' | 'ifTime' '(' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ')' <word3-list> :== <word> | <word> <word> | <word> <word> <word> <switch_head> :== 'switch' '(' <collected-word> ')' '{' <statement> :== '{' <statements> '}' | <word> '=' <collected-word> ';' | 'local' <word> '=' <collected-word> ';' | 'goto' <target> ';' | 'jump' <jumptarget> ';' | <word> ':' | 'for' '(' <collected-word> ';' <collected-word> ';' <collected-word> ')' <statement> | 'while' '(' <collected-word> ')' <statement> | <switch_head> '}' | <switch_head> <case_statements> '}' | '&' macro_call ';' | <application_call> ';' | <application_call> '=' <collected-word> ';' | 'break' ';' | 'return' ';' | 'continue' ';' | <random_head> <statement> | <random_head> <statement> 'else' <statement> | <if_head> <statement> | <if_head> <statement> 'else' <statement> | <ifTime_head> <statement> | <ifTime_head> <statement> 'else' <statement> | ';'
+<statement> <statements> :== <statement> | <statements> <statement> <if_head> :== 'if' '(' <collected-word> ')' <random_head> :== 'random' '(' <collected-word> ')' <ifTime_head> :== 'ifTime' '(' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ')' | 'ifTime' '(' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ')' <word3-list> :== <word> | <word> <word> | <word> <word> <word> <switch_head> :== 'switch' '(' <collected-word> ')' '{' <statement> :== '{' <statements> '}' | <word> '=' <collected-word> ';' | 'local' <word> '=' <collected-word> ';' | 'goto' <target> ';' | 'jump' <jumptarget> ';' | <word> ':' | 'for' '(' <collected-word> ';' <collected-word> ';' <collected-word> ')' <statement> | 'while' '(' <collected-word> ')' <statement> | <switch_head> '}' | <switch_head> <case_statements> '}' | '&' macro_call ';' | <application_call> ';' | <application_call> '=' <collected-word> ';' | 'break' ';' | 'return' ';' | 'continue' ';' | <random_head> <statement> | <random_head> <statement> 'else' <statement> | <if_head> <statement> | <if_head> <statement> 'else' <statement> | <ifTime_head> <statement> | <ifTime_head> <statement> 'else' <statement> | ';' <target> :== <word> | <word> '|' <word> | <word> '|' <word> '|' <word> | 'default' '|' <word> '|' <word>
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-<target> | | | | | |
-
-:== <word> <word> '|' <word> <word> '|' <word> '|' <word> 'default' '|' <word> '|' <word> <word> ',' <word> <word> ',' <word> ',' <word> 'default' ',' <word> ',' <word>
-
-<jumptarget> :== <word> | <word> | <word> | <word> | <word> | <word> <macro_call> :== <word> | <word> '(' ')'
+| <word> ',' <word> | <word> ',' <word> ',' <word> | 'default' ',' <word> ',' <word> <jumptarget> :== <word> | <word> | <word> | <word> | <word> | <word> <macro_call> :== <word> | <word> '(' ')'
',' ',' '@' ',' '@' '('
<word> <word> '@' <word> <word> <word> '@' 'default' 'default' <eval_arglist> ')'
-<application_call_head> :== <word> '(' <application_call> :== <application_call_head> <eval_arglist> ')' | <application_call_head> ')' <eval_arglist> :== <collected-word> | <eval_arglist> ',' <collected-word> | /* nothing */ | <eval_arglist> ',' /* nothing */ <case_statements> :== <case_statement> | <case_statements> <case_statement> <case_statement> :== 'case' <word> ':' <statements> | 'default' ':' <statements> | 'pattern' <word> ':' <statements> | 'case' <word> ':' | 'default' ':' | 'pattern' <word> ':' <macro_statements> :== <macro_statement> | <macro_statements> <macro_statement> <macro_statement> :== <statement> | 'catch' <word> '{' <statements> '}' <switches> :== 'switches' '{' <switchlist> '}' | 'switches' '{' '}' <eswitches> :== 'eswitches' '{' <switchlist> '}' | 'eswitches' '{' '}' <switchlist> :== <word> ';'
+<application_call_head> :== <word> '(' <application_call> :== <application_call_head> <eval_arglist> ')' | <application_call_head> ')' <eval_arglist> :== <collected-word> | <eval_arglist> ',' <collected-word> | /* nothing */ | <eval_arglist> ',' /* nothing */ <case_statements> :== <case_statement> | <case_statements> <case_statement> <case_statement> :== 'case' <word> ':' <statements> | 'default' ':' <statements> | 'pattern' <word> ':' <statements> | 'case' <word> ':' | 'default' ':' | 'pattern' <word> ':' <macro_statements> :== <macro_statement> | <macro_statements> <macro_statement> <macro_statement> :== <statement> | 'catch' <word> '{' <statements> '}' <switches> :== 'switches' '{' <switchlist> '}' | 'switches' '{' '}' <eswitches> :== 'eswitches' '{' <switchlist> '}' | 'eswitches' '{' '}' <switchlist> :== <word> ';' | <switchlist> <word> ';' <includeslist> :== <includedname> ';' | <includedname> '|' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';'
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-| <switchlist> <word> ';' <includeslist> :== <includedname> ';' | <includedname> '|' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' | <includedname> '|' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' | <includeslist> <includedname> ';' | <includeslist> <includedname> '|' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' | <includeslist> <includedname> '|' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' <includedname> :== <word> | 'default'
+| <includedname> '|' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' | <includeslist> <includedname> ';' | <includeslist> <includedname> '|' <word3-list> ':' <word3-list> ':' <word3-list> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' | <includeslist> <includedname> '|' <word> '|' <word3-list> '|' <word3-list> '|' <word3-list> ';' <includedname> :== <word> | 'default'
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -2411,6 +2587,8 @@
Next, let's configure our dialplan to receive an incoming call from Google and route it to the SIP phone we created. To do this, our dialplan, extensions.conf, typically located in /etc/asterisk, would look like:
exten exten exten exten => => => => s,1,Answer() s,n,Wait(2) s,n,SendDTMF(1) s,n,Dial(SIP/malcolm,20)
+Note that you might have to adjust the "Wait" time from 2 (in seconds) to something larger, like 8, depending on the current mood of Google. Otherwise, your incoming calls might not be successfully picked up.
+
This example uses the "s" unmatched extension, because Google does not forward any DID when it sends the call to Asterisk. In this example, we're Answering the call, Waiting 2 seconds, sending the DTMF "1" back to Google, and then dialing the call. We do this, because inbound calls from Google enable, even if it's disabled in your Google Voice control panel, call screening. Without this SendDTMF event, you'll have to confirm with Google whether or not you want to answer the call.
Using Google's voicemail Another method for accomplishing the sending of the DTMF event is to use the D dial option. The D option tells Asterisk to send a specified DTMF string after the called party has answered. DTMF events specified before a colon are sent to the called party. DTMF events specified after a colon are sent to the calling party.
@@ -2447,28 +2625,31 @@
up in the caller's Google Talk client, play back a prompt, capture the caller's text-based response, and then dial the appropriate SIP device.
s,1,Answer() exten => s,n,SendText("If you know the extension of the party you wish to reach, dial it now.") exten => s,n,Background(if-u-know-ext-dial) exten => s,n,Set(OPTION=${JABBER_RECEIVE(asterisk,${CALLERID(name)::15},5)}) exten => s,n,Dial(SIP/${OPTION},20) ]]>
-Note that with the JABBER_RECEIVE function, we're receiving the text from asterisk which we defined earlier in this page as our connection to Google. We're also specifying with ${CALLERID(name)::15} that we want to strip off the last 15 characters from the CallerID name string - which is the number of characters that Google is appending, as of this writing, to represent an internal call ID number, and that we want to wait 5 seconds for a response. Channel Event Logging (CEL) Top-level page for all things CEL
+Note that with the JABBER_RECEIVE function, we're receiving the text from asterisk which we defined earlier in this page as our connection to Google. We're also specifying with ${CALLERID(name)::15} that we want to strip off the last 15 characters from the CallerID name string - which is the number of characters that Google is appending, as of this writing, to represent an internal call ID number, and that we want to wait 5 seconds for a response.
+Webinar
+
+A Webinar was conducted on Tuesday, March 24, 2011 detailing Asterisk configuration for calling using Google as well as several usage cases. A copy of the slides, in PDF format, is available here - Google Calling Webinar - Public.pdf Channel Event Logging (CEL) Top-level page for all things CEL
CEL Design Goals
-CEL, or Channel Event Logging, has been written with the hopes that it will help solve some of the problems that were difficult to address in CDR records. Some difficulties in CDR generation are the fact that the CDR record stores three events: the "Start" time, the "Answer" time, and the "End" time. Billing time is usually the difference between "Answer" and "End", and total call duration was the difference in time from "Start" to "End". The trouble with this direct and simple approach is the fact that calls can be transferred, put on hold, conferenced, forwarded, etc. In general, those doing billing applications in Asterisk find they have to do all sorts of very creative things to overcome the shortcomings of CDR records, often supplementing the CDR records with AGI scripts and manager event filters. The fundamental assumption is that the Channel is the fundamental communication object in asterisk, which basically provides a communication channel between two communication ports. It makes sense to have an event system aimed at recording important events on channels. Each event is attached to a channel, like ANSWER or HANGUP. Some events are meant to connect two or more channels, like the BRIDGE_START event. Some events, like BLINDTRANSFER, are initiated by one channel, but affect two others. These events use the Peer field, like BRIDGE would, to point to the target channel. The design philosophy of CEL is to generate event data that can grouped together to form a billing record. This may not be a simple task, but we hope to provide a few different examples that could be used as a basis for those involved in this effort. There are definite parallels between Manager events and CEL events, but there are some differences. Some events that are generated by CEL are not generated by the Manager interface (yet). CEL is optimized for databases, and Manager events are not. The focus of CEL is billing. The Manager interface is targeted to real-time monitoring and control of asterisk. To give the reader a feel for the complexities involved in billing, please take note of the following sequence of events:
+CEL, or Channel Event Logging, has been written with the hopes that it will help solve some of the problems that were difficult to address in CDR records. Some difficulties in CDR generation are the fact that the CDR record stores three events: the "Start" time, the "Answer" time, and the "End" time. Billing time is usually the difference between "Answer" and "End", and total call duration was the difference in time from "Start" to "End". The trouble with this direct and simple approach is the fact that calls can be transferred, put on hold, conferenced, forwarded, etc. In general, those doing billing applications in Asterisk find they have to do all sorts of very creative things to overcome the shortcomings of CDR records, often supplementing the CDR records with AGI scripts and manager event filters. The fundamental assumption is that the Channel is the fundamental communication object in asterisk, which basically provides a communication channel between two communication ports. It makes sense to have an event system aimed at recording important events on channels. Each event is attached to a channel, like ANSWER or HANGUP. Some events are meant to connect two or more channels, like the BRIDGE_START event. Some events, like BLINDTRANSFER, are initiated by one channel, but affect two others. These events use the Peer field, like BRIDGE would, to point to the target channel. The design philosophy of CEL is to generate event data that can grouped together to form a billing record. This may not be a simple task, but we hope to provide a few different examples that could be used as a basis for those involved in this effort. There are definite parallels between Manager events and CEL events, but there are some
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Remember that 150, 151, and 152 are all Zap extension numbers, and their respective devices are Zap/50, Zap/51, and Zap/52. 152 dials 151; 151 answers. 152 parks 151; 152 hangs up. 150 picks up the park (dials 701). 150 and 151 converse. 151 flashes hook; dials 152, talks to 152, then 151 flashes hook again for 3-way conference. 151 converses with the other two for a while, then hangs up. 150 and 152 keep conversing, then hang up. 150 hangs up first.(not that it matters). This sequence of actions will generate the following annotated list of 42 CEL events: Note that the actual CEL events below are in CSV format and do not include the ;;; and text after that which gives a description of what the event represents.
+differences. Some events that are generated by CEL are not generated by the Manager interface (yet). CEL is optimized for databases, and Manager events are not. The focus of CEL is billing. The Manager interface is targeted to real-time monitoring and control of asterisk. To give the reader a feel for the complexities involved in billing, please take note of the following sequence of events: Remember that 150, 151, and 152 are all Zap extension numbers, and their respective devices are Zap/50, Zap/51, and Zap/52. 152 dials 151; 151 answers. 152 parks 151; 152 hangs up. 150 picks up the park (dials 701). 150 and 151 converse. 151 flashes hook; dials 152, talks to 152, then 151 flashes hook again for 3-way conference. 151 converses with the other two for a while, then hangs up. 150 and 152 keep conversing, then hang up. 150 hangs up first.(not that it matters). This sequence of actions will generate the following annotated list of 42 CEL events: Note that the actual CEL events below are in CSV format and do not include the ;;; and text after that which gives a description of what the event represents.
-"EV_CHAN_START","2007-05-09 12:46:16","fxs.52","152","","","","s","extension","Zap/52-1","","","DOCUMENTATI ;;; 152 takes the phone off-hook "EV_APP_START","2007-05-09 12:46:18","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; 152 finishes dialing 151 "EV_CHAN_START","2007-05-09 12:46:18","fxs.51","151","","","","s","extension","Zap/51-1","","","DOCUMENTATI ;;; 151 channel created, starts ringing (151 is ringing) "EV_ANSWER","2007-05-09 12:46:19","","151","152","","","151","extension","Zap/51-1","AppDial","(Outgoin Line)","DOCUMENTATION","","1178736378.4","","" ;;; 151 answers "EV_ANSWER","2007-05-09 12:46:19","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; so does 152 (???) "EV_BRIDGE_START","2007-05-09 12:46:20","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; 152 and 151 are bridged (151 and 152 are conversing) "EV_BRIDGE_END","2007-05-09 12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; after 5 seconds, the bridge ends (152 dials #700?) "EV_BRIDGE_START","2007-05-09 12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; extraneous 0-second bridge? "EV_BRIDGE_END","2007-05-09 12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; "EV_PARK_START","2007-05-09 12:46:27","","151","152","","","","extension","Zap/51-1","Parked Call","","DOCUMENTATION","","1178736378.4","","" ;;; 151 is parked "EV_HANGUP","2007-05-09
+"EV_CHAN_START","2007-05-09 12:46:16","fxs.52","152","","","","s","extension","Zap/52-1","","","DOCUMENTATI ;;; 152 takes the phone off-hook "EV_APP_START","2007-05-09 12:46:18","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; 152 finishes dialing 151 "EV_CHAN_START","2007-05-09 12:46:18","fxs.51","151","","","","s","extension","Zap/51-1","","","DOCUMENTATI ;;; 151 channel created, starts ringing (151 is ringing) "EV_ANSWER","2007-05-09 12:46:19","","151","152","","","151","extension","Zap/51-1","AppDial","(Outgoin Line)","DOCUMENTATION","","1178736378.4","","" ;;; 151 answers "EV_ANSWER","2007-05-09 12:46:19","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; so does 152 (???) "EV_BRIDGE_START","2007-05-09 12:46:20","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; 152 and 151 are bridged (151 and 152 are conversing) "EV_BRIDGE_END","2007-05-09 12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; after 5 seconds, the bridge ends (152 dials #700?) "EV_BRIDGE_START","2007-05-09 12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; extraneous 0-second bridge? "EV_BRIDGE_END","2007-05-09
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-12:46:29","fxs.52","152","152","","","h","extension","Zap/52-1","","","DOCUMENT ,"","" ;;; 152 hangs up 2 sec later "EV_CHAN_END","2007-05-09 12:46:29","fxs.52","152","152","","","h","extension","Zap/52-1","","","DOCUMENT ;;; 152's channel goes away (151 is parked and listening to MOH! now, 150 picks up, and dials 701) "EV_CHAN_START","2007-05-09 12:47:08","fxs.50","150","","","","s","extension","Zap/50-1","","","DOCUMENTATI ;;; 150 picks up the phone, dials 701 "EV_PARK_END","2007-05-09 12:47:11","","151","152","","","","extension","Zap/51-1","Parked Call","","DOCUMENTATION","","1178736378.4","","" ;;; 151's park comes to end "EV_ANSWER","2007-05-09 12:47:11","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 150 gets answer (twice) "EV_ANSWER","2007-05-09 12:47:12","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; "EV_BRIDGE_START","2007-05-09 12:47:12","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge begins between 150 and recently parked 151 (150 and 151 are conversing, then 151 hits flash) "EV_CHAN_START","2007-05-09 12:47:51","fxs.51","151","","","","s","extension","Zap/51-2","","","DOCUMENTATI ;;; 39 seconds later, 51-2 channel is created. (151 flashes hook) "EV_HOOKFLASH","2007-05-09 12:47:51","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","Zap/51-2" ;;; a marker to record that 151 flashed the hook "EV_BRIDGE_END","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge ends between 150 and 151 "EV_BRIDGE_START","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 0-second bridge from 150 to ? 150 gets no sound at all "EV_BRIDGE_END","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; "EV_BRIDGE_START","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge start on 150 (151 has dialtone after hitting flash; dials 152) "EV_APP_START","2007-05-09 12:47:55","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5
+12:46:25","fxs.52","152","152","","","151","extension","Zap/52-1","Dial","Zap/5 ;;; "EV_PARK_START","2007-05-09 12:46:27","","151","152","","","","extension","Zap/51-1","Parked Call","","DOCUMENTATION","","1178736378.4","","" ;;; 151 is parked "EV_HANGUP","2007-05-09 12:46:29","fxs.52","152","152","","","h","extension","Zap/52-1","","","DOCUMENT ,"","" ;;; 152 hangs up 2 sec later "EV_CHAN_END","2007-05-09 12:46:29","fxs.52","152","152","","","h","extension","Zap/52-1","","","DOCUMENT ;;; 152's channel goes away (151 is parked and listening to MOH! now, 150 picks up, and dials 701) "EV_CHAN_START","2007-05-09 12:47:08","fxs.50","150","","","","s","extension","Zap/50-1","","","DOCUMENTATI ;;; 150 picks up the phone, dials 701 "EV_PARK_END","2007-05-09 12:47:11","","151","152","","","","extension","Zap/51-1","Parked Call","","DOCUMENTATION","","1178736378.4","","" ;;; 151's park comes to end "EV_ANSWER","2007-05-09 12:47:11","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 150 gets answer (twice) "EV_ANSWER","2007-05-09 12:47:12","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; "EV_BRIDGE_START","2007-05-09 12:47:12","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge begins between 150 and recently parked 151 (150 and 151 are conversing, then 151 hits flash) "EV_CHAN_START","2007-05-09 12:47:51","fxs.51","151","","","","s","extension","Zap/51-2","","","DOCUMENTATI ;;; 39 seconds later, 51-2 channel is created. (151 flashes hook) "EV_HOOKFLASH","2007-05-09 12:47:51","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","Zap/51-2" ;;; a marker to record that 151 flashed the hook "EV_BRIDGE_END","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge ends between 150 and 151 "EV_BRIDGE_START","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 0-second bridge from 150 to ? 150 gets no sound at all "EV_BRIDGE_END","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;;
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-;;; 151-2 dials 152 after 4 seconds "EV_CHAN_START","2007-05-09 12:47:55","fxs.52","152","","","","s","extension","Zap/52-1","","","DOCUMENTATI ,"","" ;;; 152 channel created to ring 152. (152 ringing) "EV_ANSWER","2007-05-09 12:47:58","","152","151","","","152","extension","Zap/52-1","AppDial","(Outgoin Line)","DOCUMENTATION","","1178736475.7","","" ;;; 3 seconds later, 152 answers "EV_ANSWER","2007-05-09 12:47:58","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5 ;;; ... and 151-2 also answers "EV_BRIDGE_START","2007-05-09 12:47:59","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5 ;;; 1 second later, bridge formed betw. 151-2 and 151 (152 answers, 151 and 152 convering; 150 is listening to silence; 151 hits flash again... to start a 3way) "EV_3WAY_START","2007-05-09 12:48:58","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","Zap/51-2" ;;; another hook-flash to begin a 3-way conference "EV_BRIDGE_END","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; - almost 1 minute later, the bridge ends (151 flashes hook again) "EV_BRIDGE_START","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 0-second bridge at 150. (3 way conf formed) "EV_BRIDGE_END","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; "EV_BRIDGE_START","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge starts for 150 (3way now, then 151 hangs up.) "EV_BRIDGE_END","2007-05-09 12:49:26","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 28 seconds later, bridge ends "EV_HANGUP","2007-05-09 12:49:26","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","" ;;; 151 hangs up, leaves 150 and 152 connected "EV_CHAN_END","2007-05-09 12:49:26","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","" ;;; 151 channel ends
+"EV_BRIDGE_START","2007-05-09 12:47:51","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge start on 150 (151 has dialtone after hitting flash; dials 152) "EV_APP_START","2007-05-09 12:47:55","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5 ;;; 151-2 dials 152 after 4 seconds "EV_CHAN_START","2007-05-09 12:47:55","fxs.52","152","","","","s","extension","Zap/52-1","","","DOCUMENTATI ,"","" ;;; 152 channel created to ring 152. (152 ringing) "EV_ANSWER","2007-05-09 12:47:58","","152","151","","","152","extension","Zap/52-1","AppDial","(Outgoin Line)","DOCUMENTATION","","1178736475.7","","" ;;; 3 seconds later, 152 answers "EV_ANSWER","2007-05-09 12:47:58","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5 ;;; ... and 151-2 also answers "EV_BRIDGE_START","2007-05-09 12:47:59","fxs.51","151","151","","","152","extension","Zap/51-2","Dial","Zap/5 ;;; 1 second later, bridge formed betw. 151-2 and 151 (152 answers, 151 and 152 convering; 150 is listening to silence; 151 hits flash again... to start a 3way) "EV_3WAY_START","2007-05-09 12:48:58","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","Zap/51-2" ;;; another hook-flash to begin a 3-way conference "EV_BRIDGE_END","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; - almost 1 minute later, the bridge ends (151 flashes hook again) "EV_BRIDGE_START","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 0-second bridge at 150. (3 way conf formed) "EV_BRIDGE_END","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; "EV_BRIDGE_START","2007-05-09 12:48:58","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; bridge starts for 150 (3way now, then 151 hangs up.) "EV_BRIDGE_END","2007-05-09 12:49:26","fxs.50","150","150","","","701","extension","Zap/50-1","ParkedCall", ;;; 28 seconds later, bridge ends "EV_HANGUP","2007-05-09 12:49:26","","151","152","","","","extension","Zap/51-1","Bridged
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-"EV_CHAN_END","2007-05-09 12:49:26","fxs.51","151","151","","","h","extension","Zap/51-2ZOMBIE","","","DO ;;; 152-2 channel ends (zombie) (just 150 and 152 now) "EV_BRIDGE_END","2007-05-09 12:50:13","fxs.50","150","150","","","152","extension","Zap/50-1","Dial","Zap/5 ;;; 47 sec later, the bridge from 150 to 152 ends "EV_HANGUP","2007-05-09 12:50:13","","152","151","","","","extension","Zap/52-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736475.7","","" ;;; 152 hangs up "EV_CHAN_END","2007-05-09 12:50:13","","152","151","","","","extension","Zap/52-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736475.7","","" ;;; 152 channel ends "EV_HANGUP","2007-05-09 12:50:13","fxs.50","150","150","","","h","extension","Zap/50-1","","","DOCUMENT ;;; 150 hangs up "EV_CHAN_END","2007-05-09
+Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","" ;;; 151 hangs up, leaves 150 and 152 connected "EV_CHAN_END","2007-05-09 12:49:26","","151","152","","","","extension","Zap/51-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736378.4","","" ;;; 151 channel ends "EV_CHAN_END","2007-05-09 12:49:26","fxs.51","151","151","","","h","extension","Zap/51-2ZOMBIE","","","DO ;;; 152-2 channel ends (zombie) (just 150 and 152 now) "EV_BRIDGE_END","2007-05-09 12:50:13","fxs.50","150","150","","","152","extension","Zap/50-1","Dial","Zap/5 ;;; 47 sec later, the bridge from 150 to 152 ends "EV_HANGUP","2007-05-09 12:50:13","","152","151","","","","extension","Zap/52-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736475.7","","" ;;; 152 hangs up "EV_CHAN_END","2007-05-09 12:50:13","","152","151","","","","extension","Zap/52-1","Bridged Call","Zap/50-1","DOCUMENTATION","","1178736475.7","","" ;;; 152 channel ends "EV_HANGUP","2007-05-09 12:50:13","fxs.50","150","150","","","h","extension","Zap/50-1","","","DOCUMENT ;;; 150 hangs up "EV_CHAN_END","2007-05-09
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5179,7 +5360,7 @@
Security-based dialplan branching
Each channel that supports secure signaling or media can implement a CHANNEL read callback function that specifies whether or not that channel meets the specified criteria. Currently, chan_iax2 and chan_sip implement these callbacks. Channels that do not support secure media or signaling will return an empty string when queried. For example, to only allow an inbound call that has both secure signaling and media, see the following example.
-123,1,GotoIf("$[${CHANNEL(secure_signaling)}" = ""]?fail) exten => 123,n,GotoIf("$[${CHANNEL(secure_media)}" = ""]?fail) exten => 123,n,Dial(SIP/123) exten => 123,n,Hangup exten => 123,n(fail),Playback(vm-goodbye) exten => 123,n,Hangup ]]>
+123,1,GotoIf($["${CHANNEL(secure_signaling)}" = "1"]?:fail) exten => 123,n,GotoIf($["${CHANNEL(secure_media)}" = "1"]?:fail) exten => 123,n,Dial(SIP/123) exten => 123,n,Hangup exten => 123,n(fail),Playback(vm-goodbye) exten => 123,n,Hangup ]]>
Forcing bridged channels to be secure
Administrators can force outbound channels that are to be bridged to a calling channel to conform to secure media and signaling policies. For example, to first make a call attempt that has both secure signaling and media, but gracefully fall back to non-secure signaling and media see the following example:
@@ -5494,7 +5675,7 @@
Answers channel if not already in answer state. Returns -1 on channel failure, or 0 if successful.
Syntax
-ANSWERANSWER
+ANSWER
Arguments
See Also
@@ -5502,7 +5683,7 @@
AGICommand_HANGUP
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_ASYNCAGI BREAK
ASYNCAGI BREAK
@@ -5516,7 +5697,7 @@
Interrupts expected flow of Async AGI commands and returns control to previous source (typically, the PBX dialplan).
Syntax
-ASYNCAGI BREAKASYNCAGI BREAK
+ASYNCAGI BREAK
Arguments
See Also
@@ -5524,7 +5705,7 @@
AGICommand_HANGUP
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_CHANNEL STATUS
CHANNEL STATUS
Synopsis
@@ -5539,13 +5720,13 @@
Line is busy.
Syntax
-CHANNEL STATUSCHANNEL STATUS [CHANNELNAME]
+CHANNEL STATUS [CHANNELNAME]
Arguments
CHANNELNAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_CONTROL STREAM FILE
CONTROL STREAM FILE
Synopsis
@@ -5556,13 +5737,13 @@
Send the given file, allowing playback to be controlled by the given digits, if any. Use double quotes for the digits if you wish none to be permitted. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed, or -1 on error or if the channel was disconnected.
Syntax
-CONTROL STREAM FILECONTROL STREAM FILE FILENAME ESCAPE_DIGITS [SKIPMS] [FFCHAR] [REWCHR] [PAUSECHR]
+CONTROL STREAM FILE FILENAME ESCAPE_DIGITS [SKIPMS] [FFCHAR] [REWCHR] [PAUSECHR]
Arguments
FILENAME - The file extension must not be included in the filename. ESCAPE_DIGITS SKIPMS FFCHAR - Defaults to * REWCHR - Defaults to # PAUSECHR
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_DATABASE DEL
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5576,13 +5757,13 @@
Deletes an entry in the Asterisk database for a given family and key. Returns 1 if successful, 0 otherwise.
Syntax
-DATABASE DELDATABASE DEL FAMILY KEY
+DATABASE DEL FAMILY KEY
Arguments
FAMILY KEY
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_DATABASE DELTREE
DATABASE DELTREE
Synopsis
@@ -5593,7 +5774,7 @@
Deletes a family or specific keytree within a family in the Asterisk database. Returns 1 if successful, 0 otherwise.
Syntax
-DATABASE DELTREEDATABASE DELTREE FAMILY [KEYTREE]
+DATABASE DELTREE FAMILY [KEYTREE]
Arguments
FAMILY KEYTREE
@@ -5601,7 +5782,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_DATABASE GET
DATABASE GET
Synopsis
@@ -5612,13 +5793,13 @@
Retrieves an entry in the Asterisk database for a given family and key. Returns 0 if key is not set. Returns 1 if key is set and returns the variable in parenthesis. Example return code: 200 result=1 (testvariable)
Syntax
-DATABASE GETDATABASE GET FAMILY KEY
+DATABASE GET FAMILY KEY
Arguments
FAMILY KEY
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_DATABASE PUT
DATABASE PUT
Synopsis
@@ -5629,7 +5810,7 @@
Adds or updates an entry in the Asterisk database for a given family, key, and value. Returns 1 if successful, 0 otherwise.
Syntax
-DATABASE PUTDATABASE PUT FAMILY KEY VALUE
+DATABASE PUT FAMILY KEY VALUE
Arguments
@@ -5638,7 +5819,7 @@
FAMILY KEY VALUE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_EXEC
EXEC
Synopsis
@@ -5649,13 +5830,13 @@
Executes application with given options. Returns whatever the application returns, or -2 on failure to find application.
Syntax
-EXECEXEC APPLICATION OPTIONS
+EXEC APPLICATION OPTIONS
Arguments
APPLICATION OPTIONS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_GET DATA
GET DATA
Synopsis
@@ -5668,13 +5849,13 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-GET DATAGET DATA FILE [TIMEOUT] [MAXDIGITS]
+GET DATA FILE [TIMEOUT] [MAXDIGITS]
Arguments
FILE TIMEOUT MAXDIGITS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_GET FULL VARIABLE
GET FULL VARIABLE
Synopsis
@@ -5685,13 +5866,13 @@
Returns 0 if variablename is not set or channel does not exist. Returns 1 if variablename is set and returns the variable in parenthesis. Understands complex variable names and builtin variables, unlike GET VARIABLE. Example return code: 200 result=1 (testvariable)
Syntax
-GET FULL VARIABLEGET FULL VARIABLE VARIABLENAME [CHANNEL_NAME]
+GET FULL VARIABLE VARIABLENAME [CHANNEL_NAME]
Arguments
VARIABLENAME CHANNEL_NAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_GET OPTION
GET OPTION
Synopsis
@@ -5705,7 +5886,7 @@
Behaves similar to STREAM FILE but used with a timeout option.
Syntax
-GET OPTIONGET OPTION FILENAME ESCAPE_DIGITS [TIMEOUT]
+GET OPTION FILENAME ESCAPE_DIGITS [TIMEOUT]
Arguments
FILENAME ESCAPE_DIGITS TIMEOUT
@@ -5714,7 +5895,7 @@
AGICommand_STREAM FILE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_GET VARIABLE
GET VARIABLE
Synopsis
@@ -5725,13 +5906,13 @@
Returns 0 if variablename is not set. Returns 1 if variablename is set and returns the variable in parentheses. Example return code: 200 result=1 (testvariable)
Syntax
-GET VARIABLEGET VARIABLE VARIABLENAME
+GET VARIABLE VARIABLENAME
Arguments
VARIABLENAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_GOSUB
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5745,13 +5926,13 @@
Cause the channel to execute the specified dialplan subroutine, returning to the dialplan with execution of a Return().
Syntax
-GOSUBGOSUB CONTEXT EXTENSION PRIORITY [OPTIONAL-ARGUMENT]
+GOSUB CONTEXT EXTENSION PRIORITY [OPTIONAL-ARGUMENT]
Arguments
CONTEXT EXTENSION PRIORITY OPTIONAL-ARGUMENT
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_HANGUP
HANGUP
Synopsis
@@ -5762,13 +5943,13 @@
Hangs up the specified channel. If no channel name is given, hangs up the current channel
Syntax
-HANGUPHANGUP [CHANNELNAME]
+HANGUP [CHANNELNAME]
Arguments
CHANNELNAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5782,12 +5963,12 @@
Does nothing.
Syntax
-NOOPNOOP
+NOOP
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_RECEIVE CHAR
RECEIVE CHAR
Synopsis
@@ -5798,13 +5979,13 @@
Receives a character of text on a channel. Most channels do not support the reception of text. Returns the decimal value of the character if one is received, or 0 if the channel does not support text reception. Returns -1 only on error/hangup.
Syntax
-RECEIVE CHARRECEIVE CHAR TIMEOUT
+RECEIVE CHAR TIMEOUT
Arguments
TIMEOUT - The maximum time to wait for input in milliseconds, or 0 for infinite. Most channels
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_RECEIVE TEXT
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5818,13 +5999,13 @@
Receives a string of text on a channel. Most channels do not support the reception of text. Returns -1 for failure or 1 for success, and the string in parenthesis.
Syntax
-RECEIVE TEXTRECEIVE TEXT TIMEOUT
+RECEIVE TEXT TIMEOUT
Arguments
TIMEOUT - The timeout to be the maximum time to wait for input in milliseconds, or 0 for infinite.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_RECORD FILE
RECORD FILE
Synopsis
@@ -5835,7 +6016,7 @@
Record to a file until a given dtmf digit in the sequence is received. Returns -1 on hangup or error. The format will specify what kind of file will be recorded. The timeout is the maximum record time in milliseconds, or -1 for no timeout. offset samples is optional, and, if provided, will seek to the offset without exceeding the end of the file. silence is the number of seconds of silence allowed before the function returns despite the lack of dtmf digits or reaching timeout. silence value must be preceded by s= and is also optional.
Syntax
-RECORD FILERECORD FILE FILENAME FORMAT ESCAPE_DIGITS TIMEOUT [OFFSET_SAMPLES] [BEEP] [S=SILENCE]
+RECORD FILE FILENAME FORMAT ESCAPE_DIGITS TIMEOUT [OFFSET_SAMPLES] [BEEP] [S=SILENCE]
Arguments
FILENAME FORMAT ESCAPE_DIGITS
@@ -5845,7 +6026,7 @@
TIMEOUT OFFSET_SAMPLES BEEP S=SILENCE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY ALPHA
SAY ALPHA
Synopsis
@@ -5856,13 +6037,13 @@
Say a given character string, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed or -1 on error/hangup.
Syntax
-SAY ALPHASAY ALPHA NUMBER ESCAPE_DIGITS
+SAY ALPHA NUMBER ESCAPE_DIGITS
Arguments
NUMBER ESCAPE_DIGITS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY DATE
SAY DATE
Synopsis
@@ -5876,13 +6057,13 @@
Syntax
-SAY DATESAY DATE DATE ESCAPE_DIGITS
+SAY DATE DATE ESCAPE_DIGITS
Arguments
DATE - Is number of seconds elapsed since 00:00:00 on January 1, 1970. Coordinated Universal Time (UTC). ESCAPE_DIGITS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY DATETIME
SAY DATETIME
Synopsis
@@ -5893,13 +6074,13 @@
Say a given time, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed or -1 on error/hangup.
Syntax
-SAY DATETIMESAY DATETIME TIME ESCAPE_DIGITS [FORMAT] [TIMEZONE]
+SAY DATETIME TIME ESCAPE_DIGITS [FORMAT] [TIMEZONE]
Arguments
TIME - Is number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC) ESCAPE_DIGITS FORMAT - Is the format the time should be said in. See voicemail.conf (defaults to ABdY 'digits/at' IMp ). TIMEZONE - Acceptable values can be found in /usr/share/zoneinfo Defaults to machine default.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY DIGITS
SAY DIGITS
Synopsis
@@ -5913,13 +6094,13 @@
Say a given digit string, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed or -1 on error/hangup.
Syntax
-SAY DIGITSSAY DIGITS NUMBER ESCAPE_DIGITS
+SAY DIGITS NUMBER ESCAPE_DIGITS
Arguments
NUMBER ESCAPE_DIGITS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY NUMBER
SAY NUMBER
Synopsis
@@ -5930,13 +6111,13 @@
Say a given number, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed or -1 on error/hangup.
Syntax
-SAY NUMBERSAY NUMBER NUMBER ESCAPE_DIGITS [GENDER]
+SAY NUMBER NUMBER ESCAPE_DIGITS [GENDER]
Arguments
NUMBER ESCAPE_DIGITS GENDER
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY PHONETIC
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -5950,13 +6131,13 @@
Say a given character string with phonetics, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit pressed, the ASCII numerical value of the digit if one was pressed, or -1 on error/hangup.
Syntax
-SAY PHONETICSAY PHONETIC STRING ESCAPE_DIGITS
+SAY PHONETIC STRING ESCAPE_DIGITS
Arguments
STRING ESCAPE_DIGITS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SAY TIME
SAY TIME
Synopsis
@@ -5967,7 +6148,7 @@
Say a given time, returning early if any of the given DTMF digits are received on the channel. Returns 0 if playback completes without a digit being pressed, or the ASCII numerical value of the digit if one was pressed or -1 on error/hangup.
Syntax
-SAY TIMESAY TIME TIME ESCAPE_DIGITS
+SAY TIME TIME ESCAPE_DIGITS
Arguments
TIME - Is number of seconds elapsed since 00:00:00 on January 1, 1970. Coordinated Universal Time (UTC). ESCAPE_DIGITS
@@ -5975,7 +6156,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SEND IMAGE
SEND IMAGE
Synopsis
@@ -5986,13 +6167,13 @@
Sends the given image on a channel. Most channels do not support the transmission of images. Returns 0 if image is sent, or if the channel does not support image transmission. Returns -1 only on error/hangup. Image names should not include extensions.
Syntax
-SEND IMAGESEND IMAGE IMAGE
+SEND IMAGE IMAGE
Arguments
IMAGE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SEND TEXT
SEND TEXT
Synopsis
@@ -6003,7 +6184,7 @@
Sends the given text on a channel. Most channels do not support the transmission of text. Returns 0 if text is sent, or if the channel does not support text transmission. Returns -1 only on error/hangup.
Syntax
-SEND TEXTSEND TEXT TEXT_TO_SEND
+SEND TEXT TEXT_TO_SEND
Arguments
TEXT_TO_SEND - Text consisting of greater than one word should be placed in quotes since the command only accepts a single argument.
@@ -6012,7 +6193,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET AUTOHANGUP
SET AUTOHANGUP
Synopsis
@@ -6023,13 +6204,13 @@
Cause the channel to automatically hangup at time seconds in the future. Of course it can be hungup before then as well. Setting to 0 will cause the autohangup feature to be disabled on this channel.
Syntax
-SET AUTOHANGUPSET AUTOHANGUP TIME
+SET AUTOHANGUP TIME
Arguments
TIME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET CALLERID
SET CALLERID
Synopsis
@@ -6040,7 +6221,7 @@
Changes the callerid of the current channel.
Syntax
-SET CALLERIDSET CALLERID NUMBER
+SET CALLERID NUMBER
Arguments
NUMBER
@@ -6049,7 +6230,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET CONTEXT
SET CONTEXT
Synopsis
@@ -6060,13 +6241,13 @@
Sets the context for continuation upon exiting the application.
Syntax
-SET CONTEXTSET CONTEXT DESIRED_CONTEXT
+SET CONTEXT DESIRED_CONTEXT
Arguments
DESIRED_CONTEXT
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET EXTENSION
SET EXTENSION
Synopsis
@@ -6077,7 +6258,7 @@
Changes the extension for continuation upon exiting the application.
Syntax
-SET EXTENSIONSET EXTENSION NEW_EXTENSION
+SET EXTENSION NEW_EXTENSION
Arguments
NEW_EXTENSION
@@ -6086,7 +6267,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET MUSIC
SET MUSIC
Synopsis
@@ -6097,13 +6278,13 @@
Enables/Disables the music on hold generator. If class is not specified, then the default music on hold class will be used. Always returns 0.
Syntax
-SET MUSICSET MUSIC UNNAMED_PARAMETER CLASS
+SET MUSIC UNNAMED_PARAMETER CLASS
Arguments
UNNAMED_PARAMETER Unnamed Option Unnamed Option CLASS
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET PRIORITY
SET PRIORITY
Synopsis
@@ -6116,13 +6297,13 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-SET PRIORITYSET PRIORITY PRIORITY
+SET PRIORITY PRIORITY
Arguments
PRIORITY
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SET VARIABLE
SET VARIABLE
Synopsis
@@ -6133,13 +6314,13 @@
Sets a variable to the current channel.
Syntax
-SET VARIABLESET VARIABLE VARIABLENAME VALUE
+SET VARIABLE VARIABLENAME VALUE
Arguments
VARIABLENAME VALUE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH ACTIVATE GRAMMAR
SPEECH ACTIVATE GRAMMAR
Synopsis
@@ -6152,13 +6333,13 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-SPEECH ACTIVATE GRAMMARSPEECH ACTIVATE GRAMMAR GRAMMAR_NAME
+SPEECH ACTIVATE GRAMMAR GRAMMAR_NAME
Arguments
GRAMMAR_NAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH CREATE
SPEECH CREATE
Synopsis
@@ -6169,13 +6350,13 @@
Create a speech object to be used by the other Speech AGI commands.
Syntax
-SPEECH CREATESPEECH CREATE ENGINE
+SPEECH CREATE ENGINE
Arguments
ENGINE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH DEACTIVATE GRAMMAR
SPEECH DEACTIVATE GRAMMAR
Synopsis
@@ -6188,13 +6369,13 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-SPEECH DEACTIVATE GRAMMARSPEECH DEACTIVATE GRAMMAR GRAMMAR_NAME
+SPEECH DEACTIVATE GRAMMAR GRAMMAR_NAME
Arguments
GRAMMAR_NAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH DESTROY
SPEECH DESTROY
Synopsis
@@ -6205,7 +6386,7 @@
Destroy the speech object created by SPEECH CREATE.
Syntax
-SPEECH DESTROYSPEECH DESTROY
+SPEECH DESTROY
Arguments
See Also
@@ -6213,7 +6394,7 @@
AGICommand_SPEECH CREATE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH LOAD GRAMMAR
SPEECH LOAD GRAMMAR
Synopsis
@@ -6226,13 +6407,13 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-SPEECH LOAD GRAMMARSPEECH LOAD GRAMMAR GRAMMAR_NAME PATH_TO_GRAMMAR
+SPEECH LOAD GRAMMAR GRAMMAR_NAME PATH_TO_GRAMMAR
Arguments
GRAMMAR_NAME PATH_TO_GRAMMAR
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH RECOGNIZE
SPEECH RECOGNIZE
Synopsis
@@ -6243,13 +6424,13 @@
Plays back given prompt while listening for speech and dtmf.
Syntax
-SPEECH RECOGNIZESPEECH RECOGNIZE PROMPT TIMEOUT [OFFSET]
+SPEECH RECOGNIZE PROMPT TIMEOUT [OFFSET]
Arguments
PROMPT TIMEOUT OFFSET
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH SET
SPEECH SET
Synopsis
@@ -6263,13 +6444,13 @@
Syntax
-SPEECH SETSPEECH SET NAME VALUE
+SPEECH SET NAME VALUE
Arguments
SPEECH SET VALUE
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_SPEECH UNLOAD GRAMMAR
SPEECH UNLOAD GRAMMAR
Synopsis
@@ -6280,13 +6461,13 @@
Unloads the specified grammar.
Syntax
-SPEECH UNLOAD GRAMMARSPEECH UNLOAD GRAMMAR GRAMMAR_NAME
+SPEECH UNLOAD GRAMMAR GRAMMAR_NAME
Arguments
GRAMMAR_NAME
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_STREAM FILE
STREAM FILE
Synopsis
@@ -6301,7 +6482,7 @@
was pressed, or -1 on error or if the channel was disconnected.
Syntax
-STREAM FILESTREAM FILE FILENAME ESCAPE_DIGITS [SAMPLE_OFFSET]
+STREAM FILE FILENAME ESCAPE_DIGITS [SAMPLE_OFFSET]
Arguments
FILENAME - File name to play. The file extension must not be included in the filename. ESCAPE_DIGITS - Use double quotes for the digits if you wish none to be permitted. SAMPLE_OFFSET - If sample offset is provided then the audio will seek to sample offset before play starts.
@@ -6310,7 +6491,7 @@
AGICommand_CONTROL STREAM FILE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_TDD MODE
TDD MODE
Synopsis
@@ -6321,13 +6502,13 @@
Enable/Disable TDD transmission/reception on a channel. Returns 1 if successful, or 0 if channel is not TDD-capable.
Syntax
-TDD MODETDD MODE BOOLEAN
+TDD MODE BOOLEAN
Arguments
BOOLEAN on off
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_VERBOSE
VERBOSE
Synopsis
@@ -6340,13 +6521,13 @@
Sends message to the console via verbose message system. level is the verbose level (1-4). Always returns 1
Syntax
-VERBOSEVERBOSE MESSAGE LEVEL
+VERBOSE MESSAGE LEVEL
Arguments
MESSAGE LEVEL
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGICommand_WAIT FOR DIGIT
WAIT FOR DIGIT
Synopsis
@@ -6357,13 +6538,13 @@
Waits up to timeout milliseconds for channel to receive a DTMF digit. Returns -1 on channel failure, 0 if no digit is received in the timeout, or the numerical value of the ascii of the digit if one is received. Use -1 for the timeout value if you desire the call to block indefinitely.
Syntax
-WAIT FOR DIGITWAIT FOR DIGIT TIMEOUT
+WAIT FOR DIGIT TIMEOUT
Arguments
TIMEOUT
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
AGI Command Template Page
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -6428,7 +6609,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel name to hangup. Timeout - Maximum duration of the call (sec).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -6448,7 +6629,7 @@
ActionID - ActionID for this transaction. Will be returned. Agent - Agent ID of the agent to log off. Soft - Set to true to not hangup existing calls.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Agents
Agents
Synopsis
@@ -6469,7 +6650,7 @@
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_AGI
AGI
Synopsis
@@ -6486,7 +6667,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel that is currently in Async AGI. Command - Application to execute. CommandID - This will be sent back in CommandID header of AsyncAGI exec event notification.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_AOCMessage
AOCMessage
Synopsis
@@ -6509,7 +6690,7 @@
CallTransfer ChargingAssociationId - Charging association identifier. This is optional for AOC-E and can be set to any value between -32768 and 32767 ChargingAssociationNumber - Represents the charging association party number. This value is optional for AOC-E. ChargingAssociationPlan - Integer representing the charging plan associated with the ChargingAssociationNumber. The value is bits 7 through 1 of the Q.931 octet containing the type-of-number and numbering-plan-identification fields.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Atxfer
Atxfer
Synopsis
@@ -6526,7 +6707,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Transferer's channel. Exten - Extension to transfer to. Context - Context to transfer to. Priority - Priority to transfer to.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Bridge
Bridge
Synopsis
@@ -6546,7 +6727,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel1 - Channel to Bridge to Channel2. Channel2 - Channel to Bridge to Channel1. Tone - Play courtesy tone to Channel 2. yes no
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Challenge
Challenge
Synopsis
@@ -6563,7 +6744,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -6583,7 +6764,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Used to specify the channel to record. File - Is the new name of the file created in the monitor spool directory.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Command
Command
Synopsis
@@ -6604,7 +6785,7 @@
Command - Asterisk CLI command to run.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_CoreSettings
CoreSettings
Synopsis
@@ -6621,7 +6802,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_CoreShowChannels
CoreShowChannels
Synopsis
@@ -6640,7 +6821,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_CoreStatus
CoreStatus
Synopsis
@@ -6657,7 +6838,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_CreateConfig
CreateConfig
Synopsis
@@ -6676,7 +6857,7 @@
ActionID - ActionID for this transaction. Will be returned. Filename - The configuration filename to create (e.g. foo.conf ).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIDialOffhook
DAHDIDialOffhook
Synopsis
@@ -6690,7 +6871,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel Number
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIDNDoff
DAHDIDNDoff
Synopsis
@@ -6707,7 +6888,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIDNDon
DAHDIDNDon
Synopsis
@@ -6721,7 +6902,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIHangup
DAHDIHangup
Synopsis
@@ -6741,7 +6922,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel - DAHDI channel name to hangup.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIRestart
DAHDIRestart
Synopsis
@@ -6755,7 +6936,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDIShowChannels
DAHDIShowChannels
Synopsis
@@ -6772,7 +6953,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DAHDITransfer
DAHDITransfer
Synopsis
@@ -6789,7 +6970,7 @@
ActionID - ActionID for this transaction. Will be returned. DAHDIChannel - DAHDI channel name to transfer.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DataGet
DataGet
Synopsis
@@ -6808,7 +6989,7 @@
ActionID - ActionID for this transaction. Will be returned. Path Search Filter
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DBDel
DBDel
Synopsis
@@ -6824,7 +7005,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DBDelTree
DBDelTree
Synopsis
@@ -6838,7 +7019,7 @@
ActionID - ActionID for this transaction. Will be returned. Family Key
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DBGet
DBGet
Synopsis
@@ -6855,7 +7036,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_DBPut
DBPut
Synopsis
@@ -6869,7 +7050,7 @@
ActionID - ActionID for this transaction. Will be returned. Family Key Val
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Events
Events
Synopsis
@@ -6888,7 +7069,7 @@
ActionID - ActionID for this transaction. Will be returned. EventMask on - If all events should be sent. off - If no events should be sent. system,call,log,... - To select which flags events should have to be sent.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ExtensionState
ExtensionState
Synopsis
@@ -6905,7 +7086,7 @@
ActionID - ActionID for this transaction. Will be returned. Exten - Extension to check state on. Context - Context for extension.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -6925,7 +7106,7 @@
ActionID - ActionID for this transaction. Will be returned. Filename - Configuration filename (e.g. foo.conf ). Category - Category in configuration file.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_GetConfigJSON
GetConfigJSON
Synopsis
@@ -6945,7 +7126,7 @@
ActionID - ActionID for this transaction. Will be returned. Filename - Configuration filename (e.g. foo.conf ).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Getvar
Getvar
Synopsis
@@ -6962,7 +7143,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel to read variable from. Variable - Variable name.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Hangup
Hangup
Synopsis
@@ -6981,7 +7162,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - The channel name to be hangup. Cause - Numeric hangup cause.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_IAXnetstats
IAXnetstats
Synopsis
@@ -6997,7 +7178,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_IAXpeerlist
IAXpeerlist
Synopsis
@@ -7017,7 +7198,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_IAXpeers
IAXpeers
Synopsis
@@ -7031,7 +7212,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_IAXregistry
IAXregistry
Synopsis
@@ -7051,7 +7232,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_JabberSend
JabberSend
Synopsis
@@ -7068,7 +7249,7 @@
ActionID - ActionID for this transaction. Will be returned. Jabber - Client or transport Asterisk uses to connect to JABBER. JID - XMPP/Jabber JID (Name) of recipient. Message - Message to be sent to the buddy.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ListCategories
ListCategories
Synopsis
@@ -7087,7 +7268,7 @@
ActionID - ActionID for this transaction. Will be returned. Filename - Configuration filename (e.g. foo.conf ).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ListCommands
ListCommands
Synopsis
@@ -7104,7 +7285,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_LocalOptimizeAway
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -7124,7 +7305,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - The channel name to optimize away.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Login
Login
Synopsis
@@ -7143,7 +7324,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Logoff
Logoff
Synopsis
@@ -7160,7 +7341,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MailboxCount
MailboxCount
Synopsis
@@ -7181,7 +7362,7 @@
ActionID - ActionID for this transaction. Will be returned. Mailbox - Full mailbox ID mailbox @ vm-context.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MailboxStatus
MailboxStatus
Synopsis
@@ -7200,7 +7381,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MeetmeList
MeetmeList
Synopsis
@@ -7211,13 +7392,13 @@
Lists all users in a particular MeetMe conference. MeetmeList will follow as separate events, followed by a final event called MeetmeListComplete.
Syntax
-Action: MeetmeList [ActionID:] <value> Conference: <value>
+Action: MeetmeList [ActionID:] <value> [Conference:] <value>
Arguments
ActionID - ActionID for this transaction. Will be returned. Conference - Conference number.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MeetmeMute
MeetmeMute
Synopsis
@@ -7234,7 +7415,7 @@
ActionID - ActionID for this transaction. Will be returned. Meetme Usernum
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MeetmeUnmute
MeetmeUnmute
Synopsis
@@ -7248,7 +7429,7 @@
ActionID - ActionID for this transaction. Will be returned. Meetme Usernum
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_MixMonitorMute
MixMonitorMute
Synopsis
@@ -7267,7 +7448,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Used to specify the channel to mute. Direction - Which part of the recording to mute: read, write or both (from channel, to channel or both channels). State - Turn mute on or off : 1 to turn on, 0 to turn off.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ModuleCheck
ModuleCheck
Synopsis
@@ -7284,7 +7465,7 @@
Module - Asterisk module name (not including extension).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ModuleLoad
ModuleLoad
Synopsis
@@ -7303,7 +7484,7 @@
ActionID - ActionID for this transaction. Will be returned. Module - Asterisk module name (including.so extension) or subsystem identifier: cdr enum dnsmgr extconfig manager rtp http LoadType - The operation to be done on module. If no module is specified for a reload loadtype, all modules are reloaded. load unload reload
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Monitor
Monitor
Synopsis
@@ -7322,7 +7503,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Used to specify the channel to record. File - Is the name of the file created in the monitor spool directory. Defaults to the same name as the channel (with slashes replaced with dashes). Format - Is the audio recording format. Defaults to wav. Mix - Boolean parameter as to whether to mix the input and output channels together after the recording is finished.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Originate
Originate
Synopsis
@@ -7341,7 +7522,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel name to call. Exten - Extension to use (requires Context and Priority ) Context - Context to use (requires Exten and Priority ) Priority - Priority to use (requires Exten and Context ) Application - Application to execute. Data - Data to use (requires Application ). Timeout - How long to wait for call to be answered (in ms.). CallerID - Caller ID to be set on the outgoing channel. Variable - Channel variable to set, multiple Variable: headers are allowed. Account - Account code. Async - Set to true for fast origination. Codecs - Comma-separated list of codecs to use for this call.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Park
Park
Synopsis
@@ -7360,7 +7541,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel name to park. Channel2 - Channel to announce park info to (and return to if timeout). Timeout - Number of milliseconds to wait before callback. Parkinglot - Parking lot to park channel in.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ParkedCalls
ParkedCalls
Synopsis
@@ -7377,7 +7558,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_PauseMonitor
PauseMonitor
@@ -7397,7 +7578,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Used to specify the channel to record.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Ping
Ping
Synopsis
@@ -7414,7 +7595,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_PlayDTMF
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -7434,7 +7615,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel name to send digit to. Digit - The DTMF digit to play.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueAdd
QueueAdd
Synopsis
@@ -7451,7 +7632,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue Interface Penalty Paused MemberName StateInterface
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueLog
QueueLog
Synopsis
@@ -7465,7 +7646,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue Event Uniqueid Interface Message
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueuePause
QueuePause
Synopsis
@@ -7482,7 +7663,7 @@
ActionID - ActionID for this transaction. Will be returned. Interface Paused Queue Reason
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueuePenalty
QueuePenalty
Synopsis
@@ -7498,7 +7679,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueReload
QueueReload
Synopsis
@@ -7512,7 +7693,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue Members yes no Rules yes no Parameters yes no
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueRemove
QueueRemove
Synopsis
@@ -7528,7 +7709,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue Interface
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueReset
QueueReset
Synopsis
@@ -7542,7 +7723,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueRule
QueueRule
Synopsis
@@ -7560,7 +7741,7 @@
ActionID - ActionID for this transaction. Will be returned. Rule
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Queues
Queues
Synopsis
@@ -7574,7 +7755,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueStatus
QueueStatus
Synopsis
@@ -7590,7 +7771,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue Member
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_QueueSummary
QueueSummary
Synopsis
@@ -7604,7 +7785,7 @@
ActionID - ActionID for this transaction. Will be returned. Queue
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Redirect
Redirect
Synopsis
@@ -7623,7 +7804,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel to redirect. ExtraChannel - Second call leg to transfer (optional). Exten - Extension to transfer to. ExtraExten - Extension to transfer extrachannel to (optional). Context - Context to transfer to. ExtraContext - Context to transfer extrachannel to (optional). Priority - Priority to transfer to. ExtraPriority - Priority to transfer extrachannel to (optional).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Reload
Reload
Synopsis
@@ -7643,7 +7824,7 @@
ActionID - ActionID for this transaction. Will be returned. Module - Name of the module to reload.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SendText
SendText
Synopsis
@@ -7660,7 +7841,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel to send message to. Message - Message to send.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Setvar
Setvar
Synopsis
@@ -7679,7 +7860,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Channel to set variable for. Variable - Variable name. Value - Variable value.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_ShowDialPlan
ShowDialPlan
Synopsis
@@ -7696,7 +7877,7 @@
ActionID - ActionID for this transaction. Will be returned. Extension - Show a specific extension. Context - Show a specific context.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SIPnotify
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -7716,7 +7897,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Peer to receive the notify. Variable - At least one variable pair must be specified. name = value
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SIPpeers
SIPpeers
Synopsis
@@ -7736,7 +7917,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SIPqualifypeer
SIPqualifypeer
Synopsis
@@ -7753,7 +7934,7 @@
ActionID - ActionID for this transaction. Will be returned. Peer - The peer name you want to qualify.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SIPshowpeer
SIPshowpeer
Synopsis
@@ -7772,7 +7953,7 @@
ActionID - ActionID for this transaction. Will be returned. Peer - The peer name you want to check.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SIPshowregistry
SIPshowregistry
Synopsis
@@ -7789,7 +7970,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SKINNYdevices
SKINNYdevices
Synopsis
@@ -7808,7 +7989,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SKINNYlines
SKINNYlines
Synopsis
@@ -7825,7 +8006,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SKINNYshowdevice
SKINNYshowdevice
Synopsis
@@ -7844,7 +8025,7 @@
ActionID - ActionID for this transaction. Will be returned. Device - The device name you want to check.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_SKINNYshowline
SKINNYshowline
Synopsis
@@ -7861,7 +8042,7 @@
ActionID - ActionID for this transaction. Will be returned. Line - The line name you want to check.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_Status
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -7881,7 +8062,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - The name of the channel to query for status. Variables - Comma , separated list of variable to include.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_StopMonitor
StopMonitor
Synopsis
@@ -7901,7 +8082,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_UnpauseMonitor
UnpauseMonitor
Synopsis
@@ -7918,7 +8099,7 @@
ActionID - ActionID for this transaction. Will be returned. Channel - Used to specify the channel to record.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_UpdateConfig
UpdateConfig
Synopsis
@@ -7937,7 +8118,7 @@
ActionID - ActionID for this transaction. Will be returned. SrcFilename - Configuration filename to read (e.g. foo.conf ). DstFilename - Configuration filename to write (e.g. foo.conf ) Reload - Whether or not a reload should take place (or name of specific module). Action-XXXXXX - Action to take. X's represent 6 digit number beginning with 000000. NewCat RenameCat DelCat EmptyCat Update Delete Append Insert Cat-XXXXXX - Category to operate on. X's represent 6 digit number beginning with 000000. Var-XXXXXX - Variable to work on. X's represent 6 digit number beginning with 000000. Value-XXXXXX - Value to work on. X's represent 6 digit number beginning with 000000. Match-XXXXXX - Extra match required to match line. X's represent 6 digit number beginning with 000000. Line-XXXXXX - Line in category to operate on (used with delete and insert actions). X's represent 6 digit number beginning with 000000.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_UserEvent
UserEvent
Synopsis
@@ -7956,7 +8137,7 @@
ActionID - ActionID for this transaction. Will be returned. UserEvent - Event string to send. Header1 - Content1. HeaderN - ContentN.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_VoicemailUsersList
VoicemailUsersList
Synopsis
@@ -7970,7 +8151,7 @@
ActionID - ActionID for this transaction. Will be returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
ManagerAction_WaitEvent
WaitEvent
Synopsis
@@ -7990,7 +8171,7 @@
ActionID - ActionID for this transaction. Will be returned. Timeout - Maximum time (in seconds) to wait for events, -1 means forever.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887. Dialplan Applications
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874. Dialplan Applications
Application_AddQueueMember
AddQueueMember()
Synopsis
@@ -8012,10 +8193,10 @@
stateinterface
See Also
-Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Application_AgentLogin
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ADSIProg
ADSIProg()
Synopsis
@@ -8035,7 +8216,27 @@
Application_GetCPEID adsi.conf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_AELSub
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+AELSub()
+Synopsis
+
+Launch subroutine built with AEL
+Description
+
+Execute the named subroutine, defined in AEL, from another dialplan language, such as extensions.conf, Realtime extensions, or Lua. The purpose of this application is to provide a sane entry point into AEL subroutines, the implementation of which may change from time to time.
+Syntax
+
+AELSub(routine[,args])
+
+Arguments
+routine - Named subroutine to execute. args
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_AgentLogin
AgentLogin()
Synopsis
@@ -8043,21 +8244,22 @@
Call agent login.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Asks the agent to login to the system. Always returns -1. While logged in, the agent can receive calls and will hear a beep when a new call comes in. The agent can dump the call by pressing the star key.
+Asks the agent to login to the system. Always returns -1. While logged in, the agent can receive calls and will hear a beep when a new call comes in. The agent can dump the call by pressing the star key.
Syntax
AgentLogin([AgentNo[,options]])
Arguments
AgentNo options s - silent login - do not announce the login ok segment after agent logged on/off
-See Also
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also
Application_Queue Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_AGENT agents.conf queues.conf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_AgentMonitorOutgoing
AgentMonitorOutgoing()
Synopsis
@@ -8070,17 +8272,18 @@
AgentMonitorOutgoing([options])
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Arguments
+Arguments
options d - make the app return -1 if there is an error condition. c - change the CDR so that the source of the call is Agent/agent_id n - don't generate the warnings when there is no callerid or the agentid is not known. It's handy if you want to have one context for agent and non-agent calls.
See Also
agents.conf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_AGI
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_AGI
AGI()
Synopsis
@@ -8093,17 +8296,18 @@
AGI(command[,arg1[,arg2]])
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Arguments
+Arguments
command args arg1 arg2
See Also
Application_EAGI Application_DeadAGI
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_AlarmReceiver
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_AlarmReceiver
AlarmReceiver()
Synopsis
@@ -8121,19 +8325,19 @@
alarmreceiver.conf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_AMD
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-AMD()
+AMD()
Synopsis
Attempt to detect answering machines.
Description
This application attempts to detect answering machines at the beginning of outbound calls. Simply call this application after the call has been answered (outbound only, of course). When loaded, AMD reads amd.conf and uses the parameters specified as default values. Those default values get overwritten when the calling AMD with parameters. This application sets the following channel variables:
-AMDSTATUS - This is the status of the answering machine detection MACHINE HUMAN NOTSURE HANGUP AMDCAUSE - Indicates the cause that led to the conclusion TOOLONG - Total Time. INITIALSILENCE - Silence Duration - Initial Silence. HUMAN - Silence Duration - afterGreetingSilence. LONGGREETING - Voice Duration - Greeting. MAXWORDLENGTH - Word Count - maximum number of words.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+AMDSTATUS - This is the status of the answering machine detection MACHINE HUMAN NOTSURE HANGUP AMDCAUSE - Indicates the cause that led to the conclusion TOOLONG - Total Time. INITIALSILENCE - Silence Duration - Initial Silence. HUMAN - Silence Duration - afterGreetingSilence. LONGGREETING - Voice Duration - Greeting. MAXWORDLENGTH - Word Count - maximum number of words.
Syntax
AMD([initialSilence[,greeting[,afterGreetingSilence[,totalAnalysis Time[,miniumWordLength[,betweenWordSilence[,maximumNumberOfWords[,silenceThresh
@@ -8145,13 +8349,10 @@
Application_WaitForSilence Application_WaitForNoise
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Answer
Answer()
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Synopsis
+Synopsis
Answer a channel if ringing.
Description
@@ -8162,13 +8363,16 @@
Answer([delay[,nocdr]])
Arguments
-delay - Asterisk will wait this number of milliseconds before returning to the dialplan after answering the call. nocdr - Asterisk will send an answer signal to the calling phone, but will not set the disposition or answer time in the CDR for this call.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+delay - Asterisk will wait this number of milliseconds before returning to the dialplan after answering the call. nocdr - Asterisk will send an answer signal to the calling phone, but will not set the disposition or answer time in the CDR for this call.
See Also
Application_Hangup
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Authenticate
Authenticate()
Synopsis
@@ -8182,17 +8386,15 @@
Authenticate(password[,options[,maxdigits[,prompt]]])
Arguments
-password - Password the user should know
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-options a - Set the channels' account code to the password that is entered d - Interpret the given path as database key, not a literal file m - Interpret the given path as a file which contains a list of account codes and password hashes delimited with :, listed one per line in the file. When one of the passwords is matched, the channel will have its account code set to the corresponding account code in the file. r - Remove the database key upon successful entry (valid with d only) maxdigits - maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press the # key). Defaults to 0 - no limit - wait for the user press the # key. prompt - Override the agent-pass prompt file.
+password - Password the user should know options a - Set the channels' account code to the password that is entered d - Interpret the given path as database key, not a literal file m - Interpret the given path as a file which contains a list of account codes and password hashes delimited with :, listed one per line in the file. When one of the passwords is matched, the channel will have its account code set to the corresponding account code in the file. r - Remove the database key upon successful entry (valid with d only) maxdigits - maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press the # key). Defaults to 0 - no limit - wait for the user press the # key. prompt - Override the agent-pass prompt file.
See Also
Application_VMAuthenticate Application_DISA
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_BackGround
BackGround()
Synopsis
@@ -8208,18 +8410,18 @@
Arguments
filenames filename1 filename2 options s - Causes the playback of the message to be skipped if the channel is not in the up state (i.e. it hasn't been answered yet). If this happens, the application will return immediately. n - Don't answer the channel before playing the files. m - Only break if a digit hit matches a one digit extension in the destination context. langoverride - Explicitly specifies which language to attempt to use for the requested sound files. context - This is the dialplan context that this application will use when exiting to a dialed extension.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-See Also
+See Also
Application_ControlPlayback Application_WaitExten Application_BackgroundDetect Function_TIMEOUT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_BackgroundDetect
BackgroundDetect()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Background a file with talk detect.
Description
@@ -8233,16 +8435,13 @@
filename sil - If not specified, defaults to 1000. min - If not specified, defaults to 100. max - If not specified, defaults to infinity. analysistime - If not specified, defaults to infinity.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Bridge
Bridge()
Synopsis
Bridge two channels.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
Allows the ability to bridge two channels via the dialplan. This application sets the following channel variable upon completion:
BRIDGERESULT - The result of the bridge attempt as a text string. SUCCESS FAILURE LOOP NONEXISTENT INCOMPATIBLE
@@ -8250,11 +8449,13 @@
Bridge(channel[,options])
-Arguments
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Arguments
channel - The current channel is bridged to the specified channel. options p - Play a courtesy tone to channel. h - Allow the called party to hang up by sending the * DTMF digit. H - Allow the calling party to hang up by pressing the * DTMF digit. k - Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. K - Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. L(x[:y][:z]) - Limit the call to x ms. Play a warning when y ms are left. Repeat the warning every z ms. The following special variables can be used with this option: Play sounds to the caller. yes|no (default yes) Play sounds to the callee. yes|no File to play when time is up. File to play when call begins. File to play as warning if y is defined. The default is to say the time remaining. S - Hang up the call after x seconds after the called party has answered the call. t - Allow the called party to transfer the calling party by sending the DTMF sequence defined in features.conf. T - Allow the calling party to transfer the called party by sending the DTMF sequence defined in features.conf. w - Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. W - Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. x - Cause the called party to be hung up after the bridge, instead of being restarted in the dialplan.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Busy
Busy()
Synopsis
@@ -8265,9 +8466,7 @@
This application will indicate the busy condition to the calling channel.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Busy([timeout])
+Busy([timeout])
Arguments
timeout - If specified, the calling channel will be hung up after the specified number of seconds. Otherwise, this application will wait until the calling channel hangs up.
@@ -8276,7 +8475,9 @@
Application_Congestion [Application_Progess] Application_PlayTones Application_Hangup
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_CallCompletionCancel
CallCompletionCancel()
Synopsis
@@ -8284,7 +8485,8 @@
Cancel call completion service
Description
-Cancel a Call Completion Request.
+Cancel a Call Completion Request. This application sets the following channel variables:
+CC_CANCEL_RESULT - This is the returned status of the cancel. SUCCESS FAIL CC_CANCEL_REASON - This is the reason the cancel failed. NO_CORE_INSTANCE NOT_GENERIC UNSPECIFIED
Syntax
CallCompletionCancel()
@@ -8292,7 +8494,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
Application_CallCompletionRequest
CallCompletionRequest()
Synopsis
@@ -8300,9 +8502,12 @@
Request call completion service for previous call
Description
+Request call completion service for a previously failed call attempt. This application sets the following channel variables:
+CC_REQUEST_RESULT - This is the returned status of the request. SUCCESS FAIL CC_REQUEST_REASON - This is the reason the request failed. NO_CORE_INSTANCE NOT_GENERIC TOO_MANY_REQUESTS
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Request call completion service for a previously failed call attempt.
+UNSPECIFIED
Syntax
CallCompletionRequest()
@@ -8310,7 +8515,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
Application_CELGenUserEvent
CELGenUserEvent()
Synopsis
@@ -8327,7 +8532,7 @@
event-name event-name extra - Extra text to be included with the event.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ChangeMonitor
ChangeMonitor()
Synopsis
@@ -8347,7 +8552,7 @@
filename_base - The new filename base to use for monitoring this channel.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ChanIsAvail
ChanIsAvail()
Synopsis
@@ -8365,7 +8570,7 @@
Technology/Resource - Specification of the device(s) to check. These must be in the format of Technology/Resource, where Technology represents a particular channel driver, and Resource represents a resource available to that particular channel driver. Technology2/Resource2 - Optional extra devices to check If you need more then one enter them as Technology2/Resource2&Technology3/Resourse3&..... options a - Check for all available channels, not only the first one s - Consider the channel unavailable if the channel is in use at all t - Simply checks if specified channels exist in the channel list
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ChannelRedirect
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -8386,7 +8591,7 @@
channel context extension priority
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ChanSpy
ChanSpy()
Synopsis
@@ -8394,7 +8599,7 @@
Listen to a channel, and optionally whisper into it.
Description
-This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and "out of the channel being spied on. If the chanprefix parameter is specified, only channels beginning with this string will be spied upon. While spying, the following actions may be performed:
+This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and out of the channel being spied on. If the chanprefix parameter is specified, only channels beginning with this string will be spied upon. While spying, the following actions may be performed:
Dialing # cycles the volume level. Dialing * will stop spying and look for another channel to spy on. Dialing a series of digits followed by # builds a channel name to append to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing the digits '1234#' while spying will begin spying on the channel 'Agent/1234'. Note that this feature will be overridden if the 'd' option is used
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -8411,7 +8616,7 @@
Application_ExtenSpy
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ClearHash
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -8431,7 +8636,7 @@
hashname
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ConfBridge
ConfBridge()
Synopsis
@@ -8452,7 +8657,7 @@
c - Announce user(s) count on joining a conference. m - Set initially muted. M - Enable music on hold when the conference has a single caller. Optionally, specify a musiconhold class to use. If one is not provided, it will use the channel's currently set music class, or default. class 1 - Do not play message when first person enters s - Present menu (user or admin) when * is received (send to menu). w - Wait until the marked user enters the conference. q - Quiet mode (don't play enter/leave sounds).
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Congestion
Congestion()
Synopsis
@@ -8472,7 +8677,7 @@
Application_Busy [Application_Progess] Application_PlayTones Application_Hangup
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ContinueWhile
ContinueWhile()
Synopsis
@@ -8494,7 +8699,7 @@
Application_While Application_EndWhile Application_ExitWhile
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ControlPlayback
ControlPlayback()
Synopsis
@@ -8516,7 +8721,7 @@
time - Start at time ms from the beginning of the file.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDIAcceptR2Call
DAHDIAcceptR2Call()
Synopsis
@@ -8533,7 +8738,7 @@
charge - Yes or No. Whether you want to accept the call with charge or without charge.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDIBarge
DAHDIBarge()
Synopsis
@@ -8553,7 +8758,7 @@
channel - Channel to barge.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDIRAS
DAHDIRAS()
Synopsis
@@ -8570,7 +8775,7 @@
args - A list of parameters to pass to the pppd daemon, separated by , characters.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDIScan
DAHDIScan()
Synopsis
@@ -8589,15 +8794,15 @@
group - Limit scanning to a channel group by setting this option.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDISendCallreroutingFacility
DAHDISendCallreroutingFacility()
Synopsis
-Send QSIG call rerouting facility over a PRI.
+Send an ISDN call rerouting/deflection facility message.
Description
-This application will send a Callrerouting Facility IE over the current channel.
+This application will send an ISDN switch specific call rerouting/deflection facility message over the current channel. Supported switches depend upon the version of libpri in use.
Syntax
DAHDISendCallreroutingFacility(destination[,original[,reason]])
@@ -8606,7 +8811,7 @@
destination - Destination number. original - Original called number. reason - Diversion reason, if not specified defaults to unknown
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DAHDISendKeypadFacility
DAHDISendKeypadFacility()
Synopsis
@@ -8614,11 +8819,12 @@
Send digits out of band over a PRI.
Description
-This application will send the given string of digits in a Keypad Facility IE over the current channel.
+This application will send the given string of digits in a Keypad Facility IE over the current
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Syntax
+channel.
+Syntax
DAHDISendKeypadFacility(digits)
@@ -8626,7 +8832,7 @@
digits
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DateTime
DateTime()
Synopsis
@@ -8643,7 +8849,7 @@
unixtime - time, in seconds since Jan 1, 1970. May be negative. Defaults to now. timezone - timezone, see /usr/share/zoneinfo for a list. Defaults to machine default. format - a format the time is to be said in. See voicemail.conf. Defaults to ABdY "digits/at" IMp
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DBdel
DBdel()
Synopsis
@@ -8651,11 +8857,9 @@
Delete a key from the asterisk database.
Description
-This application will delete a key from the Asterisk database.
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This application has been DEPRECATED in favor of the DB_DELETE function.This application has been DEPRECATED in favor of the DB_DELETE function.
+This application will delete a key from the Asterisk database. This application has been DEPRECATED in favor of the DB_DELETE function.This application has been DEPRECATED in favor of the DB_DELETE function.
Syntax
DBdel(family,key)
@@ -8667,7 +8871,7 @@
Function_DB_DELETE Application_DBdeltree Function_DB
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DBdeltree
DBdeltree()
Synopsis
@@ -8687,11 +8891,10 @@
Function_DB_DELETE Application_DBdel Function_DB
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_DeadAGI
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_DeadAGI
DeadAGI()
Synopsis
@@ -8711,11 +8914,10 @@
Application_AGI Application_EAGI
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_Dial
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_Dial
Dial()
Synopsis
@@ -8729,28 +8931,29 @@
Dial(Technology/Resource[&Technology2/Resource2[&...]][,timeout[,options[,URL]]
Arguments
-Technology/Resource Technology/Resource - Specification of the device(s) to dial. These must be in the format of Technology/Resource, where Technology represents a particular channel driver, and Resource represents a resource available to that particular channel driver. Technology2/Resource2 - Optional extra devices to dial in parallel If you need more then one enter them as Technology2/Resource2&Technology3/Resourse3&..... timeout - Specifies the number of seconds we attempt to dial the specified devices If not specified, this defaults to 136 years.
+Technology/Resource Technology/Resource - Specification of the device(s) to dial. These must be in the format of Technology/Resource, where Technology represents a particular channel driver, and Resource represents a resource available to that particular channel driver.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-options A - Play an announcement to the called party, where x is the prompt to be played x - The file to play to the called party a - Immediately answer the calling channel when the called channel answers in all cases. Normally, the calling channel is answered when the called channel answers, but when options such as A() and M() are used, the calling channel is not answered until all actions on the called channel (such as playing an announcement) are completed. This option can be used to answer the calling channel before doing anything on the called channel. You will rarely need to use this option, the default behavior is adequate in most cases. C - Reset the call detail record (CDR) for this call. c - If the Dial() application cancels this call, always set the flag to tell the channel driver that the call is answered elsewhere. d - Allow the calling user to dial a 1 digit extension while waiting for a call to be answered. Exit to that extension if it exists in the current context, or the context defined in the EXITCONTEXT variable, if it exists. D - Send the specified DTMF strings after the called party has answered, but before the call gets bridged. The called DTMF string is sent to the called party, and the calling DTMF string is sent to the calling party. Both arguments can be used alone. If progress is specified, its DTMF is sent immediately after receiving a PROGRESS message. called calling progress e - Execute the h extension for peer after the call ends f - If x is not provided, force the callerid of the calling channel to be set as the extension associated with the channel using a dialplan hint. For example, some PSTNs do not allow CallerID to be set to anything other than the number assigned to the caller. If x is provided, though, then this option behaves quite differently. Any outgoing channel created will have its connected party information set to x x F - When the caller hangs up, transfer the called party to the specified destination and continue execution at that location. context exten priority F - Proceed with dialplan execution at the next priority in the current extension if the source channel hangs up. g - Proceed with dialplan execution at the next priority in the current extension if the destination channel hangs up. G - If the call is answered, transfer the calling party to the specified priority and the called party to the specified priority plus one. You cannot use any additional action post answer options in conjunction with this option.You cannot use any additional action post answer options in conjunction with this option. context exten priority h - Allow the called party to hang up by sending the * DTMF digit. H - Allow the calling party to hang up by hitting the * DTMF digit. i - Asterisk will ignore any forwarding requests it may receive on this dial attempt. I - Asterisk will ignore any connected line update requests or redirecting party update requests it may receiveon this dial attempt. k - Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. K - Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. L - Limit the call to x milliseconds. Play a warning when y milliseconds are left. Repeat the warning every z milliseconds until time expires. This option is affected by the following variables: If set, this variable causes Asterisk to play the prompts to the caller. If set, this variable causes Asterisk to play the prompts to the callee. If specified, filename specifies the sound prompt to play when the timeout is reached. If not set, the time remaining will be announced. If specified, filename specifies the sound prompt to play when the call begins. If not set, the time remaining will be announced. If specified, filename specifies the sound prompt to play as a warning when time x is reached. If not set, the time remaining will be announced. x - Maximum call time, in milliseconds y - Warning time, in milliseconds z - Repeat time, in milliseconds m - Provide hold music to the calling party until a requested channel answers. A specific music on hold class (as defined in musiconhold.conf ) can be specified. class M - Execute the specified macro for the called channel before connecting to the calling channel. Arguments can be specified to the Macro using ^ as a delimiter. The macro can set the variable MACRO_RESULT to specify the following actions after the macro is finished executing: If set, this action will be taken after the macro finished executing. You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this macro.You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this macro. Be aware of the limitations that macros have, specifically with regards to use of the WaitExten application. For more information, see the documentation for Macro() macro - Name of the macro that should be executed. arg - Macro arguments n - This option is a modifier for the call screening/privacy mode. (See the p and P options.) It specifies that no introductions are to be saved in the priv-callerintros directory. delete - With delete either not specified or set to 0, the recorded introduction will not be deleted if the caller hangs up while the remote party has not yet answered. With delete set to 1, the introduction will always be deleted. N - This option is a modifier for the call screening/privacy mode. It specifies that if Caller*ID is present, do not screen the call. o - Specify that the Caller*ID that was present on the calling channel be set as the Caller*ID on the called channel. This was the behavior of Asterisk 1.0 and earlier.
+Technology2/Resource2 - Optional extra devices to dial in parallel If you need more then one enter them as Technology2/Resource2&Technology3/Resourse3&..... timeout - Specifies the number of seconds we attempt to dial the specified devices If not specified, this defaults to 136 years. options A - Play an announcement to the called party, where x is the prompt to be played x - The file to play to the called party a - Immediately answer the calling channel when the called channel answers in all cases. Normally, the calling channel is answered when the called channel answers, but when options such as A() and M() are used, the calling channel is not answered until all actions on the called channel (such as playing an announcement) are completed. This option can be used to answer the calling channel before doing anything on the called channel. You will rarely need to use this option, the default behavior is adequate in most cases. C - Reset the call detail record (CDR) for this call. c - If the Dial() application cancels this call, always set the flag to tell the channel driver that the call is answered elsewhere. d - Allow the calling user to dial a 1 digit extension while waiting for a call to be answered. Exit to that extension if it exists in the current context, or the context defined in the EXITCONTEXT variable, if it exists. D - Send the specified DTMF strings after the called party has answered, but before the call gets bridged. The called DTMF string is sent to the called party, and the calling DTMF string is sent to the calling party. Both arguments can be used alone. If progress is specified, its DTMF is sent immediately after receiving a PROGRESS message. called calling progress e - Execute the h extension for peer after the call ends f - If x is not provided, force the CallerID sent on a call-forward or deflection to the dialplan extension of this Dial() using a dialplan hint. For example, some PSTNs do not allow CallerID to be set to anything other than the numbers assigned to you. If x is provided, force the CallerID sent to x. x F - When the caller hangs up, transfer the called party to the specified destination and continue execution at that location. context exten priority F - Proceed with dialplan execution at the next priority in the current extension if the source channel hangs up. g - Proceed with dialplan execution at the next priority in the current extension if the destination channel hangs up. G - If the call is answered, transfer the calling party to the specified priority and the called party to the specified priority plus one. You cannot use any additional action post answer options in conjunction with this option.You cannot use any additional action post answer options in conjunction with this option. context exten priority h - Allow the called party to hang up by sending the * DTMF digit. H - Allow the calling party to hang up by hitting the * DTMF digit. i - Asterisk will ignore any forwarding requests it may receive on this dial attempt. I - Asterisk will ignore any connected line update requests or redirecting party update requests it may receiveon this dial attempt. k - Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. K - Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. L - Limit the call to x milliseconds. Play a warning when y milliseconds are left. Repeat the warning every z milliseconds until time expires. This option is affected by the following variables: If set, this variable causes Asterisk to play the prompts to the caller. If set, this variable causes Asterisk to play the prompts to the callee. If specified, filename specifies the sound prompt to play when the timeout is reached. If not set, the time remaining will be announced. If specified, filename specifies the sound prompt to play when the call begins. If not set, the time remaining will be announced. If specified, filename specifies the sound prompt to play as a warning when time x is reached. If not set, the time remaining will be announced. x - Maximum call time, in milliseconds y - Warning time, in milliseconds z - Repeat time, in milliseconds m - Provide hold music to the calling party until a requested channel answers. A specific music on hold class (as defined in musiconhold.conf ) can be specified. class M - Execute the specified macro for the called channel before connecting to the calling channel. Arguments can be specified to the Macro using ^ as a delimiter. The macro can set the variable MACRO_RESULT to specify the following actions after the macro is finished executing: If set, this action will be taken after the macro finished executing. You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this macro.You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this macro. Be aware of the limitations that macros have, specifically with regards to use of the WaitExten application. For more information, see the documentation for Macro() macro - Name of the macro that should be executed. arg - Macro arguments n - This option is a modifier for the call screening/privacy mode. (See the p and P options.) It specifies that no introductions are to be saved in the priv-callerintros directory. delete - With delete either not specified or set to 0, the recorded introduction will not be deleted if the caller hangs up while the remote party has not yet answered. With delete set to 1, the introduction will always be deleted. N - This option is a modifier for the call screening/privacy mode. It specifies that if Caller*ID is present, do not screen the call.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-O - Enables operator services mode. This option only works when bridging a DAHDI channel to another DAHDI channel only. if specified on non-DAHDI interfaces, it will be ignored. When the destination answers (presumably an operator services station), the originator no longer has control of their line. They may hang up, but the switch will not release their line until the destination party (the operator) hangs up. mode - With mode either not specified or set to 1, the originator hanging up will cause the phone to ring back immediately. With mode set to 2, when the operator flashes the trunk, it will ring their phone back. p - This option enables screening mode. This is basically Privacy mode without memory. P - Enable privacy mode. Use x as the family/key in the AstDB database if it is provided. The current extension is used if a database family/key is not specified. x r - Default: Indicate ringing to the calling party, even if the called party isn't actually ringing. Pass no audio to the calling party until the called channel has answered. tone - Indicate progress to calling party. Send audio 'tone' from indications.conf S - Hang up the call x seconds after the called party has answered the call. x s - Force the outgoing callerid tag parameter to be set to the string x x t - Allow the called party to transfer the calling party by sending the DTMF sequence defined in features.conf. This setting does not perform policy enforcement on transfers initiated by other methods. T - Allow the calling party to transfer the called party by sending the DTMF sequence defined in features.conf. This setting does not perform policy enforcement on transfers initiated by other methods. U - Execute via Gosub the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the Gosub using ^ as a delimiter. The Gosub routine can set the variable GOSUB_RESULT to specify the following actions after the Gosub returns. You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this routine.You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this routine. x - Name of the subroutine to execute via Gosub arg - Arguments for the Gosub routine u x - Force the outgoing callerid presentation indicator parameter to be set to one of the values passed in x : allowed_not_screened allowed_passed_screen allowed_failed_screen allowed prohib_not_screened prohib_passed_screen prohib_failed_screen prohib unavailable w - Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. W - Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. x - Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in features.conf. X - Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in features.conf. z - On a call forward, cancel any dial timeout which has been set for this call. URL - The optional URL will be sent to the called party if the channel driver supports it.
+o - If x is not provided, specify that the CallerID that was present on the calling channel be stored as the CallerID on the called channel. This was the behavior of Asterisk 1.0 and earlier. If x is provided, specify the CallerID stored on the called channel. Note that o(${CALLERID(all)}) is similar to option o without the parameter. x O - Enables operator services mode. This option only works when bridging a DAHDI channel to another DAHDI channel only. if specified on non-DAHDI interfaces, it will be ignored. When the destination answers (presumably an operator services station), the originator no longer has control of their line. They may hang up, but the switch will not release their line until the destination party (the operator) hangs up. mode - With mode either not specified or set to 1, the originator hanging up will cause the phone to ring back immediately. With mode set to 2, when the operator flashes the trunk, it will ring their phone back. p - This option enables screening mode. This is basically Privacy mode without memory. P - Enable privacy mode. Use x as the family/key in the AstDB database if it is provided. The current extension is used if a database family/key is not specified. x r - Default: Indicate ringing to the calling party, even if the called party isn't actually ringing. Pass no audio to the calling party until the called channel has answered. tone - Indicate progress to calling party. Send audio 'tone' from indications.conf S - Hang up the call x seconds after the called party has answered the call. x s - Force the outgoing callerid tag parameter to be set to the string x. Works with the f option. x t - Allow the called party to transfer the calling party by sending the DTMF sequence defined in features.conf. This setting does not perform policy enforcement on transfers initiated by other methods. T - Allow the calling party to transfer the called party by sending the DTMF sequence defined in features.conf. This setting does not perform policy enforcement on transfers initiated by other methods. U - Execute via Gosub the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the Gosub using ^ as a delimiter. The Gosub routine can set the variable GOSUB_RESULT to specify the following actions after the Gosub returns. You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this routine.You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are not run on the peer (called) channel, so you will not be able to set timeouts via the TIMEOUT() function in this routine. x - Name of the subroutine to execute via Gosub arg - Arguments for the Gosub routine u - Works with the f option. x - Force the outgoing callerid presentation indicator parameter to be set to one of the values passed in x : allowed_not_screened allowed_passed_screen allowed_failed_screen allowed prohib_not_screened prohib_passed_screen prohib_failed_screen prohib unavailable w - Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. W - Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in features.conf. x - Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in features.conf. X - Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in features.conf. z - On a call forward, cancel any dial timeout which has been set for this call. URL - The optional URL will be sent to the called party if the channel driver supports it.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Dictate
Dictate()
Synopsis
Virtual Dictation Machine.
-Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Start dictation machine using optional base_dir for files.
+Description
+
+Start dictation machine using optional base_dir for files.
Syntax
Dictate([base_dir[,filename]])
@@ -8759,7 +8962,7 @@
base_dir filename
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Directory
Directory()
Synopsis
@@ -8773,14 +8976,14 @@
Directory([vm-context[,dial-context[,options]]])
Arguments
-vm-context - This is the context within voicemail.conf to use for the Directory. If not specified and searchcontexts=no in voicemail.conf, then default will be assumed. dial-context - This is the dialplan context to use when looking for an extension that the user has selected, or when jumping to the o or a extension. options - Only one of the Only one of the f, l, or b options may be specified. If more than one is specified, then Directory will act as if b was specified. The number of characters for the user to type defaults to 3. e - In addition to the name, also read the extension number to the caller before presenting dialing options. f - Allow the caller to enter the first name of a user in the directory instead of using the last name. If specified, the optional number argument will be used for the number of characters the user should enter. n l - Allow the caller to enter the last name of a user in the directory. This is the default. If specified, the optional number argument will be used for the number of characters the user should enter. n b - Allow the caller to enter either the first or the last name of a user in the directory. If specified, the optional number argument will be used for the number of characters the user should enter.
+vm-context - This is the context within voicemail.conf to use for the Directory. If not specified and searchcontexts=no in voicemail.conf, then default will be assumed. dial-context - This is the dialplan context to use when looking for an extension that the user has selected, or when jumping to the o or a extension. options - Only one of the Only one of the f, l, or b options may be specified. If more than one is specified, then Directory will act as if b was specified. The number of characters for the user to type defaults to 3. e - In addition to the name, also read the extension number to the caller before presenting dialing options. f - Allow the caller to enter the first name of a user in the directory instead of using the last name. If specified, the optional number argument will be used for the number of characters the user should enter. n l - Allow the caller to enter the last name of a user in the directory. This is the default. If specified, the optional number argument will be used for the number of characters the user should enter.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-n m - Instead of reading each name sequentially and asking for confirmation, create a menu of up to 8 names. n - Read digits even if the channel is not answered. p - Pause for n milliseconds after the digits are typed. This is helpful for people with cellphones, who are not holding the receiver to their ear while entering DTMF. n
+n b - Allow the caller to enter either the first or the last name of a user in the directory. If specified, the optional number argument will be used for the number of characters the user should enter. n m - Instead of reading each name sequentially and asking for confirmation, create a menu of up to 8 names. n - Read digits even if the channel is not answered. p - Pause for n milliseconds after the digits are typed. This is helpful for people with cellphones, who are not holding the receiver to their ear while entering DTMF. n
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DISA
DISA()
Synopsis
@@ -8794,16 +8997,17 @@
DISA(passcode|filename[,context[,cid[,mailbox[@context][,options]]]])
Arguments
-passcode|filename - If you need to present a DISA dialtone without entering a password, simply set passcode to no-password You may specified a filename instead of a passcode, this filename must contain individual passcodes context - Specifies the dialplan context in which the user-entered extension will be matched. If no context is specified, the DISA application defaults to the disa context. Presumably a normal system will have a special context set up for DISA use with some or a lot of restrictions. cid - Specifies a new (different) callerid to be used for this call. mailbox - Will cause a stutter-dialtone (indication dialrecall ) to be used, if the specified mailbox contains any new messages. mailbox context options n - The DISA application will not answer initially. p - The extension entered will be considered complete when a # is entered.
+passcode|filename - If you need to present a DISA dialtone without entering a password, simply set passcode to no-password You may specified a filename instead of a passcode, this filename must contain individual passcodes context - Specifies the dialplan context in which the user-entered extension will be matched. If no context is specified, the DISA application defaults to the disa context. Presumably a normal system will have a special context set up for DISA use with some or a lot of restrictions. cid - Specifies a new (different) callerid to be used for this call. mailbox - Will cause a stutter-dialtone (indication dialrecall ) to be used, if the specified mailbox contains any new messages. mailbox context
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-See Also
+options n - The DISA application will not answer initially. p - The extension entered will be considered complete when a # is entered.
+See Also
Application_Authenticate Application_VMAuthenticate
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_DumpChan
DumpChan()
Synopsis
@@ -8823,7 +9027,7 @@
Application_NoOp Application_Verbose
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_EAGI
EAGI()
Synopsis
@@ -8831,11 +9035,9 @@
Executes an EAGI compliant application.
Description
-Using 'EAGI' provides enhanced AGI, with incoming audio available out of band on file descriptor 3.
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to control a telephony channel, play audio, read DTMF digits, etc. by communicating with the AGI protocol on stdin and stdout. As of 1.6.0, this channel will not stop dialplan execution on hangup inside of this application. Dialplan execution will continue normally, even upon hangup until the AGI application signals a desire to stop (either by exiting or, in the case of a net script, by closing the connection). A locally executed AGI script will receive SIGHUP on hangup from the channel except when using DeadAGI. A fast AGI server will correspondingly receive a HANGUP inline with the command dialog. Both of theses signals may be disabled by setting the Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to control a telephony channel, play audio, read DTMF digits, etc. by communicating with the AGI protocol on None - AGISIGHUP channel variable to no before executing the AGI application. Use the CLI command agi show commands to list available agi commands. This application sets the following channel variable upon completion:
+Using 'EAGI' provides enhanced AGI, with incoming audio available out of band on file descriptor 3. Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to control a telephony channel, play audio, read DTMF digits, etc. by communicating with the AGI protocol on stdin and stdout. As of 1.6.0, this channel will not stop dialplan execution on hangup inside of this application. Dialplan execution will continue normally, even upon hangup until the AGI application signals a desire to stop (either by exiting or, in the case of a net script, by closing the connection). A locally executed AGI script will receive SIGHUP on hangup from the channel except when using DeadAGI. A fast AGI server will correspondingly receive a HANGUP inline with the command dialog. Both of theses signals may be disabled by setting the Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to control a telephony channel, play audio, read DTMF digits, etc. by communicating with the AGI protocol on None - AGISIGHUP channel variable to no before executing the AGI application. Use the CLI command agi show commands to list available agi commands. This application sets the following channel variable upon completion:
AGISTATUS - The status of the attempt to the run the AGI script text string, one of: SUCCESS FAILURE NOTFOUND HANGUP
Syntax
@@ -8848,17 +9050,17 @@
Application_AGI Application_DeadAGI
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Echo
Echo()
Synopsis
-Echo audio, video, DTMF back to the calling party
-Description
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Echos back any audio, video or DTMF frames read from the calling channel back to itself. Note: If '#' detected application exits
+Echo audio, video, DTMF back to the calling party
+Description
+
+Echos back any audio, video or DTMF frames read from the calling channel back to itself. Note: If '#' detected application exits
Syntax
Echo()
@@ -8866,7 +9068,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_EndWhile
EndWhile()
Synopsis
@@ -8885,17 +9087,17 @@
Application_While Application_ExitWhile Application_ContinueWhile
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Exec
Exec()
Synopsis
-Executes dialplan application.
-Description
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Allows an arbitrary application to be invoked even when not hard coded into the dialplan. If the underlying application terminates the dialplan, or if the application cannot be found, Exec will terminate the dialplan. To invoke external applications, see the application System. If you would like to catch any error instead, see TryExec.
+Executes dialplan application.
+Description
+
+Allows an arbitrary application to be invoked even when not hard coded into the dialplan. If the underlying application terminates the dialplan, or if the application cannot be found, Exec will terminate the dialplan. To invoke external applications, see the application System. If you would like to catch any error instead, see TryExec.
Syntax
Exec(arguments)
@@ -8904,7 +9106,7 @@
appname - Application name and arguments of the dialplan application to execute. arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ExecIf
ExecIf()
Synopsis
@@ -8919,13 +9121,14 @@
Arguments
expression execapp appiftrue appiffalse
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+See Also
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_ExecIfTime
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_ExecIfTime
ExecIfTime()
Synopsis
@@ -8944,7 +9147,7 @@
Application_Exec Application_TryExec
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ExitWhile
ExitWhile()
Synopsis
@@ -8955,18 +9158,17 @@
Exits a While() loop, whether or not the conditional has been satisfied.
Syntax
-ExitWhile()
-
-Arguments
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-See Also
+ExitWhile()
+
+Arguments
+See Also
Application_While Application_EndWhile Application_ContinueWhile
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ExtenSpy
ExtenSpy()
Synopsis
@@ -8983,17 +9185,17 @@
ExtenSpy(exten[@context][,options])
Arguments
-exten exten - Specify extension. context - Optionally specify a context, defaults to default. options b - Only spy on channels involved in a bridged call. B - Instead of whispering on a single channel barge in on both channels involved in the call. c digit - Specify a DTMF digit that can be used to spy on the next available channel. d - Override the typical numeric DTMF functionality and instead use DTMF to switch between spy modes. 4 - spy mode 5 - whisper mode 6 - barge mode e - Enable enforced mode, so the spying channel can only monitor extensions whose name is in the ext : delimited list. ext E - Exit when the spied-on channel hangs up.
+exten exten - Specify extension. context - Optionally specify a context, defaults to default. options b - Only spy on channels involved in a bridged call. B - Instead of whispering on a single channel barge in on both channels involved in the call. c digit - Specify a DTMF digit that can be used to spy on the next available channel.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-g - both both grp and SPYGROUP can contain either a single group or a colon-delimited list of groups, such as sales:support:accounting. grp - Only spy on channels in which one or more of the groups listed in grp matches one or more groups from the SPYGROUP variable set on the channel to be spied upon. n - Say the name of the person being spied on if that person has recorded his/her name. If a context is specified, then that voicemail context will be searched when retrieving the name, otherwise the default context be used when searching for the name (i.e. if SIP/1000 is the channel being spied on and no mailbox is specified, then 1000 will be used when searching for the name). mailbox context o - Only listen to audio coming from this channel. q - Don't play a beep when beginning to spy on a channel, or speak the selected channel name. r - Record the session to the monitor spool directory. An optional base for the filename may be specified. The default is chanspy. basename s - Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name. S - Stop when there are no more extensions left to spy on. v - Adjust the initial volume in the range from -4 to 4. A negative value refers to a quieter setting. value w - Enable whisper mode, so the spying channel can talk to the spied-on channel. W - Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel. x digit - Specify a DTMF digit that can be used to exit the application. X - Allow the user to exit ChanSpy to a valid single digit numeric extension in the current context or the context specified by the SPY_EXIT_CONTEXT channel variable. The name of the last channel that was spied on will be stored in the SPY_CHANNEL variable. 4 - spy mode 5 - whisper mode 6 - barge mode
+d - Override the typical numeric DTMF functionality and instead use DTMF to switch between spy modes. 4 - spy mode 5 - whisper mode 6 - barge mode e - Enable enforced mode, so the spying channel can only monitor extensions whose name is in the ext : delimited list. ext E - Exit when the spied-on channel hangs up. g - both both grp and SPYGROUP can contain either a single group or a colon-delimited list of groups, such as sales:support:accounting. grp - Only spy on channels in which one or more of the groups listed in grp matches one or more groups from the SPYGROUP variable set on the channel to be spied upon. n - Say the name of the person being spied on if that person has recorded his/her name. If a context is specified, then that voicemail context will be searched when retrieving the name, otherwise the default context be used when searching for the name (i.e. if SIP/1000 is the channel being spied on and no mailbox is specified, then 1000 will be used when searching for the name). mailbox context o - Only listen to audio coming from this channel. q - Don't play a beep when beginning to spy on a channel, or speak the selected channel name. r - Record the session to the monitor spool directory. An optional base for the filename may be specified. The default is chanspy. basename s - Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name. S - Stop when there are no more extensions left to spy on. v - Adjust the initial volume in the range from -4 to 4. A negative value refers to a quieter setting. value w - Enable whisper mode, so the spying channel can talk to the spied-on channel. W - Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel. x digit - Specify a DTMF digit that can be used to exit the application. X - Allow the user to exit ChanSpy to a valid single digit numeric extension in the current context or the context specified by the SPY_EXIT_CONTEXT channel variable. The name of the last channel that was spied on will be stored in the SPY_CHANNEL variable. 4 - spy mode 5 - whisper mode 6 - barge mode
See Also
Application_ChanSpy
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ExternalIVR
ExternalIVR()
Synopsis
@@ -9001,18 +9203,19 @@
Interfaces with an external IVR application.
Description
-Either forks a process to run given command or makes a socket to connect to given host and starts a generator on the channel. The generator's play list is controlled by the external application, which can add and clear entries via simple commands issued over its stdout. The external application will receive all DTMF events received on the channel, and notification if the channel is hung up. The received on the channel, and notification if the channel is hung up. The application will not be forcibly terminated when the channel is hung up. See doc/externalivr.txt for a protocol specification.
-Syntax
-
-ExternalIVR([arg1][,arg2][,options])
+Either forks a process to run given command or makes a socket to connect to given host and starts a generator on the channel. The generator's play list is controlled by the external application, which can add and clear entries via simple commands issued over its stdout. The external application will receive all DTMF events received on the channel, and notification if the channel is hung up. The received on the channel, and notification if the channel is hung up. The application will not be forcibly terminated when the channel is hung up. For more information see doc/AST.pdf.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
+Syntax
+
+ExternalIVR([arg1][,arg2][,options])
+
+Arguments
command|ivr://host arg1 arg2 options n - Tells ExternalIVR() not to answer the channel. i - Tells ExternalIVR() not to send a hangup and exit when the channel receives a hangup, instead it sends an I informative message meaning that the external application MUST hang up the call with an H command. d - Tells ExternalIVR() to run on a channel that has been hung up and will not look for hangups. The external application must exit with an E command.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Festival
Festival()
Synopsis
@@ -9029,17 +9232,18 @@
text intkeys
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Flash
Flash()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Flashes a DAHDI Trunk.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Performs a flash on a DAHDI trunk. This can be used to access features provided on an incoming analogue circuit such as conference and call waiting. Use with SendDTMF() to perform external transfers.
+Performs a flash on a DAHDI trunk. This can be used to access features provided on an incoming analogue circuit such as conference and call waiting. Use with SendDTMF() to perform external transfers.
Syntax
Flash()
@@ -9050,7 +9254,7 @@
Application_SendDTMF
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_FollowMe
FollowMe()
Synopsis
@@ -9065,11 +9269,12 @@
Arguments
followmeid options s - Playback the incoming status message prior to starting the follow-me step(s) a - Record the caller's name so it can be announced to the callee on each step. n - Playback the unreachable status message if we've run out of steps to reach the or the callee has elected not to be reachable. d - Disable the 'Please hold while we try to connect your call' announcement.
-See Also Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ForkCDR
ForkCDR()
Synopsis
@@ -9077,10 +9282,11 @@
Forks the Call Data Record.
Description
-Causes the Call Data Record to fork an additional cdr record starting from the time of the fork call. This new cdr record will be linked to end of the list of cdr records attached to the channel. The original CDR has a LOCKED flag set, which forces most cdr operations to skip it, except for the functions that set the answer and end times, which ignore the LOCKED flag. This allows all the cdr records in the channel to be 'ended' together when the channel is closed. The CDR() func (when setting CDR values) normally ignores the LOCKED flag also, but has options to vary its behavior. The 'T' option (described below), can override this behavior, but beware the risks. First, this app finds the last cdr record in the list, and makes a copy of it. This new copy will be the newly forked cdr record. Next, this new record is linked to the end of the cdr record list. Next, The new cdr record is RESET (unless you use an option to prevent this) This means that: 1. All flags are unset on the cdr record 2. the start, end, and answer times are all set to zero. 3. the billsec and duration fields are set to zero. 4. the start time is set to the current time. 5. the disposition is set to NULL. Next, unless you specified the v option, all variables will be removed from the original cdr record. Thus, the v option allows any CDR variables to be replicated to all new forked cdr records. Without the v option, the variables on the original are effectively moved to the new forked cdr record. Next, if the s option is set, the provided variable and value are set on the original cdr record. Next, if the a option is given, and the original cdr record has an answer time set, then the new forked cdr record will have its answer time set to its start time. If the old answer time were carried forward, the answer time would be earlier than the start time, giving strange duration and billsec times. If the d option was specified, the disposition is copied from the original cdr record to the new
+Causes the Call Data Record to fork an additional cdr record starting from the time of the fork call. This new cdr record will be linked to end of the list of cdr records attached to the channel. The original CDR has a LOCKED flag set, which forces most cdr operations to skip it, except for the functions that set the answer and end times, which ignore the LOCKED flag. This allows all the cdr records in the channel to be 'ended' together when the channel is closed. The CDR() func (when setting CDR values) normally ignores the LOCKED flag also, but has options to vary its behavior. The 'T' option (described below), can override this behavior, but beware the risks. First, this app finds the last cdr record in the list, and makes a copy of it. This new copy will be the newly forked cdr record. Next, this new record is linked to the end of the cdr record list. Next, The new cdr record is RESET (unless you use an option to prevent this) This means that: 1. All flags are unset on the cdr record 2. the start, end, and answer times are all set to zero. 3. the billsec and duration fields are set to zero. 4. the start time is set to the current time. 5. the disposition is set to NULL. Next, unless you specified the v option, all variables will be removed from the original cdr record. Thus, the v option allows any CDR variables to be replicated to all new forked cdr records. Without the v option, the variables on the original are effectively moved to the new forked cdr record. Next, if the s option is set, the provided variable and value are set on the original cdr record. Next, if the a option is given, and the original cdr record has an answer time set, then the new forked cdr record will have its answer time set to its start time. If the old answer time were carried
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-forked cdr. If the D option was specified, the destination channel field in the new forked CDR is erased. If the e option was specified, the 'end' time for the original cdr record is set to the current time. Future hang-up or ending events will not override this time stamp. If the A option is specified, the original cdr record will have it ANS_LOCKED flag set, which prevent future answer events from updating the original cdr record's disposition. Normally, an ANSWERED event would mark all cdr records in the chain as ANSWERED. If the T option is specified, the original cdr record will have its DONT_TOUCH flag set, which will force the cdr_answer, cdr_end, and cdr_setvar functions to leave that cdr record alone. And, last but not least, the original cdr record has its LOCKED flag set. Almost all internal CDR functions (except for the funcs that set the end, and answer times, and set a variable) will honor this flag and leave a LOCKED cdr record alone. This means that the newly created forked cdr record will be affected by events transpiring within Asterisk, with the previously noted exceptions.
+forward, the answer time would be earlier than the start time, giving strange duration and billsec times. If the d option was specified, the disposition is copied from the original cdr record to the new forked cdr. If the D option was specified, the destination channel field in the new forked CDR is erased. If the e option was specified, the 'end' time for the original cdr record is set to the current time. Future hang-up or ending events will not override this time stamp. If the A option is specified, the original cdr record will have it ANS_LOCKED flag set, which prevent future answer events from updating the original cdr record's disposition. Normally, an ANSWERED event would mark all cdr records in the chain as ANSWERED. If the T option is specified, the original cdr record will have its DONT_TOUCH flag set, which will force the cdr_answer, cdr_end, and cdr_setvar functions to leave that cdr record alone. And, last but not least, the original cdr record has its LOCKED flag set. Almost all internal CDR functions (except for the funcs that set the end, and answer times, and set a variable) will honor this flag and leave a LOCKED cdr record alone. This means that the newly created forked cdr record will be affected by events transpiring within Asterisk, with the previously noted exceptions.
Syntax
ForkCDR([options])
@@ -9092,16 +9298,16 @@
Function_CDR Application_NoCDR Application_ResetCDR
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_GetCPEID
GetCPEID()
-Synopsis
-
-Get ADSI CPE ID.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
+Synopsis
+
+Get ADSI CPE ID.
+Description
Obtains and displays ADSI CPE ID and other information in order to properly setup dahdi.conf for on-hook operations.
Syntax
@@ -9111,7 +9317,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Gosub
Gosub()
Synopsis
@@ -9129,13 +9335,13 @@
See Also
Application_GosubIf Application_Macro Application_Goto Application_Return Application_StackPop
-Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_GosubIf
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_GosubIf
GosubIf()
Synopsis
@@ -9154,7 +9360,7 @@
Application_Gosub Application_Return Application_MacroIf Function_IF Application_GotoIf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Goto
Goto()
Synopsis
@@ -9162,11 +9368,11 @@
Jump to a particular priority, extension, or context.
Description
-This application will set the current context, extension, and priority in the channel structure. After it completes, the pbx engine will continue dialplan execution at the specified location. If no specific extension, or extension and context, are specified, then this application will just set the specified priority of the current extension. At least a priority is required as an argument, or the goto will return a -1, and the channel and call will be terminated.
+This application will set the current context, extension, and priority in the channel structure. After it completes, the pbx engine will continue dialplan execution at the specified location. If no specific extension, or extension and context, are specified, then this application will just set the
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-If the location that is put into the channel information is bogus, and asterisk cannot find that location in the dialplan, then the execution engine will try to find and execute the code in the i (invalid) extension in the current context. If that does not exist, it will try to execute the h extension. If either or neither the h or i extensions have been defined, the channel is hung up, and the execution of instructions on the channel is terminated. What this means is that, for example, you specify a context that does not exist, then it will not be possible to find the h or i extensions, and the call will terminate!
+specified priority of the current extension. At least a priority is required as an argument, or the goto will return a -1, and the channel and call will be terminated. If the location that is put into the channel information is bogus, and asterisk cannot find that location in the dialplan, then the execution engine will try to find and execute the code in the i (invalid) extension in the current context. If that does not exist, it will try to execute the h extension. If either or neither the h or i extensions have been defined, the channel is hung up, and the execution of instructions on the channel is terminated. What this means is that, for example, you specify a context that does not exist, then it will not be possible to find the h or i extensions, and the call will terminate!
Syntax
Goto([context[,extensions,priority]])
@@ -9178,7 +9384,7 @@
Application_GotoIf Application_GotoIfTime Application_Gosub Application_Macro
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_GotoIf
GotoIf()
Synopsis
@@ -9186,11 +9392,11 @@
Conditional goto.
Description
-This application will set the current context, extension, and priority in the channel structure based on the evaluation of the given condition. After this application completes, the pbx engine will continue dialplan execution at the specified location in the dialplan. The labels are specified with the same syntax as used within the Goto application. If the label chosen by the condition is omitted, no jump is performed, and the execution passes to the next instruction. If the target location is bogus, and does not exist, the execution engine will try to find and execute the code in the i (invalid) extension in the current context. If that does not exist, it will try to execute the h extension. If either or neither the h or i extensions have been defined, the channel is hung up, and the execution of instructions on the channel is terminated. Remember that this command can set the current context, and if the context specified does not exist, then it will not be able to find any 'h' or 'i' extensions there, and the channel and call will both be terminated!.
-
+This application will set the current context, extension, and priority in the channel structure based on the evaluation of the given condition. After this application completes, the pbx engine will continue dialplan execution at the specified location in the dialplan. The labels are specified with the same syntax as used within the Goto application. If the label chosen by the condition is omitted, no jump is performed, and the execution passes to the next instruction. If the target location is bogus, and does not exist, the execution engine will try to find and execute the code in the i (invalid) extension in the current context. If that does not exist, it will try to execute the h extension. If either or neither the h or i extensions have been defined, the channel is hung up,
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Syntax
+and the execution of instructions on the channel is terminated. Remember that this command can set the current context, and if the context specified does not exist, then it will not be able to find any 'h' or 'i' extensions there, and the channel and call will both be terminated!.
+Syntax
GotoIf(condition?[labeliftrue][:labeliffalse])
@@ -9201,7 +9407,7 @@
Application_Goto Application_GotoIfTime Application_GosubIf Application_MacroIf
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_GotoIfTime
GotoIfTime()
Synopsis
@@ -9215,17 +9421,17 @@
GotoIfTime(timesweekdaysmdaysmonths[,timezone]?[labeliftrue][:labeliffalse])
Arguments
-condition times weekdays mdays months timezone destination labeliftrue
+condition
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-labeliffalse
+times weekdays mdays months timezone destination labeliftrue labeliffalse
See Also
Application_GotoIf Function_IFTIME Function_TESTTIME
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Hangup
Hangup()
Synopsis
@@ -9245,18 +9451,17 @@
Application_Answer Application_Busy Application_Congestion
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_IAX2Provision
IAX2Provision()
Synopsis
-Provision a calling IAXy with a given template.
-Description
-
-Provisions the calling IAXy (assuming the calling entity is in fact an IAXy) with the given template.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Returns -1 on error or 0 on success.
+Provision a calling IAXy with a given template.
+Description
+
+Provisions the calling IAXy (assuming the calling entity is in fact an IAXy) with the given template. Returns -1 on error or 0 on success.
Syntax
IAX2Provision([template])
@@ -9265,7 +9470,7 @@
template - If not specified, defaults to default.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ICES
ICES()
Synopsis
@@ -9282,16 +9487,16 @@
config - ICES configuration file.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ImportVar
-ImportVar()
-Synopsis
-
-Import a variable from a channel into a new variable.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
+ImportVar()
+Synopsis
+
+Import a variable from a channel into a new variable.
+Description
This application imports a variable from the specified channel (as opposed to the current one) and stores it as a variable ( newvar ) in the current channel (the channel that is calling this application). Variables created by this application have the same inheritance properties as those created with the Set application.
Syntax
@@ -9305,7 +9510,7 @@
Application_Set
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Incomplete
Incomplete()
Synopsis
@@ -9319,12 +9524,14 @@
Incomplete([n])
Arguments
-n - If specified, then Incomplete will not attempt to answer the channel first. Most channel types need to be in Answer state in order to receive DTMF.Most channel types need to be in Answer state in order to receive DTMF.
-See Also Import Version
+n - If specified, then Incomplete will not attempt to answer the channel first. Most channel types need to be in Answer state in order to
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+receive DTMF.Most channel types need to be in Answer state in order to receive DTMF.
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_IVRDemo
IVRDemo()
Synopsis
@@ -9341,7 +9548,7 @@
filename
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JabberJoin
JabberJoin()
Synopsis
@@ -9355,14 +9562,13 @@
JabberJoin(Jabber,RoomJID[,Nickname])
Arguments
-Jabber - Client or transport Asterisk uses to connect to Jabber. RoomJID - XMPP/Jabber JID (Name) of chat room. Nickname - The nickname Asterisk will use in the chat room. If a different nickname is supplied to an already joined room, the old nick will be changed to the new one.If a different nickname is supplied to an already joined room, the old nick will be changed to the new one.
-See Also
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Import Version
+Jabber - Client or transport Asterisk uses to connect to Jabber. RoomJID - XMPP/Jabber JID (Name) of chat room. Nickname - The nickname Asterisk will use in the chat room. If a different nickname is supplied to an already joined room, the old nick will be changed to the new one.If a different nickname is supplied to an already joined room, the old nick will be changed to the new one.
+See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JabberLeave
JabberLeave()
Synopsis
@@ -9379,7 +9585,7 @@
Jabber - Client or transport Asterisk uses to connect to Jabber. RoomJID - XMPP/Jabber JID (Name) of chat room. Nickname - The nickname Asterisk uses in the chat room.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JabberSend
JabberSend()
Synopsis
@@ -9388,21 +9594,21 @@
Description
Sends the content of message as text message from the given account to the buddy identified by jid Example: JabberSend(asterisk,bob@domain.com,Hello world) sends "Hello world" to bob@domain.com as an XMPP message from the account asterisk, configured in jabber.conf.
-Syntax
-JabberSend(account,jid,message)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
+Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+JabberSend(account,jid,message)
-account - The local named account to listen on (specified in jabber.conf) jid - Jabber ID of the buddy to send the message to. It can be a bare JID (username@domain) or a full JID (username@domain/resource). message - The message to send.
+Arguments
+account - The local named account to listen on (specified in jabber.conf) jid - Jabber ID of the buddy to send the message to. It can be a bare JID (username@domain) or a full JID (username@domain/resource). message - The message to send.
See Also
Function_JABBER_STATUS Function_JABBER_RECEIVE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JabberSendGroup
JabberSendGroup()
Synopsis
@@ -9419,16 +9625,16 @@
Jabber - Client or transport Asterisk uses to connect to Jabber. RoomJID - XMPP/Jabber JID (Name) of chat room. Message - Message to be sent to the chat room. Nickname - The nickname Asterisk uses in the chat room.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JabberStatus
-JabberStatus()
-Synopsis
-
-Retrieve the status of a jabber list member
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
+JabberStatus()
+Synopsis
+
+Retrieve the status of a jabber list member
+Description
This application is deprecated. Please use the JABBER_STATUS() function instead. Retrieves the numeric status associated with the specified buddy JID. The return value in the Variable will be one of the following. Online. Chatty. Away. Extended Away. Do Not Disturb. Offline. Not In Roster.
Syntax
@@ -9439,7 +9645,7 @@
Jabber - Client or transport Asterisk users to connect to Jabber. JID - XMPP/Jabber JID (Name) of recipient. Variable - Variable to store the status of requested user.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_JACK
JACK()
Synopsis
@@ -9447,18 +9653,18 @@
Jack Audio Connection Kit
Description
-When executing this application, two jack ports will be created; one input and one output. Other applications can be hooked up to these ports to access audio coming from, or being send to the channel.
-Syntax
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-JACK([options])
+When executing this application, two jack ports will be created; one input and one output. Other applications can be hooked up to these ports to access audio coming from, or being send to the channel.
+Syntax
+
+JACK([options])
Arguments
options s name - Connect to the specified jack server name i name - Connect the output port that gets created to the specified jack input port o name - Connect the input port that gets created to the specified jack output port c name - By default, Asterisk will use the channel name for the jack client name. Use this option to specify a custom client name.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Log
Log()
Synopsis
@@ -9469,21 +9675,22 @@
Sends an arbitrary text message to a selected log level.
Syntax
-Log([level,message])
+Log(level,message)
Arguments
level - Level must be one of ERROR, WARNING, NOTICE, DEBUG, VERBOSE or DTMF. message - Output text message.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Macro
-Macro()
-Synopsis
-Macro Implementation.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
+Macro()
+Synopsis
+
+Macro Implementation.
+Description
Executes a macro using the context macro- name, jumping to the s extension of that context and executing each step, then returning when the steps end. The calling extension, context, and priority are stored in The calling extension, context, and priority are stored in None - MACRO_EXTEN, The calling extension, context, and priority are stored in None - MACRO_CONTEXT and The calling extension, context, and priority are stored in None - MACRO_PRIORITY respectively. Arguments become The calling extension, context, and priority are stored in None - ARG1, The calling extension, context, and priority are stored in None - ARG2, etc in the macro context. If you Goto out of the Macro context, the Macro will terminate and control will be returned at the location of the Goto. If If None - MACRO_OFFSET is set at termination, Macro will attempt to continue at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise. Because of the way Macro is implemented (it executes the priorities contained within it via sub-engine), and a fixed per-thread memory stack allowance, macros are limited to 7 levels of nesting (macro calling macro calling macro, etc.); It may be possible that stack-intensive applications in deeply nested macros could cause asterisk to crash earlier than this limit. It is advised that if you need to deeply nest macro calls, that you use the Gosub application (now allows arguments like a Macro) with explict Return() calls instead. Use of the application WaitExten within a macro will not function as expected. Please use the Read application in order to read DTMF from a channel currently executing a macro.
Syntax
@@ -9495,14 +9702,14 @@
See Also
Application_MacroExit Application_Goto Application_Gosub
-Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_MacroExclusive
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-MacroExclusive()
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_MacroExclusive
+MacroExclusive()
Synopsis
Exclusive Macro Implementation.
@@ -9520,7 +9727,7 @@
Application_Macro
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MacroExit
MacroExit()
Synopsis
@@ -9529,20 +9736,20 @@
Description
Causes the currently running macro to exit as if it had ended normally by running out of priorities to execute. If used outside a macro, will likely cause unexpected behavior.
-Syntax
-MacroExit()
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
+Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+MacroExit()
-See Also
+Arguments
+See Also
Application_Macro
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MacroIf
MacroIf()
Synopsis
@@ -9562,16 +9769,16 @@
Application_GotoIf Application_GosubIf Function_IF
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MailboxExists
-MailboxExists()
-Synopsis
-
-Check to see if Voicemail mailbox exists.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
+MailboxExists()
+Synopsis
+
+Check to see if Voicemail mailbox exists.
+Description
Check to see if the specified mailbox exists. If no voicemail context is specified, the default context will be used. This application will set the following channel variable upon completion:
VMBOXEXISTSSTATUS - This will contain the status of the execution of the MailboxExists application. Possible values include: SUCCESS FAILED
@@ -9583,7 +9790,7 @@
mailbox mailbox context options - None options.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MeetMe
MeetMe()
Synopsis
@@ -9592,26 +9799,26 @@
Description
Enters the user into a specified MeetMe conference. If the confno is omitted, the user will be prompted to enter one. User can exit the conference by hangup, or if the p option is specified, by pressing #. The DAHDI kernel modules and at least one hardware driver (or dahdi_dummy) must be present for conferencing to operate properly. In addition, the chan_dahdi channel driver must be loaded for the The DAHDI kernel modules and at least one hardware driver (or dahdi_dummy) must be present for conferencing to operate properly. In addition, the chan_dahdi channel driver must be loaded for the i and r options to operate at all.
-Syntax
-
-MeetMe([confno[,options[,pin]]])
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
+Syntax
+
+MeetMe([confno[,options[,pin]]])
+
+Arguments
confno - The conference number options a - Set admin mode. A - Set marked mode. b - Run AGI script specified in MEETME_AGI_BACKGROUND Default: conf-background.agi. This does not work with non-DAHDI channels in the same conference).This does not work with non-DAHDI channels in the same conference). c - Announce user(s) count on joining a conference. C - Continue in dialplan when kicked out of conference. d - Dynamically add conference. D - Dynamically add conference, prompting for a PIN. e - Select an empty conference. E - Select an empty pinless conference. F - Pass DTMF through the conference. G - Play an intro announcement in conference. x - The file to playback i - Announce user join/leave with review. I - Announce user join/leave without review. l - Set listen only mode (Listen only, no talking). m - Set initially muted. M - Enable music on hold when the conference has a single caller. Optionally, specify a musiconhold class to use. If one is not provided, it will use the channel's currently set music class, or default. class o - Set talker optimization - treats talkers who aren't speaking as being muted, meaning (a) No encode is done on transmission and (b) Received audio that is not registered as talking is omitted causing no buildup in background noise. p - Allow user to exit the conference by pressing # (default) or any of the defined keys. If keys contain * this will override option s . The key used is set to channel variable MEETME_EXIT_KEY. keys P - Always prompt for the pin even if it is specified. q - Quiet mode (don't play enter/leave sounds). r - Record conference (records as MEETME_RECORDINGFILE using format MEETME_RECORDINGFORMAT. Default filename is meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is wav. s - Present menu (user or admin) when * is received (send to menu). t - Set talk only mode. (Talk only, no listening). T - Set talker detection (sent to manager interface and meetme list). w - Wait until the marked user enters the conference. secs x - Close the conference when last marked user exits X - Allow user to exit the conference by entering a valid single digit extension MEETME_EXIT_CONTEXT or the current context if that variable is not defined. 1 - Do not play message when first person enters S - Kick the user x seconds after he entered into the conference. x L - Limit the conference to x ms. Play a warning when y ms are left. Repeat the warning every z ms. The following special variables can be used with this option: File to play when time is up. File to play as warning if y is defined. The default is to say the time remaining. x y z pin
See Also
Application_MeetMeCount Application_MeetMeAdmin Application_MeetMeChannelAdmin
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_MeetMeAdmin
-MeetMeAdmin()
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_MeetMeAdmin
+MeetMeAdmin()
+Synopsis
MeetMe conference administration.
Description
@@ -9629,13 +9836,12 @@
Application_MeetMe
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_MeetMeChannelAdmin
-MeetMeChannelAdmin()
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_MeetMeChannelAdmin
+MeetMeChannelAdmin()
+Synopsis
MeetMe conference Administration (channel specific).
Description
@@ -9649,7 +9855,7 @@
channel command k - Kick the specified user out of the conference he is in. m - Unmute the specified user. M - Mute the specified user.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MeetMeCount
MeetMeCount()
Synopsis
@@ -9663,16 +9869,16 @@
MeetMeCount(confno[,var])
Arguments
-confno - Conference number. var
-See Also
-
-Application_MeetMe
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Import Version
+confno - Conference number. var
+See Also
+
+Application_MeetMe
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Milliwatt
Milliwatt()
Synopsis
@@ -9689,7 +9895,7 @@
options o - Generate the tone at 1000Hz like previous version.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MinivmAccMess
MinivmAccMess()
Synopsis
@@ -9697,19 +9903,21 @@
Record account specific messages.
Description
-This application is part of the Mini-Voicemail system, configured in minivm.conf. Use this application to record account specific audio/video messages for busy, unavailable and temporary messages. Account specific directories will be created if they do not exist.
-MVM_ACCMESS_STATUS - This is the result of the attempt to record the specified greeting. FAILED is set if the file can't be created. SUCCESS FAILED
-Syntax
+This application is part of the Mini-Voicemail system, configured in minivm.conf. Use this application to record account specific audio/video messages for busy, unavailable and temporary messages.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-MinivmAccMess(usernamedomain[,options])
+Account specific directories will be created if they do not exist.
+MVM_ACCMESS_STATUS - This is the result of the attempt to record the specified greeting. FAILED is set if the file can't be created. SUCCESS FAILED
+Syntax
+
+MinivmAccMess(usernamedomain[,options])
Arguments
mailbox username - Voicemail username domain - Voicemail domain options u - Record the unavailable greeting. b - Record the busy greeting. t - Record the temporary greeting. n - Account name.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MinivmDelete
MinivmDelete()
Synopsis
@@ -9727,13 +9935,12 @@
filename - File to delete
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_MinivmGreet
-MinivmGreet()
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_MinivmGreet
+MinivmGreet()
+Synopsis
Play Mini-Voicemail prompts.
Description
@@ -9748,7 +9955,7 @@
mailbox username - Voicemail username domain - Voicemail domain options b - Play the busy greeting to the calling party. s - Skip the playback of instructions for leaving a message to the calling party. u - Play the unavailable greeting.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MinivmMWI
MinivmMWI()
Synopsis
@@ -9756,18 +9963,20 @@
Send Message Waiting Notification to subscriber(s) of mailbox.
Description
-This application is part of the Mini-Voicemail system, configured in minivm.conf. MinivmMWI is used to send message waiting indication to any devices whose channels have subscribed to the mailbox passed in the first parameter.
-Syntax
+This application is part of the Mini-Voicemail system, configured in minivm.conf.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-MinivmMWI(usernamedomain,urgent,new,old)
+MinivmMWI is used to send message waiting indication to any devices whose channels have subscribed to the mailbox passed in the first parameter.
+Syntax
+
+MinivmMWI(usernamedomain,urgent,new,old)
Arguments
mailbox username - Voicemail username domain - Voicemail domain urgent - Number of urgent messages in mailbox. new - Number of new messages in mailbox. old - Number of old messages in mailbox.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MinivmNotify
MinivmNotify()
Synopsis
@@ -9782,13 +9991,13 @@
MinivmNotify(usernamedomain[,options])
Arguments
-mailbox username - Voicemail username domain - Voicemail domain options template - E-mail template to use for voicemail notification
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-See Also Import Version
+mailbox username - Voicemail username domain - Voicemail domain options template - E-mail template to use for voicemail notification
+See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MinivmRecord
MinivmRecord()
Synopsis
@@ -9804,11 +10013,12 @@
Arguments
mailbox username - Voicemail username domain - Voicemail domain options 0 - Jump to the o extension in the current dialplan context. * - Jump to the a extension in the current dialplan context. g - Use the specified amount of gain when recording the voicemail message. The units are whole-number decibels (dB). gain - Amount of gain to use
-See Also Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MixMonitor
MixMonitor()
Synopsis
@@ -9829,13 +10039,13 @@
Application_Monitor Application_StopMixMonitor Application_PauseMonitor Application_UnpauseMonitor
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_Monitor
-Monitor()
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
+Application_Monitor
+Monitor()
+Synopsis
Monitor a channel.
Description
@@ -9852,7 +10062,7 @@
Application_StopMonitor
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Morsecode
Morsecode()
Synopsis
@@ -9860,12 +10070,13 @@
Plays morse code.
Description
-Plays the Morse code equivalent of the passed string. This application uses the following variables:
-MORSEDITLEN - Use this value in (ms) for length of dit MORSETONE - The pitch of the tone in (Hz), default is 800
+Plays the Morse code equivalent of the passed string.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Syntax
+This application uses the following variables:
+MORSEDITLEN - Use this value in (ms) for length of dit MORSETONE - The pitch of the tone in (Hz), default is 800
+Syntax
Morsecode(string)
@@ -9876,7 +10087,7 @@
Application_SayAlpha Application_SayPhonetic
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MP3Player
MP3Player()
Synopsis
@@ -9893,14 +10104,15 @@
Location - Location of the file to be played. (argument passed to mpg123)
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_MSet
-MSet()
-Synopsis
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Set channel variable(s) or function value(s).
+Application_MSet
+MSet()
+Synopsis
+
+Set channel variable(s) or function value(s).
Description
This function can be used to set the value of channel variables or dialplan functions. When setting variables, if the variable name is prefixed with {}, the variable will be inherited into channels created from the current channel If the variable name is prefixed with _, the variable will be inherited into channels created from the current channel and all children channels. MSet behaves in a similar fashion to the way Set worked in 1.2/1.4 and is thus prone to doing things that you may not expect. For example, it strips surrounding double-quotes from the right-hand side (value). If you need to put a separator character (comma or vert-bar), you will need to escape them by inserting a backslash before them. Avoid its use if possible.
@@ -9915,7 +10127,7 @@
Application_Set
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_MusicOnHold
MusicOnHold()
Synopsis
@@ -9923,18 +10135,20 @@
Play Music On Hold indefinitely.
Description
-Plays hold music specified by class. If omitted, the default music source for the channel will be used. Change the default class with Set(CHANNEL(musicclass)=...). If duration is given, hold music will be played specified number of seconds. If duration is ommited, music plays indefinitely. Returns 0 when done, -1 on hangup.
-Syntax
+Plays hold music specified by class. If omitted, the default music source for the channel will be used. Change the default class with Set(CHANNEL(musicclass)=...). If duration is given, hold music will be played specified number of seconds. If duration is ommited, music plays
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-MusicOnHold(class[,duration])
+indefinitely. Returns 0 when done, -1 on hangup.
+Syntax
+
+MusicOnHold(class[,duration])
Arguments
class duration
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_NBScat
NBScat()
Synopsis
@@ -9950,7 +10164,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_NoCDR
NoCDR()
Synopsis
@@ -9959,16 +10173,17 @@
Description
This application will tell Asterisk not to maintain a CDR for the current call.
-Syntax
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-NoCDR()
+Syntax
+
+NoCDR()
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_NoOp
NoOp()
Synopsis
@@ -9988,7 +10203,7 @@
Application_Verbose Application_Log
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ODBC_Commit
ODBC_Commit()
Synopsis
@@ -10007,7 +10222,7 @@
transaction ID
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ODBC_Rollback
ODBC_Rollback()
Synopsis
@@ -10024,17 +10239,18 @@
transaction ID
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ODBCFinish
ODBCFinish()
Synopsis
Clear the resultset of a sucessful multirow query.
-Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-For queries which are marked as mode=multirow, this will clear any remaining rows of the specified resultset.
+Description
+
+For queries which are marked as mode=multirow, this will clear any remaining rows of the specified resultset.
Syntax
ODBCFinish(result-id)
@@ -10043,7 +10259,7 @@
result-id
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Originate
Originate()
Synopsis
@@ -10064,7 +10280,7 @@
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_OSPAuth
OSPAuth()
Synopsis
@@ -10091,12 +10307,12 @@
Application_OSPLookup Application_OSPNext Application_OSPFinish
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_OSPFinish
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-OSPFinish()
+Application_OSPFinish
+OSPFinish()
Synopsis
Report OSP entry.
@@ -10118,17 +10334,18 @@
Application_OSPAuth Application_OSPLookup Application_OSPNext
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_OSPLookup
OSPLookup()
Synopsis
Lookup destination by OSP.
-Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Looks up destination via OSP. Input variables:
+Description
+
+Looks up destination via OSP. Input variables:
OSPINACTUALSRC - The actual source device IP address in indirect mode. OSPINPEERIP - The last hop IP address. OSPINHANDLE - The inbound call OSP transaction handle. OSPINTIMELIMIT - The inbound call duration limit in seconds. OSPINNETWORKID - The inbound source network ID. OSPINNPRN - The inbound routing number. OSPINNPCIC - The inbound carrier identification code. OSPINNPDI - The inbound number portability database dip indicator. OSPINSPID - The inbound service provider identity. OSPINOCN - The inbound operator company number. OSPINSPN - The inbound service provider name. OSPINALTSPN - The inbound alternate service provider name. OSPINMCC - The inbound mobile country code. OSPINMNC - The inbound mobile network code. OSPINTOHOST - The inbound To header host part. OSPINDIVUSER - The inbound Diversion header user part. OSPINDIVHOST - The inbound Diversion header host part. OSPINCUSTOMINFOn - The inbound custom information, where n is the index beginning with 1 upto 8.
Output variables:
@@ -10141,17 +10358,17 @@
OSPLookup(exten[,provider[,options]])
Arguments
-exten - The exten of the call. provider - The name of the provider that is used to route the call. options h - generate H323 call id for the outbound call
+exten - The exten of the call. provider - The name of the provider that is used to route the call.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-s - generate SIP call id for the outbound call. Have not been implemented i - generate IAX call id for the outbound call. Have not been implemented
+options h - generate H323 call id for the outbound call s - generate SIP call id for the outbound call. Have not been implemented i - generate IAX call id for the outbound call. Have not been implemented
See Also
Application_OSPAuth Application_OSPNext Application_OSPFinish
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_OSPNext
OSPNext()
Synopsis
@@ -10166,11 +10383,11 @@
OSPOUTTECH - The outbound channel technology. OSPDESTINATION - The destination IP address. OSPOUTCALLING - The outbound calling number. OSPOUTCALLED - The outbound called number. OSPOUTNETWORKID - The outbound destination network ID. OSPOUTNPRN - The outbound routing number. OSPOUTNPCIC - The outbound carrier identification code. OSPOUTNPDI - The outbound number portability database dip indicator. OSPOUTSPID - The outbound service provider identity. OSPOUTOCN - The outbound operator company number. OSPOUTSPN - The outbound service provider name. OSPOUTALTSPN - The outbound alternate service provider name. OSPOUTMCC - The outbound mobile country code. OSPOUTMNC - The outbound mobile network code. OSPOUTTOKEN - The outbound OSP token. OSPDESTREMAILS - The number of remained destinations. OSPOUTTIMELIMIT - The outbound call duration limit in seconds. OSPOUTCALLID - The outbound Call-ID. Only for H.323. OSPDIALSTR - The outbound Dial command string.
This application sets the following channel variable upon completion:
-OSPNEXTSTATUS - The status of the OSPNext attempt as a text string, one of SUCCESS FAILED
+OSPNEXTSTATUS - The status of the OSPNext attempt as a text string, one of
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-ERROR
+SUCCESS FAILED ERROR
Syntax
OSPNext()
@@ -10181,7 +10398,7 @@
Application_OSPAuth Application_OSPLookup Application_OSPFinish
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Page
Page()
Synopsis
@@ -10204,7 +10421,7 @@
Application_MeetMe
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Park
Park()
Synopsis
@@ -10218,17 +10435,17 @@
Park([timeout[,return_context[,return_exten[,return_priority[,options]]]]])
Arguments
-timeout - A custom parking timeout for this parked call. return_context - The context to return the call to after it times out. return_exten - The extension to return the call to after it times out.
+timeout - A custom parking timeout for this parked call. Value in milliseconds.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-return_priority - The priority to return the call to after it times out. options - A list of options for this parked call. r - Send ringing instead of MOH to the parked call. R - Randomize the selection of a parking space. s - Silence announcement of the parking space number.
+return_context - The context to return the call to after it times out. return_exten - The extension to return the call to after it times out. return_priority - The priority to return the call to after it times out. options - A list of options for this parked call. r - Send ringing instead of MOH to the parked call. R - Randomize the selection of a parking space. s - Silence announcement of the parking space number.
See Also
Application_ParkAndAnnounce Application_ParkedCall
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ParkAndAnnounce
ParkAndAnnounce()
Synopsis
@@ -10248,7 +10465,7 @@
Application_Park Application_ParkedCall
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ParkedCall
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -10271,7 +10488,7 @@
Application_Park Application_ParkAndAnnounce
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_PauseMonitor
PauseMonitor()
Synopsis
@@ -10288,11 +10505,12 @@
See Also
Application_UnpauseMonitor
-Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_PauseQueueMember
PauseQueueMember()
Synopsis
@@ -10312,10 +10530,14 @@
queuename interface options reason - Is used to add extra information to the appropriate queue_log entries and manager events.
See Also
-Application_UnpauseQueueMember
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Pickup
Pickup()
Synopsis
@@ -10323,9 +10545,7 @@
Directed extension call pickup.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This application can pickup any ringing channel that is calling the specified extension. If no context is specified, the current context will be used. If you use the special string PICKUPMARK for the context parameter, for example 10@PICKUPMARK, this application tries to find a channel which has defined a This application can pickup any ringing channel that is calling the specified None - PICKUPMARK channel variable with the same value as extension (in this example, 10 ). When no parameter is specified, the application will pickup a channel matching the pickup group of the active channel.
+This application can pickup any ringing channel that is calling the specified extension. If no context is specified, the current context will be used. If you use the special string PICKUPMARK for the context parameter, for example 10@PICKUPMARK, this application tries to find a channel which has defined a This application can pickup any ringing channel that is calling the specified None - PICKUPMARK channel variable with the same value as extension (in this example, 10 ). When no parameter is specified, the application will pickup a channel matching the pickup group of the active channel.
Syntax
Pickup(extension[@context][&extension2[@context2][&...]])
@@ -10334,7 +10554,7 @@
ext extension context ext2 extension2 context2
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_PickupChan
PickupChan()
Synopsis
@@ -10342,7 +10562,9 @@
Pickup a ringing channel.
Description
-This will pickup a specified channel if ringing.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This will pickup a specified channel if ringing.
Syntax
PickupChan(channel[,channel2[,...][,options]])
@@ -10351,9 +10573,7 @@
channel channel2 options p - Channel name specified partial name. Used when find channel by callid.
See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Playback
Playback()
Synopsis
@@ -10371,9 +10591,12 @@
Arguments
filenames filename filename2 options - Comma separated list of options skip - Do not play if not answered noanswer - Playback without answering, otherwise the channel will be answered before the sound is played. Not all channel types support playing messages while still on hook.Not all channel types support playing messages while still on hook.
-See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_PlayTones
PlayTones()
Synopsis
@@ -10381,9 +10604,7 @@
Play a tone list.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Plays a tone list. Execution will continue with the next step in the dialplan immediately while the tones continue to play. See the sample indications.conf for a description of the specification of a tonelist.
+Plays a tone list. Execution will continue with the next step in the dialplan immediately while the tones continue to play. See the sample indications.conf for a description of the specification of a tonelist.
Syntax
PlayTones(arg)
@@ -10395,7 +10616,7 @@
Application_StopPlayTones
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_PrivacyManager
PrivacyManager()
Synopsis
@@ -10403,7 +10624,11 @@
Require phone number to be entered, if no CallerID sent
Description
-If no Caller*ID is sent, PrivacyManager answers the channel and asks the caller to enter their phone number. The caller is given maxretries attempts to do so. The application does nothing if Caller*ID was received on the channel. The application sets the following channel variable upon completion:
+If no Caller*ID is sent, PrivacyManager answers the channel and asks the caller to enter their phone number. The caller is given maxretries attempts to do so. The application does nothing if Caller*ID was received on the channel.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+The application sets the following channel variable upon completion:
PRIVACYMGRSTATUS - The status of the privacy manager's attempt to collect a phone number from the user. SUCCESS FAILED
Syntax
@@ -10413,12 +10638,10 @@
maxretries - Total tries caller is allowed to input a callerid. Defaults to 3. minlength - Minimum allowable digits in the input callerid number. Defaults to 10. context - Context to check the given callerid against patterns.
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_Zapateller
+Application_Zapateller
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Proceeding
Proceeding()
Synopsis
@@ -10434,12 +10657,14 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Progress
Progress()
Synopsis
-Indicate progress.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Indicate progress.
Description
This application will request that in-band progress information be provided to the calling channel.
@@ -10450,14 +10675,10 @@
Arguments
See Also
-Application_Busy Application_Congestion
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_Ringing Application_PlayTones
+Application_Busy Application_Congestion Application_Ringing Application_PlayTones
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Queue
Queue()
Synopsis
@@ -10472,22 +10693,23 @@
Queue(queuename[,options[,URL[,announceoverride[,timeout[,AGI[,macro[,gosub[,ru
Arguments
-queuename options C - Mark all calls as "answered elsewhere" when cancelled. c - Continue in the dialplan if the callee hangs up. d - data-quality (modem) call (minimum delay). h - Allow callee to hang up by pressing *. H - Allow caller to hang up by pressing *. n - No retries on the timeout; will exit this application and go to the next step. i - Ignore call forward requests from queue members and do nothing when they are requested. I - Asterisk will ignore any connected line update requests or any redirecting party update requests it may receive on this dial attempt. r - Ring instead of playing MOH. Periodic Announcements are still made, if applicable. R - Ring instead of playing MOH when a member channel is actually ringing. t - Allow the called user to transfer the calling user. T - Allow the calling user to transfer the call. w - Allow the called user to write the conversation to disk via Monitor. W - Allow the calling user to write the conversation to disk via Monitor. k - Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. K - Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-x - Allow the called user to write the conversation to disk via MixMonitor. X - Allow the calling user to write the conversation to disk via MixMonitor. URL - URL will be sent to the called party if the channel supports it. announceoverride timeout - Will cause the queue to fail out after a specified number of seconds, checked between each queues.conf timeout and retry cycle. AGI - Will setup an AGI script to be executed on the calling party's channel once they are connected to a queue member. macro - Will run a macro on the calling party's channel once they are connected to a queue member. gosub - Will run a gosub on the calling party's channel once they are connected to a queue member. rule - Will cause the queue's defaultrule to be overridden by the rule specified. position - Attempt to enter the caller into the queue at the numerical position specified. 1 would attempt to enter the caller at the head of the queue, and 3 would attempt to place the caller third in the queue.
+queuename options C - Mark all calls as "answered elsewhere" when cancelled. c - Continue in the dialplan if the callee hangs up. d - data-quality (modem) call (minimum delay). h - Allow callee to hang up by pressing *. H - Allow caller to hang up by pressing *. n - No retries on the timeout; will exit this application and go to the next step. i - Ignore call forward requests from queue members and do nothing when they are requested. I - Asterisk will ignore any connected line update requests or any redirecting party update requests it may receive on this dial attempt. r - Ring instead of playing MOH. Periodic Announcements are still made, if applicable. R - Ring instead of playing MOH when a member channel is actually ringing. t - Allow the called user to transfer the calling user. T - Allow the calling user to transfer the call. w - Allow the called user to write the conversation to disk via Monitor. W - Allow the calling user to write the conversation to disk via Monitor. k - Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. K - Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf. x - Allow the called user to write the conversation to disk via MixMonitor. X - Allow the calling user to write the conversation to disk via MixMonitor. URL - URL will be sent to the called party if the channel supports it. announceoverride timeout - Will cause the queue to fail out after a specified number of seconds, checked between each queues.conf timeout and retry cycle. AGI - Will setup an AGI script to be executed on the calling party's channel once they are connected to a queue member. macro - Will run a macro on the calling party's channel once they are connected to a queue member. gosub - Will run a gosub on the calling party's channel once they are connected to a queue member. rule - Will cause the queue's defaultrule to be overridden by the rule specified. position - Attempt to enter the caller into the queue at the numerical position specified. 1 would attempt to enter the caller at the head of the queue, and 3 would attempt to place the caller third in the queue.
See Also
-Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Application_AgentLogin Function_QUEUE_MEMBER_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_WAITING_COUNT
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_QueueLog
QueueLog()
Synopsis
-Writes to the queue_log file.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Writes to the queue_log file.
Description
Allows you to write your own events into the queue log. Example: QueueLog(101,${UNIQUEID},${AGENT},WENTONBREAK,600)
@@ -10499,12 +10721,10 @@
queuename uniqueid agent event additionalinfo
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_Queue
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_RaiseException
RaiseException()
Synopsis
@@ -10513,7 +10733,10 @@
Description
This application will jump to the e extension in the current context, setting the dialplan function EXCEPTION(). If the e extension does not exist, the call will hangup.
-Syntax
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
RaiseException(reason)
@@ -10524,7 +10747,7 @@
Function_EXCEPTION
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Read
Read()
Synopsis
@@ -10533,23 +10756,23 @@
Description
Reads a #-terminated string of digits a certain number of times from the user in to the given variable. This application sets the following channel variable upon completion:
-READSTATUS - This is the status of the read operation. OK ERROR
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-HANGUP INTERRUPTED SKIPPED TIMEOUT
+READSTATUS - This is the status of the read operation. OK ERROR HANGUP INTERRUPTED SKIPPED TIMEOUT
Syntax
Read(variable[,filename[&filename2[&...]][,maxdigits[,options[,attempts[,timeou
Arguments
-variable - The input digits will be stored in the given variable name. filenames filename - file(s) to play before reading digits or tone with option i filename2 maxdigits - Maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press the # key). Defaults to 0 - no limit - wait for the user press the # key. Any value below 0 means the same. Max accepted value is 255. options s - to return immediately if the line is not up. i - to play filename as an indication tone from your indications.conf. n - to read digits even if the line is not up. attempts - If greater than 1, that many attempts will be made in the event no data is entered. timeout - The number of seconds to wait for a digit response. If greater than 0, that value will override the default timeout. Can be floating point.
+variable - The input digits will be stored in the given variable name. filenames filename - file(s) to play before reading digits or tone with option i filename2 maxdigits - Maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press the # key). Defaults to 0 - no limit - wait for the user press the # key. Any value below 0 means the same. Max accepted value is 255. options s - to return immediately if the line is not up. i - to play filename as an indication tone from your indications.conf. n - to read digits even if the line is not up. attempts - If greater than 1, that many attempts will be made in the event no data is entered.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+timeout - The number of seconds to wait for a digit response. If greater than 0, that value will override the default timeout. Can be floating point.
See Also
Application_SendDTMF
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ReadExten
ReadExten()
Synopsis
@@ -10561,18 +10784,19 @@
READEXTENSTATUS OK - A valid extension exists in ${variable}. TIMEOUT - No extension was entered in the specified time. Also sets ${variable} to "t". INVALID - An invalid extension, ${INVALID_EXTEN}, was entered. Also sets ${variable} to "i". SKIP - Line was not up and the option 's' was specified. ERROR - Invalid arguments were passed.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-ReadExten(variable[,filename[,context[,option[,timeout]]]])
+ReadExten(variable[,filename[,context[,option[,timeout]]]])
Arguments
variable filename - File to play before reading digits or tone with option i context - Context in which to match extensions. option s - Return immediately if the channel is not answered. i - Play filename as an indication tone from your indications.conf or a directly specified list of frequencies and durations. n - Read digits even if the channel is not answered. timeout - An integer number of seconds to wait for a digit response. If greater than 0, that value will override the default timeout.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ReadFile
ReadFile()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Read the contents of a text file into a channel variable.
Description
@@ -10589,8 +10813,50 @@
Application_System Application_Read
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_ReceiveFax
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_ReceiveFax
+ReceiveFax()
+Synopsis
+
+Receive a FAX and save as a TIFF/F file.
+Description
+
+This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the ReceiveFax() application.
+Syntax
+
+ReceiveFax(filename[,options])
+
+Arguments
+filename
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+options d - Enable FAX debugging. f - Allow audio fallback FAX transfer on T.38 capable channels. s - Send progress Manager events (overrides statusevents setting in res_fax.conf).
+See Also
+
+Function_FAXOPT
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
+Application_ReceiveFAX (app_fax)
+ReceiveFAX()
+Synopsis
+
+Receive a Fax
+Description
+
+Receives a FAX from the channel into the given filename overwriting the file if it already exists. File created will be in TIFF format. This application sets the following channel variables:
+LOCALSTATIONID - To identify itself to the remote end LOCALHEADERINFO - To generate a header line on each page FAXSTATUS SUCCESS FAILED FAXERROR - Cause of failure REMOTESTATIONID - The CSID of the remote side FAXPAGES - Number of pages sent FAXBITRATE - Transmission rate FAXRESOLUTION - Resolution of sent fax
+Syntax
+
+ReceiveFAX(filename[,c])
+
+Arguments
+filename - Filename of TIFF file save incoming fax c - Makes the application behave as the calling machine (Default behavior is as answering machine)
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
+Application_ReceiveFax (res_fax)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -10612,7 +10878,7 @@
Function_FAXOPT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
Application_Record
Record()
Synopsis
@@ -10621,11 +10887,11 @@
Description
If filename contains %d, these characters will be replaced with a number incremented by one each time the file is recorded. Use core show file formats to see the available formats on your system User can press # to terminate the recording and continue to the next priority. If the user hangs up during a recording, all data will be lost and the application will terminate.
-RECORDED_FILE - Will be set to the final filename of the recording. RECORD_STATUS - This is the final status of the command DTMF - A terminating DTMF was received ('#' or '*', depending upon option 't') SILENCE - The maximum silence occurred in the recording. SKIP - The line was not yet answered and the 's' option was specified.
+RECORDED_FILE - Will be set to the final filename of the recording. RECORD_STATUS - This is the final status of the command DTMF - A terminating DTMF was received ('#' or '*', depending upon option 't') SILENCE - The maximum silence occurred in the recording. SKIP - The line was not yet answered and the 's' option was specified. TIMEOUT - The maximum length was reached.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-TIMEOUT - The maximum length was reached. HANGUP - The channel was hung up. ERROR - An unrecoverable error occurred, which resulted in a WARNING to the logs.
+HANGUP - The channel was hung up. ERROR - An unrecoverable error occurred, which resulted in a WARNING to the logs.
Syntax
Record(filenameformat[,silence[,maxduration[,options]]])
@@ -10634,7 +10900,7 @@
filename filename format - Is the format of the file type to be recorded (wav, gsm, etc). silence - Is the number of seconds of silence to allow before returning. maxduration - Is the maximum recording duration in seconds. If missing or 0 there is no maximum. options a - Append to existing recording rather than replacing. n - Do not answer, but record anyway if line not yet answered. q - quiet (do not play a beep tone). s - skip recording if the line is not yet answered. t - use alternate '*' terminator key (DTMF) instead of default '#' x - Ignore all terminator keys (DTMF) and keep recording until hangup. k - Keep recorded file upon hangup. y - Terminate recording if any DTMF digit is received.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_RemoveQueueMember
RemoveQueueMember()
Synopsis
@@ -10657,10 +10923,10 @@
queuename interface options
See Also
-Application_Queue Application_AddQueueMember Application_PauseQueueMember Application_UnpauseQueueMember
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_ResetCDR
ResetCDR()
Synopsis
@@ -10680,14 +10946,14 @@
Application_ForkCDR Application_NoCDR
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_RetryDial
RetryDial()
Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Place a call, retrying on failure allowing an optional exit extension.
+Place a call, retrying on failure allowing an optional exit extension.
Description
This application will attempt to place a call using the normal Dial application. If no channel can be reached, the announce file will be played. Then, it will wait sleep number of seconds before retrying the call. After retries number of attempts, the calling channel will continue at the next priority in the dialplan. If the retries setting is set to 0, this application will retry endlessly. While waiting to retry a call, a 1 digit extension may be dialed. If that extension exists in either the context defined in This application will attempt to place a call using the normal Dial application. If no channel can be reached, the None - EXITCONTEXT or the current one, The call will jump to that extension immediately. The dialargs are specified in the same format that arguments are provided to the Dial application.
@@ -10699,7 +10965,7 @@
announce - Filename of sound that will be played when no channel can be reached sleep - Number of seconds to wait after a dial attempt failed before a new attempt is made retries - Number of retries When this is reached flow will continue at the next priority in the dialplan dialargs - Same format as arguments provided to the Dial application
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Return
Return()
Synopsis
@@ -10708,7 +10974,10 @@
Description
Jumps to the last label on the stack, removing it. The return value, if any, is saved in the channel variable Jumps to the last label on the stack, removing it. The return None - GOSUB_RETVAL.
-Syntax
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
Return([value])
@@ -10716,12 +10985,10 @@
value - Return value.
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_Gosub Application_StackPop
+Application_Gosub Application_StackPop
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Ringing
Ringing()
Synopsis
@@ -10740,20 +11007,20 @@
Application_Busy Application_Congestion Application_Progress Application_PlayTones
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayAlpha
SayAlpha()
Synopsis
-Say Alpha.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Say Alpha.
Description
This application will play the sounds that correspond to the letters of the given string.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SayAlpha(string)
+SayAlpha(string)
Arguments
string
@@ -10762,7 +11029,7 @@
Application_SayDigits Application_SayNumber Application_SayPhonetic Function_CHANNEL
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayCountedAdj
SayCountedAdj()
Synopsis
@@ -10775,16 +11042,16 @@
SayCountedAdj(number,filename[,gender])
-Arguments
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Arguments
number - The number of things filename - File name stem for the adjective gender - The gender of the noun modified, one of 'm', 'f', 'n', or 'c'
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_SayCountedNoun Application_SayNumber
+Application_SayCountedNoun Application_SayNumber
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayCountedNoun
SayCountedNoun()
Synopsis
@@ -10801,15 +11068,15 @@
number - The number of things filename - File name stem for the noun that is the the name of the things
See Also
-Application_SayCountedAdj Application_SayNumber
+Application_SayCountedAdj
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_SayNumber
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayCountPL
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SayCountPL()
+SayCountPL()
Synopsis
Say Polish counting words.
@@ -10824,7 +11091,7 @@
word1 word2 word5 number
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayDigits
SayDigits()
Synopsis
@@ -10835,18 +11102,18 @@
This application will play the sounds that correspond to the digits of the given number. This will use the language that is currently set for the channel.
Syntax
-SayDigits(digits)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SayDigits(digits)
Arguments
digits
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_SayAlpha Application_SayNumber Application_SayPhonetic Function_CHANNEL
+Application_SayAlpha Application_SayNumber Application_SayPhonetic Function_CHANNEL
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayNumber
SayNumber()
Synopsis
@@ -10866,17 +11133,18 @@
Application_SayAlpha Application_SayDigits Application_SayPhonetic Function_CHANNEL
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_SayPhonetic
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_SayPhonetic
SayPhonetic()
Synopsis
Say Phonetic.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This application will play the sounds from the phonetic alphabet that correspond to the letters in the given string.
+This application will play the sounds from the phonetic alphabet that correspond to the letters in the given string.
Syntax
SayPhonetic(string)
@@ -10888,7 +11156,7 @@
Application_SayAlpha Application_SayDigits Application_SayNumber
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SayUnixTime
SayUnixTime()
Synopsis
@@ -10903,14 +11171,15 @@
Arguments
unixtime - time, in seconds since Jan 1, 1970. May be negative. Defaults to now. timezone - timezone, see /usr/share/zoneinfo for a list. Defaults to machine default. format - a format the time is to be said in. See voicemail.conf. Defaults to ABdY "digits/at" IMp
-See Also
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also
Function_STRFTIME Function_STRPTIME Function_IFTIME
Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SendDTMF
SendDTMF()
Synopsis
@@ -10930,20 +11199,20 @@
Application_Read
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_SendeFax
-SendeFax()
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_SendFax
+SendFax()
Synopsis
Sends a specified TIFF/F file as a FAX.
Description
-This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the SendFax() application.
-Syntax
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-SendeFax([filename2[&...]][,options])
+This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the SendFax() application.
+Syntax
+
+SendFax([filename2[&...]][,options])
Arguments
filename filename2 - TIFF file to send as a FAX. options d - Enable FAX debugging. f - Allow audio fallback FAX transfer on T.38 capable channels. s - Send progress Manager events (overrides statusevents setting in res_fax.conf). z - Initiate a T.38 reinvite on the channel if the remote end does not.
@@ -10952,8 +11221,8 @@
Function_FAXOPT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_SendFAX
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
+Application_SendFAX (app_fax)
SendFAX()
Synopsis
@@ -10964,19 +11233,40 @@
LOCALSTATIONID - To identify itself to the remote end LOCALHEADERINFO - To generate a header line on each page FAXSTATUS SUCCESS FAILED FAXERROR - Cause of failure REMOTESTATIONID - The CSID of the remote side FAXPAGES - Number of pages sent FAXBITRATE - Transmission rate FAXRESOLUTION - Resolution of sent fax
Syntax
-SendFAX(filename[,a])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SendFAX(filename[,a])
Arguments
filename - Filename of TIFF file to fax a - Makes the application behave as the answering machine (Default behavior is as calling machine)
-See Also
+See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
+Application_SendFax (res_fax)
+SendFax()
+Synopsis
-Import Version
+Sends a specified TIFF/F file as a FAX.
+Description
+
+This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the SendFax() application.
+Syntax
+
+SendFax([filename2[&...]][,options])
+
+Arguments
+filename filename2 - TIFF file to send as a FAX. options d - Enable FAX debugging. f - Allow audio fallback FAX transfer on T.38 capable channels. s - Send progress Manager events (overrides statusevents setting in res_fax.conf). z - Initiate a T.38 reinvite on the channel if the remote end does not.
+See Also
+
+Function_FAXOPT
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r312509.
Application_SendImage
-SendImage()
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SendImage()
Synopsis
Sends an image file.
@@ -10995,7 +11285,7 @@
Application_SendText Application_SendURL
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SendText
SendText()
Synopsis
@@ -11003,14 +11293,12 @@
Send a Text Message.
Description
-Sends text to current channel (callee).
+Sends text to current channel (callee). Result of transmission will be stored in the Result of transmission will be stored in the None SENDTEXTSTATUS
+SENDTEXTSTATUS SUCCESS - Transmission succeeded. FAILURE - Transmission failed. UNSUPPORTED - Text transmission not supported by channel.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Result of transmission will be stored in the Result of transmission will be stored in the None SENDTEXTSTATUS
-SENDTEXTSTATUS SUCCESS - Transmission succeeded. FAILURE - Transmission failed. UNSUPPORTED - Text transmission not supported by channel.
-
-At this moment, text is supposed to be 7 bit ASCII in most channels.At this moment, text is supposed to be 7 bit ASCII in most channels.
+At this moment, text is supposed to be 7 bit ASCII in most channels.At this moment, text is supposed to be 7 bit ASCII in most channels.
Syntax
SendText(text)
@@ -11022,7 +11310,7 @@
Application_SendImage Application_SendURL
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SendURL
SendURL()
Synopsis
@@ -11036,18 +11324,18 @@
SendURL continues normally if the URL was sent correctly or if the channel does not support HTML transport. Otherwise, the channel is hung up.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SendURL(URL[,option])
+SendURL(URL[,option])
Arguments
URL option w - Execution will wait for an acknowledgement that the URL has been loaded before continuing.
See Also
-Application_SendImage Application_SendText
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_SendImage Application_SendText
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Set
Set()
Synopsis
@@ -11064,13 +11352,14 @@
name value
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Application_MSet Function_GLOBAL Function_SET Function_ENV
+Application_MSet Function_GLOBAL Function_SET Function_ENV
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_SetAMAFlags
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_SetAMAFlags
SetAMAFlags()
Synopsis
@@ -11089,7 +11378,7 @@
Function_CDR
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SetCallerPres
SetCallerPres()
Synopsis
@@ -11100,15 +11389,17 @@
Set Caller*ID presentation on a call.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SetCallerPres(presentation)
+SetCallerPres(presentation)
Arguments
-presentation allowed_not_screened - Presentation Allowed, Not Screened. allowed_passed_screen - Presentation Allowed, Passed Screen. allowed_failed_screen - Presentation Allowed, Failed Screen. allowed - Presentation Allowed, Network Number. prohib_not_screened - Presentation Prohibited, Not Screened. prohib_passed_screen - Presentation Prohibited, Passed Screen. prohib_failed_screen - Presentation Prohibited, Failed Screen. prohib - Presentation Prohibited, Network Number. unavailable - Number Unavailable.
+presentation allowed_not_screened - Presentation Allowed, Not Screened. allowed_passed_screen - Presentation Allowed, Passed Screen. allowed_failed_screen - Presentation Allowed, Failed Screen. allowed - Presentation Allowed, Network Number. prohib_not_screened - Presentation Prohibited, Not Screened. prohib_passed_screen - Presentation Prohibited, Passed Screen. prohib_failed_screen - Presentation Prohibited, Failed Screen.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+prohib - Presentation Prohibited, Network Number. unavailable - Number Unavailable.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SetMusicOnHold
SetMusicOnHold()
Synopsis
@@ -11125,18 +11416,19 @@
class
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SIPAddHeader
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SIPAddHeader()
+SIPAddHeader()
Synopsis
Add a SIP header to the outbound call.
Description
-Adds a header to a SIP call placed with DIAL. Remember to use the X-header if you are adding non-standard SIP headers, like X-Asterisk-Accountcode:. Use this with care. Adding the wrong headers may jeopardize the SIP dialog. Always returns 0.
+Adds a header to a SIP call placed with DIAL. Remember to use the X-header if you are adding non-standard SIP headers, like
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+X-Asterisk-Accountcode:. Use this with care. Adding the wrong headers may jeopardize the SIP dialog. Always returns 0.
Syntax
SIPAddHeader(Header,Content)
@@ -11145,7 +11437,7 @@
Header Content
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SIPDtmfMode
SIPDtmfMode()
Synopsis
@@ -11160,17 +11452,16 @@
Arguments
mode inband info rfc2833
+See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SIPRemoveHeader
SIPRemoveHeader()
Synopsis
-Remove SIP headers previously added with SIPAddHeader
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Remove SIP headers previously added with SIPAddHeader
Description
SIPRemoveHeader() allows you to remove headers which were previously added with SIPAddHeader(). If no parameter is supplied, all previously added headers will be removed. If a parameter is supplied, only the matching headers will be removed. For example you have added these 2 headers: SIPAddHeader(P-Asserted-Identity: sip:foo@bar); SIPAddHeader(P-Preferred-Identity: sip:bar@foo); // remove all headers SIPRemoveHeader(); // remove all P- headers SIPRemoveHeader(P-); // remove only the PAI header (note the : at the end) SIPRemoveHeader(P-Asserted-Identity Always returns 0.
@@ -11184,9 +11475,7 @@
Header
See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Skel
Skel()
Synopsis
@@ -11194,7 +11483,9 @@
Simple one line explaination.
Description
-This application is a template to build other applications from. It shows you the basic structure to create your own Asterisk applications.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This application is a template to build other applications from. It shows you the basic structure to create your own Asterisk applications.
Syntax
Skel(dummy[,options])
@@ -11203,7 +11494,7 @@
dummy options a - Option A. b - Option B. c - Option C.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SLAStation
SLAStation()
Synopsis
@@ -11212,19 +11503,19 @@
Description
This application should be executed by an SLA station. The argument depends on how the call was initiated. If the phone was just taken off hook, then the argument station should be just the station name. If the call was initiated by pressing a line key, then the station name should be preceded by an underscore and the trunk name associated with that line button. For example: station1_line1 On exit, this application will set the variable On exit, this application will set the variable None SLASTATION_STATUS to one of the following values:
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SLASTATION_STATUS FAILURE CONGESTION SUCCESS
+SLASTATION_STATUS FAILURE CONGESTION SUCCESS
Syntax
SLAStation(station)
Arguments
-station - Station name
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+station - Station name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SLATrunk
SLATrunk()
Synopsis
@@ -11242,15 +11533,16 @@
trunk - Trunk name options M - Play back the specified MOH class instead of ringing class
See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SMS
SMS()
Synopsis
Communicates with SMS service centres and SMS capable analogue phones.
-Description
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Description
SMS handles exchange of SMS data with a call to/from SMS capable phone or SMS PSTN service center. Can send and/or receive SMS messages. Works to ETSI ES 201 912; compatible with BT SMS PSTN service in UK and Telecom Italia in Italy. Typical usage is to use to handle calls from the SMS service centre CLI, or to set up a call using outgoing or manager interface to connect service centre to SMS(). "Messages are processed as per text file message queues. smsq (a separate software) is a command to generate message queues and send messages. The protocol has tight delay bounds. Please use short frames and disable/keep short the jitter buffer on the ATA to make sure that respones (ACK etc.) are received in time.The protocol has tight delay bounds. Please use short frames and disable/keep short the jitter buffer on the ATA to make sure that respones (ACK etc.) are received in time.
Syntax
@@ -11261,13 +11553,10 @@
name - The name of the queue used in /var/spool/asterisk/sms options a - Answer, i.e. send initial FSK packet. s - Act as service centre talking to a phone. t - Use protocol 2 (default used is protocol 1). p - Set the initial delay to N ms (default is 300 ). addr and body are a deprecated format to send messages out. r - Set the Status Report Request (SRR) bit. o - The body should be coded as octets not 7-bit symbols. addr body
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SoftHangup
SoftHangup()
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Synopsis
+Synopsis
Hangs up the requested channel.
Description
@@ -11275,13 +11564,15 @@
Hangs up the requested channel. If there are no channels to hangup, the application will report it.
Syntax
-SoftHangup(Technology/Resource[,options])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SoftHangup(Technology/Resource[,options])
Arguments
Technology/Resource options a - Hang up all channels on a specified device instead of a single resource
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechActivateGrammar
SpeechActivateGrammar()
Synopsis
@@ -11298,18 +11589,17 @@
grammar_name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechBackground
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SpeechBackground()
+SpeechBackground()
Synopsis
Play a sound file and wait for speech to be recognized.
Description
-This application plays a sound file and waits for the person to speak. Once they start speaking playback of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate the speech recognition engine is working. Once results are available the application returns and results (score and text) are available using dialplan functions. The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}. The first argument is the sound file and the second is the timeout integer in seconds.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This application plays a sound file and waits for the person to speak. Once they start speaking playback of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate the speech recognition engine is working. Once results are available the application returns and results (score and text) are available using dialplan functions. The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}. The first argument is the sound file and the second is the timeout integer in seconds.
Syntax
SpeechBackground(sound_file[,timeout[,options]])
@@ -11318,7 +11608,7 @@
sound_file timeout - Timeout integer in seconds. Note the timeout will only start once the sound file has stopped playing. options n - Don't answer the channel if it has not already been answered.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechCreate
SpeechCreate()
Synopsis
@@ -11331,13 +11621,13 @@
SpeechCreate(engine_name)
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Arguments
+Arguments
engine_name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechDeactivateGrammar
SpeechDeactivateGrammar()
Synopsis
@@ -11354,7 +11644,7 @@
grammar_name - The grammar name to deactivate
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechDestroy
SpeechDestroy()
Synopsis
@@ -11365,15 +11655,15 @@
This destroys the information used by all the other speech recognition applications. If you call this application but end up wanting to recognize more speech, you must call SpeechCreate() again before calling any other application.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SpeechDestroy()
+SpeechDestroy()
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_SpeechLoadGrammar
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_SpeechLoadGrammar
SpeechLoadGrammar()
Synopsis
@@ -11389,7 +11679,7 @@
grammar_name path
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechProcessingSound
SpeechProcessingSound()
Synopsis
@@ -11400,15 +11690,15 @@
This changes the processing sound that SpeechBackground plays back when the speech recognition engine is processing and working to get results.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SpeechProcessingSound(sound_file)
+SpeechProcessingSound(sound_file)
Arguments
sound_file
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechStart
SpeechStart()
Synopsis
@@ -11424,7 +11714,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_SpeechUnloadGrammar
SpeechUnloadGrammar()
Synopsis
@@ -11435,16 +11725,17 @@
Unload a grammar.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SpeechUnloadGrammar(grammar_name)
+SpeechUnloadGrammar(grammar_name)
Arguments
grammar_name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_StackPop
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_StackPop
StackPop()
Synopsis
@@ -11462,7 +11753,7 @@
Application_Return Application_Gosub
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_StartMusicOnHold
StartMusicOnHold()
Synopsis
@@ -11471,10 +11762,7 @@
Description
Starts playing music on hold, uses default music class for channel. Starts playing music specified by class. If omitted, the default music source for the channel will be used. Always returns 0.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Syntax
+Syntax
StartMusicOnHold(class)
@@ -11482,8 +11770,10 @@
class
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Application_StopMixMonitor
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_StopMixMonitor
StopMixMonitor()
Synopsis
@@ -11501,7 +11791,7 @@
Application_MixMonitor
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_StopMonitor
StopMonitor()
Synopsis
@@ -11512,16 +11802,17 @@
Stops monitoring a channel. Has no effect if the channel is not monitored.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-StopMonitor()
+StopMonitor()
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_StopMusicOnHold
-StopMusicOnHold()
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+StopMusicOnHold()
Synopsis
Stop playing Music On Hold.
@@ -11535,7 +11826,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_StopPlayTones
StopPlayTones()
Synopsis
@@ -11549,20 +11840,19 @@
StopPlayTones()
Arguments
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-See Also
+See Also
Application_PlayTones
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_System
System()
Synopsis
-Execute a system command.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Execute a system command.
Description
Executes a command by using system(). If the command fails, the console should report a fallthrough. Result of execution is returned in the Result of execution is returned in the None SYSTEMSTATUS channel variable:
@@ -11575,7 +11865,7 @@
command - Command to execute
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_TestClient
TestClient()
Synopsis
@@ -11583,11 +11873,7 @@
Execute Interface Test Client.
Description
-Executes test client with given testid. Results stored in
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-/var/log/asterisk/testreports/<testid>-client.txt
+Executes test client with given testid. Results stored in /var/log/asterisk/testreports/<testid>-client.txt
Syntax
TestClient(testid)
@@ -11597,9 +11883,12 @@
See Also
Application_TestServer
-Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_TestServer
TestServer()
Synopsis
@@ -11618,20 +11907,20 @@
Application_TestClient
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Transfer
Transfer()
Synopsis
Transfer caller to remote extension.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
Requests the remote caller be transferred to a given destination. If TECH (SIP, IAX2, LOCAL etc) is used, only an incoming call with the same channel technology will be transfered. Note that for SIP, if you transfer before call is setup, a 302 redirect SIP message will be returned to the caller. The result of the application will be reported in the The result of the application will be reported in the None - TRANSFERSTATUS channel variable:
TRANSFERSTATUS SUCCESS - Transfer succeeded. FAILURE - Transfer failed. UNSUPPORTED - Transfer unsupported by channel driver.
-Syntax
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
Transfer([Tech]destination)
@@ -11639,7 +11928,7 @@
dest Tech destination
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_TryExec
TryExec()
Synopsis
@@ -11653,16 +11942,17 @@
TryExec(arguments)
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Arguments
+Arguments
appname arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_TrySystem
TrySystem()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Try executing a system command.
Description
@@ -11677,7 +11967,7 @@
command - Command to execute
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_UnpauseMonitor
UnpauseMonitor()
Synopsis
@@ -11685,9 +11975,7 @@
Unpause monitoring of a channel.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Unpauses monitoring of a channel on which monitoring had previously been paused with PauseMonitor.
+Unpauses monitoring of a channel on which monitoring had previously been paused with PauseMonitor.
Syntax
UnpauseMonitor()
@@ -11696,9 +11984,12 @@
See Also
Application_PauseMonitor
-Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_UnpauseQueueMember
UnpauseQueueMember()
Synopsis
@@ -11718,13 +12009,13 @@
queuename interface options reason - Is used to add extra information to the appropriate queue_log entries and manager events.
See Also
-Application_PauseQueueMember
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_UserEvent
UserEvent()
Synopsis
@@ -11741,7 +12032,7 @@
eventname body
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Verbose
Verbose()
Synopsis
@@ -11761,7 +12052,7 @@
level - Must be an integer value. If not specified, defaults to 0. message - Output text message.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_VMAuthenticate
VMAuthenticate()
Synopsis
@@ -11778,7 +12069,7 @@
mailbox mailbox context options s - Skip playing the initial prompts.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -11798,7 +12089,7 @@
mailbox mailbox context
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_VoiceMail
VoiceMail()
Synopsis
@@ -11818,9 +12109,12 @@
Arguments
mailboxs mailbox1 mailbox2 options b - Play the busy greeting to the calling party. d - Accept digits for a new extension in context c, if played during the greeting. Context defaults to the current context. c g - Use the specified amount of gain when recording the voicemail message. The units are whole-number decibels (dB). Only works on supported technologies, which is DAHDI only. # s - Skip the playback of instructions for leaving a message to the calling party. u - Play the unavailable greeting. U - Mark message as URGENT. P - Mark message as PRIORITY.
-See Also Import Version
+See Also
+
+Application_VoiceMailMain
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_VoiceMailMain
VoiceMailMain()
Synopsis
@@ -11834,14 +12128,16 @@
VoiceMailMain([mailbox][@context][,options])
Arguments
-mailbox mailbox context
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-options p - Consider the mailbox parameter as a prefix to the mailbox that is entered by the caller. g - Use the specified amount of gain when recording a voicemail message. The units are whole-number decibels (dB). # s - Skip checking the passcode for the mailbox. a - Skip folder prompt and go directly to folder specified. Defaults to INBOX (or 0 ). folder 0 - INBOX 1 - Old 2 - Work 3 - Family 4 - Friends 5 - Cust1 6 - Cust2 7 - Cust3 8 - Cust4 9 - Cust5 0 - INBOX 1 - Old 2 - Work 3 - Family 4 - Friends 5 - Cust1 6 - Cust2 7 - Cust3 8 - Cust4 9 - Cust5
-See Also Import Version
+mailbox mailbox context options p - Consider the mailbox parameter as a prefix to the mailbox that is entered by the caller. g - Use the specified amount of gain when recording a voicemail message. The units are whole-number decibels (dB). # s - Skip checking the passcode for the mailbox. a - Skip folder prompt and go directly to folder specified. Defaults to INBOX (or 0 ). folder 0 - INBOX 1 - Old 2 - Work 3 - Family 4 - Friends 5 - Cust1 6 - Cust2 7 - Cust3 8 - Cust4 9 - Cust5 0 - INBOX 1 - Old 2 - Work 3 - Family 4 - Friends 5 - Cust1 6 - Cust2 7 - Cust3 8 - Cust4 9 - Cust5
+See Also
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Application_VoiceMail
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Wait
Wait()
Synopsis
@@ -11856,13 +12152,14 @@
Arguments
seconds - Can be passed with fractions of a second. For example, 1.5 will ask the application to wait for 1.5 seconds.
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+See Also
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_WaitExten
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Application_WaitExten
WaitExten()
Synopsis
@@ -11881,7 +12178,7 @@
Application_BackGround Function_TIMEOUT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_WaitForNoise
WaitForNoise()
Synopsis
@@ -11890,11 +12187,12 @@
Description
Waits for up to noiserequired milliseconds of noise, iterations times. An optional timeout specified the number of seconds to return after, even if we do not receive the specified amount of noise. Use timeout with caution, as it may defeat the purpose of this application, which is to wait indefinitely until noise is detected on the line.
-Syntax
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-WaitForNoise(noiserequired[,iterations[,timeout]])
+Syntax
+
+WaitForNoise(noiserequired[,iterations[,timeout]])
Arguments
noiserequired iterations - If not specified, defaults to 1. timeout - Is specified only to avoid an infinite loop in cases where silence is never achieved.
@@ -11903,7 +12201,7 @@
Application_WaitForSilence
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_WaitForRing
WaitForRing()
Synopsis
@@ -11920,17 +12218,18 @@
timeout
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_WaitForSilence
WaitForSilence()
Synopsis
Waits for a specified amount of silence.
-Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Waits for up to silencerequired milliseconds of silence, iterations times. An optional timeout specified the number of seconds to return after, even if we do not receive the specified amount of silence. Use timeout with caution, as it may defeat the purpose of this application, which is to wait indefinitely until silence is detected on the line. This is particularly useful for reverse-911-type call broadcast applications where you need to wait for an answering machine to complete its spiel before playing a message. Typically you will want to include two or more calls to WaitForSilence when dealing with an answering machine; first waiting for the spiel to finish, then waiting for the beep, etc. Examples: WaitForSilence(500,2) will wait for 1/2 second of silence, twice WaitForSilence(1000) will wait for 1 second of silence, once WaitForSilence(300,3,10) will wait for 300ms silence, 3 times, and returns after 10 sec, even if silence is not detected Sets the channel variable Sets the channel variable None - WAITSTATUS to one of these values:
+Description
+
+Waits for up to silencerequired milliseconds of silence, iterations times. An optional timeout specified the number of seconds to return after, even if we do not receive the specified amount of silence. Use timeout with caution, as it may defeat the purpose of this application, which is to wait indefinitely until silence is detected on the line. This is particularly useful for reverse-911-type call broadcast applications where you need to wait for an answering machine to complete its spiel before playing a message. Typically you will want to include two or more calls to WaitForSilence when dealing with an answering machine; first waiting for the spiel to finish, then waiting for the beep, etc. Examples: WaitForSilence(500,2) will wait for 1/2 second of silence, twice WaitForSilence(1000) will wait for 1 second of silence, once WaitForSilence(300,3,10) will wait for 300ms silence, 3 times, and returns after 10 sec, even if silence is not detected Sets the channel variable Sets the channel variable None - WAITSTATUS to one of these values:
WAITSTATUS SILENCE - if exited with silence detected. TIMEOUT - if exited without silence detected after timeout.
Syntax
@@ -11943,17 +12242,18 @@
Application_WaitForNoise
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_WaitMusicOnHold
WaitMusicOnHold()
Synopsis
Wait, playing Music On Hold.
-Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-!!! DEPRECATED. Use MusicOnHold instead !!! Plays hold music specified number of seconds. Returns 0 when done, or -1 on hangup. If no hold music is available, the delay will still occur with no sound. !!! DEPRECATED. Use MusicOnHold instead !!!
+Description
+
+!!! DEPRECATED. Use MusicOnHold instead !!! Plays hold music specified number of seconds. Returns 0 when done, or -1 on hangup. If no hold music is available, the delay will still occur with no sound. !!! DEPRECATED. Use MusicOnHold instead !!!
Syntax
WaitMusicOnHold(delay)
@@ -11962,7 +12262,7 @@
delay
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_WaitUntil
WaitUntil()
Synopsis
@@ -11982,7 +12282,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_While
While()
Synopsis
@@ -12002,7 +12302,7 @@
Application_EndWhile Application_ExitWhile Application_ContinueWhile
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Application_Zapateller
Zapateller()
Synopsis
@@ -12022,7 +12322,7 @@
options - Comma delimited list of options. answer - Causes the line to be answered before playing the tone. nocallerid - Causes Zapateller to only play the tone if there is no callerid information available.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Dialplan Application Template Page
MyApplication()
Synopsys
@@ -12084,9 +12384,12 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
string - Input string.
-See Also Import Version
+See Also
+
+Function_AES_ENCRYPT Function_BASE64_ENCODE Function_BASE64_DECODE
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_AES_ENCRYPT
AES_ENCRYPT()
Synopsis
@@ -12101,9 +12404,12 @@
Arguments
key - AES Key string - Input string
-See Also Import Version
+See Also
+
+Function_AES_DECRYPT Function_BASE64_ENCODE Function_BASE64_DECODE
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_AGC
AGC()
Synopsis
@@ -12111,11 +12417,9 @@
Apply automatic gain control to audio on a channel.
Description
-The AGC function will apply automatic gain control to the audio on the channel that it is executed on. Using rx for audio received and tx for audio transmitted to the channel. When using this function you set a target audio level. It is primarily intended for use with analog lines, but could be useful for other channels as well. The target volume is set with a number between 1-32768. The larger the number the louder (more gain) the channel will receive. Examples:
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-exten => 1,1,Set(AGC(rx)=8000) exten => 1,2,Set(AGC(tx)=off)
+The AGC function will apply automatic gain control to the audio on the channel that it is executed on. Using rx for audio received and tx for audio transmitted to the channel. When using this function you set a target audio level. It is primarily intended for use with analog lines, but could be useful for other channels as well. The target volume is set with a number between 1-32768. The larger the number the louder (more gain) the channel will receive. Examples: exten => 1,1,Set(AGC(rx)=8000) exten => 1,2,Set(AGC(tx)=off)
Syntax
AGC(channeldirection)
@@ -12124,7 +12428,7 @@
channeldirection - This can be either rx or tx
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_AGENT
AGENT()
Synopsis
@@ -12138,14 +12442,14 @@
agentid item - The valid items to retrieve are: status - (default) The status of the agent (LOGGEDIN | LOGGEDOUT) password - The password of the agent name - The name of the agent mohclass - MusicOnHold class channel - The name of the active channel for the Agent (AgentLogin) fullchannel - The untruncated name of the active channel for the Agent (AgentLogin)
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ARRAY
ARRAY()
Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Allows setting multiple variables at once.
+Allows setting multiple variables at once.
Description
The comma-delimited list passed as a value to which the function is set will be interpreted as a set of values to which the comma-delimited list of variable names in the argument should be set. Example: Set(ARRAY(var1,var2)=1,2) will set var1 to 1 and var2 to 2
@@ -12157,7 +12461,7 @@
var1 var2 varN
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_AST_CONFIG
AST_CONFIG()
Synopsis
@@ -12171,34 +12475,34 @@
AST_CONFIG(config_file,category,variable_name)
Arguments
-config_file category variable_name
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_AUDIOHOOK_INHERIT
+config_file category
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-AUDIOHOOK_INHERIT()
+variable_name
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_AUDIOHOOK_INHERIT
+AUDIOHOOK_INHERIT()
Synopsis
Set whether an audiohook may be inherited to another channel
Description
-By enabling audiohook inheritance on the channel, you are giving permission for an audiohook to be inherited by a descendent channel. Inheritance may be be disabled at any point as well. Example scenario: exten => 2000,1,MixMonitor(blah.wav) exten => 2000,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) exten => 2000,n,Dial(SIP/2000) exten => 4000,1,Dial(SIP/4000) exten => 5000,1,MixMonitor(blah2.wav) exten => 5000,n,Dial(SIP/5000) In this basic dialplan scenario, let's consider the following sample calls Call 1: Caller dials 2000. The person who answers then executes an attended transfer to 4000. Result: Since extension 2000 set MixMonitor to be inheritable, after the transfer to 4000 has completed, the call will continue to be recorded to blah.wav Call 2: Caller dials 5000. The person who answers then executes an attended transfer to 4000. Result: Since extension 5000 did not set MixMonitor to be inheritable, the recording will stop once the call has been transferred to 4000.
-Syntax
+By enabling audiohook inheritance on the channel, you are giving permission for an audiohook to be inherited by a descendent channel. Inheritance may be be disabled at any point as well. Example scenario: exten => 2000,1,MixMonitor(blah.wav) exten => 2000,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes) exten => 2000,n,Dial(SIP/2000) exten => 4000,1,Dial(SIP/4000) exten => 5000,1,MixMonitor(blah2.wav) exten => 5000,n,Dial(SIP/5000) In this basic dialplan scenario, let's consider the following sample calls Call 1: Caller dials 2000. The person who answers then executes an attended transfer to 4000. Result: Since extension 2000 set MixMonitor to be inheritable, after the transfer to 4000 has completed, the call will continue to be recorded to blah.wav Call 2: Caller dials 5000. The person who answers then executes an attended transfer to 4000. Result: Since extension 5000 did not set MixMonitor to be inheritable, the recording will stop once the call has been transferred to 4000.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
AUDIOHOOK_INHERIT(source)
Arguments
-source - The built-in sources in Asterisk are Note that the names are not case-sensitive MixMonitor
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Chanspy Volume Speex JACK_HOOK
+source - The built-in sources in Asterisk are Note that the names are not case-sensitive MixMonitor Chanspy Volume Speex JACK_HOOK
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_BASE64_DECODE
BASE64_DECODE()
Synopsis
@@ -12213,14 +12517,19 @@
Arguments
string - Input string.
-See Also Import Version
+See Also
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Function_BASE64_ENCODE Function_AES_DECRYPT Function_AES_ENCRYPT
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_BASE64_ENCODE
BASE64_ENCODE()
Synopsis
-Encode a string in base64.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Encode a string in base64.
Description
Returns the base64 string.
@@ -12229,13 +12538,13 @@
BASE64_ENCODE(string)
Arguments
+string - Input string
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-string - Input string
-See Also Import Version
+Function_BASE64_DECODE Function_AES_DECRYPT Function_AES_ENCRYPT
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_BLACKLIST
BLACKLIST()
Synopsis
@@ -12254,9 +12563,12 @@
Function_DB
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALENDAR_BUSY
-CALENDAR_BUSY()
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+CALENDAR_BUSY()
Synopsis
Determine if the calendar is marked busy at this time.
@@ -12268,13 +12580,13 @@
CALENDAR_BUSY(calendar)
Arguments
+calendar
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-calendar
-See Also Import Version
+Function_CALENDAR_EVENT Function_CALENDAR_QUERY Function_CALENDAR_QUERY_RESULT Function_CALENDAR_WRITE
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALENDAR_EVENT
CALENDAR_EVENT()
Synopsis
@@ -12288,10 +12600,17 @@
CALENDAR_EVENT(field)
Arguments
-field summary - The VEVENT SUMMARY property or Exchange event 'subject' description - The text description of the event organizer - The organizer of the event location - The location of the eventt categories - The categories of the event priority - The priority of the event calendar - The name of the calendar associated with the event uid - The unique identifier for this event start - The start time of the event end - The end time of the event busystate - The busy state of the event 0=FREE, 1=TENTATIVE, 2=BUSY
-See Also Import Version
+field summary - The VEVENT SUMMARY property or Exchange event 'subject' description - The text description of the event organizer - The organizer of the event
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+location - The location of the eventt categories - The categories of the event priority - The priority of the event calendar - The name of the calendar associated with the event uid - The unique identifier for this event start - The start time of the event end - The end time of the event busystate - The busy state of the event 0=FREE, 1=TENTATIVE, 2=BUSY
+See Also
+
+Function_CALENDAR_BUSY Function_CALENDAR_QUERY Function_CALENDAR_QUERY_RESULT Function_CALENDAR_WRITE
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALENDAR_QUERY
CALENDAR_QUERY()
Synopsis
@@ -12299,20 +12618,24 @@
Query a calendar server and store the data on a channel
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Get a list of events in the currently accessible timeframe of the calendar The function returns the id for accessing the result with CALENDAR_QUERY_RESULT()
+Get a list of events in the currently accessible timeframe of the calendar The function returns the id for accessing the result with CALENDAR_QUERY_RESULT()
Syntax
CALENDAR_QUERY(calendar[,start[,end]])
Arguments
calendar - The calendar that should be queried start - The start time of the query (in seconds since epoch) end - The end time of the query (in seconds since epoch)
-See Also Import Version
+See Also
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Function_CALENDAR_BUSY Function_CALENDAR_EVENT Function_CALENDAR_QUERY_RESULT Function_CALENDAR_WRITE
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALENDAR_QUERY_RESULT
-CALENDAR_QUERY_RESULT()
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+CALENDAR_QUERY_RESULT()
Synopsis
Retrieve data from a previously run CALENDAR_QUERY() call
@@ -12327,11 +12650,10 @@
id - The query ID returned by CALENDAR_QUERY field getnum - number of events occurring during time range summary - A summary of the event description - The full event description organizer - The event organizer location - The event location categories - The categories of the event priority - The priority of the event calendar - The name of the calendar associted with the event uid - The unique identifier for the event start - The start time of the event (in seconds since epoch) end - The end time of the event (in seconds since epoch) busystate - The busy status of the event 0=FREE, 1=TENTATIVE, 2=BUSY entry - Return data from a specific event returned by the query
See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Import Version
+Function_CALENDAR_BUSY Function_CALENDAR_EVENT Function_CALENDAR_QUERY Function_CALENDAR_WRITE
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALENDAR_WRITE
CALENDAR_WRITE()
Synopsis
@@ -12339,16 +12661,21 @@
Write an event to a calendar
Description
-Example: CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3 The field and value arguments can easily be set/passed using the HASHKEYS() and HASH() functions
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Example: CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3 The field and value arguments can easily be set/passed using the HASHKEYS() and HASH() functions
Syntax
CALENDAR_WRITE(calendar,field[,...])
Arguments
calendar - The calendar to write to field summary - A summary of the event description - The full event description organizer - The event organizer location - The event location categories - The categories of the event priority - The priority of the event uid - The unique identifier for the event start - The start time of the event (in seconds since epoch) end - The end time of the event (in seconds since epoch) busystate - The busy status of the event 0=FREE, 1=TENTATIVE, 2=BUSY
-See Also Import Version
+See Also
+
+Function_CALENDAR_BUSY Function_CALENDAR_EVENT Function_CALENDAR_QUERY Function_CALENDAR_QUERY_RESULT
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALLCOMPLETION
CALLCOMPLETION()
Synopsis
@@ -12356,20 +12683,18 @@
Get or set a call completion configuration parameter for a channel.
Description
-The CALLCOMPLETION function can be used to get or set a call completion configuration parameter for a channel. Note that setting a configuration parameter will only change the
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-parameter for the duration of the call. For more information on call completion in Asterisk, see doc/tex/ccss.tex. For more information on call completion parameters, see configs/ccss.conf.sample.
+The CALLCOMPLETION function can be used to get or set a call completion configuration parameter for a channel. Note that setting a configuration parameter will only change the parameter for the duration of the call. For more information see doc/AST.pdf. For more information on call completion parameters, see configs/ccss.conf.sample.
Syntax
CALLCOMPLETION(option)
-Arguments
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Arguments
option - The allowable options are: cc_agent_policy cc_monitor_policy cc_offer_timer ccnr_available_timer ccbs_available_timer cc_recall_timer cc_max_agents cc_max_monitors cc_callback_macro cc_agent_dialstring
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALLERID
CALLERID()
Synopsis
@@ -12377,12 +12702,11 @@
Gets or sets Caller*ID data on the channel.
Description
-Gets or sets Caller*ID data on the channel. Uses channel callerid by default or optional callerid, if specified. The allowable values for the name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4
+Gets or sets Caller*ID data on the channel. Uses channel callerid by default or optional callerid, if specified. The allowable values for the name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 ISO8859-7 ISO10646 Bmp String ISO10646 UTF-8 String
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-ISO8859-5 ISO8859-7 ISO10646 Bmp String ISO10646 UTF-8 String
-Syntax
+Syntax
CALLERID(datatype[,CID])
@@ -12390,18 +12714,19 @@
datatype - The allowable datatypes are: all name name-valid name-charset name-pres num num-valid num-plan num-pres subaddr subaddr-valid subaddr-type subaddr-odd tag ANI-all ANI-name ANI-name-valid ANI-name-charset ANI-name-pres ANI-num ANI-num-valid ANI-num-plan ANI-num-pres ANI-tag RDNIS DNID dnid-num-plan dnid-subaddr dnid-subaddr-valid dnid-subaddr-type dnid-subaddr-odd CID - Optional Caller*ID
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CALLERPRES
CALLERPRES()
Synopsis
Gets or sets Caller*ID presentation on the channel.
+Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Gets or sets Caller*ID presentation on the channel. This function is deprecated in favor of CALLERID(num-pres) and CALLERID(name-pres). The following values are valid: Presentation Allowed, Not Screened. Presentation Allowed, Passed Screen.
-Description
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Gets or sets Caller*ID presentation on the channel. This function is deprecated in favor of CALLERID(num-pres) and CALLERID(name-pres). The following values are valid: Presentation Allowed, Not Screened. Presentation Allowed, Passed Screen. Presentation Allowed, Failed Screen. Presentation Allowed, Network Number. Presentation Prohibited, Not Screened. Presentation Prohibited, Passed Screen. Presentation Prohibited, Failed Screen. Presentation Prohibited, Network Number. Number Unavailable.
+Presentation Allowed, Failed Screen. Presentation Allowed, Network Number. Presentation Prohibited, Not Screened. Presentation Prohibited, Passed Screen. Presentation Prohibited, Failed Screen. Presentation Prohibited, Network Number. Number Unavailable.
Syntax
CALLERPRES()
@@ -12409,7 +12734,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CDR
CDR()
Synopsis
@@ -12417,29 +12742,27 @@
Gets or sets a CDR variable.
Description
-All of the CDR field names are read-only, except for accountcode, userfield, and amaflags . You may, however, supply a name not on the above list, and create your own variable, whose value can be changed with this function, and this variable will be stored on the cdr. For setting CDR values, the For setting CDR values, the l flag does not apply to setting the accountcode, userfield, or amaflags.
+All of the CDR field names are read-only, except for accountcode, userfield, and amaflags . You may, however, supply a name not on the above list, and create your own variable, whose value can be changed with this function, and this variable will be stored on the cdr. For setting CDR values, the For setting CDR values, the l flag does not apply to setting the accountcode, userfield, or amaflags. Raw values for disposition : NO ANSWER NO ANSWER (NULL record) FAILED
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Raw values for disposition : NO ANSWER NO ANSWER (NULL record) FAILED BUSY ANSWERED Raw values for amaflags : OMIT BILLING DOCUMENTATION Example: exten => 1,1,Set(CDR(userfield)=test)
+BUSY ANSWERED Raw values for amaflags : OMIT BILLING DOCUMENTATION Example: exten => 1,1,Set(CDR(userfield)=test)
Syntax
CDR(name[,options])
Arguments
name - CDR field name: clid - Caller ID. lastdata - Last application arguments. disposition - ANSWERED, NO ANSWER, BUSY, FAILED. src - Source. start - Time the call started. amaflags - DOCUMENTATION, BILL, IGNORE, etc. dst - Destination. answer - Time the call was answered. accountcode - The channel's account code. dcontext - Destination context. end - Time the call ended. uniqueid - The channel's unique id. dstchannel - Destination channel. duration - Duration of the call. userfield - The channel's user specified field. lastapp - Last application. billsec - Duration of the call once it was answered. channel - Channel name. sequence - CDR sequence number. options f - Returns billsec or duration fields as floating point values. l - Uses the most recent CDR on a channel with multiple records r - Searches the entire stack of CDRs on the channel. s - Skips any CDR's that are marked 'LOCKED' due to forkCDR() calls. (on setting/writing CDR vars only) u - Retrieves the raw, unprocessed value. For example, 'start', 'answer', and 'end' will be retrieved as epoch values, when the u option is passed, but formatted as YYYY-MM-DD HH:MM:SS otherwise. Similarly, disposition and amaflags will return their raw integral values.
-See Also
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Import Version
+See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CHANNEL
CHANNEL()
Synopsis
-Gets/sets various pieces of information about the channel.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Gets/sets various pieces of information about the channel.
Description
Gets/sets various pieces of information about the channel, additional item may be available from the channel driver; see its documentation for details. Any item requested that is not available on the current channel will return an empty string.
@@ -12448,14 +12771,14 @@
CHANNEL(item)
Arguments
-item - Standard items (provided by all channel technologies) are: chan_sip provides the following additional options: chan_iax2 provides the following additional options: chan_dahdi provides the following additional options: audioreadformat - R/O format currently being read. audionativeformat - R/O format used natively for audio. audiowriteformat - R/O format currently being written. callgroup - R/W call groups for call pickup. channeltype - R/O technology used for channel. checkhangup - R/O Whether the channel is hanging up (1/0) language - R/W language for sounds played. musicclass - R/W class (from musiconhold.conf) for hold music. name - The name of the channel parkinglot - R/W parkinglot for parking. rxgain - R/W set rxgain level on channel drivers that support it. secure_bridge_signaling - Whether or not channels bridged to this channel require secure signaling secure_bridge_media - Whether or not channels bridged to this channel require secure media state - R/O state for channel tonezone - R/W zone for indications played transfercapability - R/W ISDN Transfer Capability, one of: SPEECH DIGITAL RESTRICTED_DIGITAL 3K1AUDIO DIGITAL_W_TONES VIDEO txgain - R/W set txgain level on channel drivers that support it. videonativeformat - R/O format used natively for video trace - R/W whether or not context tracing is enabled, only available if CHANNEL_TRACE is defined. peerip - R/O Get the IP address of the peer. recvip - R/O Get the source IP address of the peer. from - R/O Get the URI from the From: header. uri - R/O Get the URI from the Contact: header. useragent - R/O Get the useragent. peername - R/O Get the name of the peer. t38passthrough - R/O 1 if T38 is offered or enabled in this channel, otherwise 0 rtpqos - R/O Get QOS information about the RTP stream This option takes two additional arguments: Argument 1: audio Get data about the audio stream video Get data about the video stream text Get data about the text stream Argument 2: local_ssrc Local SSRC (stream ID) local_lostpackets Local lost packets local_jitter Local calculated jitter local_maxjitter Local calculated jitter (maximum) local_minjitter Local calculated jitter (minimum)
+item - Standard items (provided by all channel technologies) are: chan_sip provides the following additional options: chan_iax2 provides the following additional options: chan_dahdi provides the following additional options: audioreadformat - R/O format currently being read. audionativeformat - R/O format used natively for audio. audiowriteformat - R/O format currently being written. callgroup - R/W call groups for call pickup. channeltype - R/O technology used for channel. checkhangup - R/O Whether the channel is hanging up (1/0) language - R/W language for sounds played. musicclass - R/W class (from musiconhold.conf) for hold music. name - The name of the channel parkinglot - R/W parkinglot for parking. rxgain - R/W set rxgain level on channel drivers that support it. secure_bridge_signaling - Whether or not channels bridged to this channel require secure signaling secure_bridge_media - Whether or not channels bridged to this channel require secure media state - R/O state for channel tonezone - R/W zone for indications played transfercapability - R/W ISDN Transfer Capability, one of: SPEECH DIGITAL RESTRICTED_DIGITAL 3K1AUDIO DIGITAL_W_TONES VIDEO txgain - R/W set txgain level on channel drivers that support it. videonativeformat - R/O format used natively for video trace - R/W whether or not context tracing is enabled, only available if CHANNEL_TRACE is defined. peerip - R/O Get the IP address of the peer. recvip - R/O Get the source IP address of the peer. from - R/O Get the URI from the From: header. uri - R/O Get the URI from the Contact: header. useragent - R/O Get the useragent. peername - R/O Get the name of the peer. t38passthrough - R/O 1 if T38 is offered or enabled in this channel, otherwise 0 rtpqos - R/O Get QOS information about the RTP stream This option takes two additional arguments: Argument 1: audio Get data about the audio stream video Get data about the video stream text Get data about the text stream Argument 2: local_ssrc Local SSRC (stream ID) local_lostpackets Local lost packets local_jitter Local calculated jitter local_maxjitter Local calculated jitter (maximum) local_minjitter Local calculated jitter (minimum) local_normdevjitter Local calculated jitter (normal deviation) local_stdevjitter Local calculated jitter (standard deviation) local_count Number of received packets remote_ssrc Remote SSRC (stream ID) remote_lostpackets Remote lost packets remote_jitter Remote reported jitter remote_maxjitter Remote calculated jitter (maximum) remote_minjitter Remote calculated jitter (minimum) remote_normdevjitter Remote calculated jitter (normal deviation) remote_stdevjitter Remote calculated jitter (standard deviation) remote_count Number of transmitted packets rtt Round trip time maxrtt Round trip time (maximum) minrtt Round trip time (minimum) normdevrtt Round trip time (normal deviation) stdevrtt Round trip time (standard deviation) all All statistics (in a form suited to logging, but not for parsing) rtpdest - R/O Get remote RTP destination information. This option takes one additional argument: Argument 1: audio Get audio destination video Get video destination text Get text destination dahdi_channel - R/O DAHDI channel related to this channel. dahdi_span - R/O DAHDI span related to this channel. dahdi_type - R/O DAHDI channel type, one of:
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-local_normdevjitter Local calculated jitter (normal deviation) local_stdevjitter Local calculated jitter (standard deviation) local_count Number of received packets remote_ssrc Remote SSRC (stream ID) remote_lostpackets Remote lost packets remote_jitter Remote reported jitter remote_maxjitter Remote calculated jitter (maximum) remote_minjitter Remote calculated jitter (minimum) remote_normdevjitter Remote calculated jitter (normal deviation) remote_stdevjitter Remote calculated jitter (standard deviation) remote_count Number of transmitted packets remote_ssrc Remote SSRC (stream ID) remote_lostpackets Remote lost packets remote_jitter Remote reported jitter remote_maxjitter Remote calculated jitter (maximum) remote_minjitter Remote calculated jitter (minimum) remote_normdevjitter Remote calculated jitter (normal deviation) remote_stdevjitter Remote calculated jitter (standard deviation) remote_count Number of transmitted packets rtt Round trip time maxrtt Round trip time (maximum) minrtt Round trip time (minimum) normdevrtt Round trip time (normal deviation) stdevrtt Round trip time (standard deviation) all All statistics (in a form suited to logging, but not for parsing) rtpdest - R/O Get remote RTP destination information. This option takes one additional argument: Argument 1: audio Get audio destination video Get video destination text Get text destination reversecharge - R/O Reverse Charging Indication, one of: -1 - None 1 - Reverse Charging Requested
+analog mfc/r2 pri pseudo ss7 keypad_digits - R/O PRI Keypad digits that came in with the SETUP message. reversecharge - R/O PRI Reverse Charging Indication, one of: -1 - None {{ 1}} - Reverse Charging Requested no_media_path - R/O PRI Nonzero if the channel has no B channel. The channel is either on hold or a call waiting call.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r314358.
Function_CHANNELS
CHANNELS()
Synopsis
@@ -12472,17 +12795,19 @@
regular_expression
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CHECKSIPDOMAIN
CHECKSIPDOMAIN()
Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Checks if domain is a local domain.
+Checks if domain is a local domain.
Description
-This function checks if the domain in the argument is configured as a local SIP domain that this Asterisk server is configured to handle. Returns the domain name if it is locally handled, otherwise an empty string. Check the domain= configuration in sip.conf.
+This function checks if the domain in the argument is configured as a local SIP domain that this
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Asterisk server is configured to handle. Returns the domain name if it is locally handled, otherwise an empty string. Check the domain= configuration in sip.conf.
Syntax
CHECKSIPDOMAIN(domain)
@@ -12491,7 +12816,7 @@
domain
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CONNECTEDLINE
CONNECTEDLINE()
Synopsis
@@ -12499,20 +12824,18 @@
Gets or sets Connected Line data on the channel.
Description
-Gets or sets Connected Line data on the channel. The allowable values for the name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 ISO8859-7
+Gets or sets Connected Line data on the channel. The allowable values for the name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 ISO8859-7 ISO10646 Bmp String ISO10646 UTF-8 String
+Syntax
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-ISO10646 Bmp String ISO10646 UTF-8 String
-Syntax
-
-CONNECTEDLINE(datatype[,i])
+CONNECTEDLINE(datatype[,i])
Arguments
datatype - The allowable datatypes are: all name name-valid name-charset name-pres num num-valid num-plan num-pres subaddr subaddr-valid subaddr-type subaddr-odd tag i - If set, this will prevent the channel from sending out protocol messages because of the value being set
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CSV_QUOTE
CSV_QUOTE()
Synopsis
@@ -12529,12 +12852,13 @@
string
See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_CUT
CUT()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Slices and dices strings, based upon a named delimiter.
Description
@@ -12548,7 +12872,7 @@
varname - Variable you want cut char-delim - Delimiter, defaults to range-spec - Number of the field you want (1-based offset), may also be specified as a range (with - ) or group of ranges and fields (with & )
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DB
DB()
Synopsis
@@ -12562,17 +12886,17 @@
DB(family,key)
Arguments
-family
+family key
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Application_DBdel Function_DB_DELETE
-key
-See Also
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Application_DBdel Function_DB_DELETE Application_DBdeltree Function_DB_EXISTS
+Application_DBdeltree Function_DB_EXISTS
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DB_DELETE
DB_DELETE()
Synopsis
@@ -12592,17 +12916,19 @@
Application_DBdel Function_DB Application_DBdeltree
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DB_EXISTS
DB_EXISTS()
Synopsis
Check to see if a key exists in the Asterisk database.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Description
-Description
+This function will check to see if a key exists in the Asterisk database. If it exists, the function will return 1. If not, it will return 0. Checking for existence of a database key will also set the variable
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This function will check to see if a key exists in the Asterisk database. If it exists, the function will return 1. If not, it will return 0. Checking for existence of a database key will also set the variable DB_RESULT to the key's value if it exists.
+DB_RESULT to the key's value if it exists.
Syntax
DB_EXISTS(family,key)
@@ -12614,7 +12940,7 @@
Function_DB
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DEC
DEC()
Synopsis
@@ -12631,12 +12957,13 @@
variable - The variable name to be manipulated, without the braces.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_DENOISE
+DENOISE()
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Function_DENOISE
-DENOISE()
-Synopsis
+Synopsis
Apply noise reduction to audio on a channel.
Description
@@ -12650,7 +12977,7 @@
channeldirection - This can be either rx or tx the values that can be set to this are either on and off
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DEVICE_STATE
DEVICE_STATE()
Synopsis
@@ -12658,11 +12985,11 @@
Get or Set a device state.
Description
-The DEVICE_STATE function can be used to retrieve the device state from any device state provider. For example: NoOp(SIP/mypeer has state ${DEVICE_STATE(SIP/mypeer)}) NoOp(Conference number 1234 has state ${DEVICE_STATE(MeetMe:1234)})
+The DEVICE_STATE function can be used to retrieve the device state from any device state provider. For example: NoOp(SIP/mypeer has state ${DEVICE_STATE(SIP/mypeer)}) NoOp(Conference number 1234 has state ${DEVICE_STATE(MeetMe:1234)}) The DEVICE_STATE function can also be used to set custom device state from the dialplan. The Custom: prefix must be used. For example: Set(DEVICE_STATE(Custom:lamp1)=BUSY)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-The DEVICE_STATE function can also be used to set custom device state from the dialplan. The Custom: prefix must be used. For example: Set(DEVICE_STATE(Custom:lamp1)=BUSY) Set(DEVICE_STATE(Custom:lamp2)=NOT_INUSE) You can subscribe to the status of a custom device state using a hint in the dialplan: exten => 1234,hint,Custom:lamp1 The possible values for both uses of this function are: UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING | RINGINUSE | ONHOLD
+Set(DEVICE_STATE(Custom:lamp2)=NOT_INUSE) You can subscribe to the status of a custom device state using a hint in the dialplan: exten => 1234,hint,Custom:lamp1 The possible values for both uses of this function are: UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING | RINGINUSE | ONHOLD
Syntax
DEVICE_STATE(device)
@@ -12671,7 +12998,7 @@
device
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DIALGROUP
DIALGROUP()
Synopsis
@@ -12679,11 +13006,10 @@
Manages a group of users for dialing.
Description
-Presents an interface meant to be used in concert with the Dial application, by presenting a list of channels which should be dialled when referenced. When DIALGROUP is read from, the argument is interpreted as the particular group for which a dial should be attempted. When DIALGROUP is written to with no arguments, the entire list is replaced with the argument specified. Functionality is similar to a queue, except that when no interfaces are available, execution may continue in the dialplan. This is useful when you want certain people to be the first to answer any calls, with immediate fallback to a queue when the front line people are busy or unavailable, but you still want front line people to log in and out of that group, just like a queue.
-
+Presents an interface meant to be used in concert with the Dial application, by presenting a list of channels which should be dialled when referenced. When DIALGROUP is read from, the argument is interpreted as the particular group for which a dial should be attempted. When DIALGROUP is written to with no arguments, the entire list is replaced with the argument specified. Functionality is similar to a queue, except that when no interfaces are available, execution may continue in the dialplan. This is useful when you want certain people to be the first to answer any calls, with immediate fallback to a queue when the front line people are busy or unavailable, but you still want front line people to log in and out of that group, just like a queue. Example: exten => 1,1,Set(DIALGROUP(mygroup,add)=SIP/10) exten => 1,n,Set(DIALGROUP(mygroup,add)=SIP/20)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Example: exten => 1,1,Set(DIALGROUP(mygroup,add)=SIP/10) exten => 1,n,Set(DIALGROUP(mygroup,add)=SIP/20) exten => 1,n,Dial(${DIALGROUP(mygroup)})
+exten => 1,n,Dial(${DIALGROUP(mygroup)})
Syntax
DIALGROUP(group[,op])
@@ -12692,7 +13018,7 @@
group op - The operation name, possible values are: add - add a channel name or interface (write-only) del - remove a channel name or interface (write-only)
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DIALPLAN_EXISTS
DIALPLAN_EXISTS()
Synopsis
@@ -12709,16 +13035,16 @@
context extension priority
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DUNDILOOKUP
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-DUNDILOOKUP()
+DUNDILOOKUP()
Synopsis
Do a DUNDi lookup of a phone number.
-Description
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Description
This will do a DUNDi lookup of the given phone number. This function will return the Technology/Resource found in the first result in the DUNDi lookup. If no results were found, the result will be blank.
Syntax
@@ -12729,7 +13055,7 @@
number context - If not specified the default will be e164. options b - Bypass the internal DUNDi cache
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DUNDIQUERY
DUNDIQUERY()
Synopsis
@@ -12743,14 +13069,12 @@
DUNDIQUERY(number[,context[,options]])
Arguments
-number context - If not specified the default will be e164. options
+number context - If not specified the default will be e164. options b - Bypass the internal DUNDi cache
+See Also Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-b - Bypass the internal DUNDi cache
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_DUNDIRESULT
DUNDIRESULT()
Synopsis
@@ -12767,7 +13091,7 @@
id - The identifier returned by the DUNDIQUERY function. resultnum number - The number of the result that you want to retrieve, this starts at 1 getnum - The total number of results that are available.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ENUMLOOKUP
ENUMLOOKUP()
Synopsis
@@ -12775,18 +13099,20 @@
General or specific querying of NAPTR records for ENUM or ENUM-like DNS pointers.
Description
-For more information see doc/asterisk.pdf.
+For more information see doc/AST.pdf.
Syntax
ENUMLOOKUP(number[,method-type[,options[,record#[,zone-suffix]]]])
Arguments
+number method-type - If no method-type is given, the default will be sip. options c - Returns an integer count of the number of NAPTRs of a certain RR type. Combination of c and Method-type of ALL will return a count of all NAPTRs for the record. u - Returns the full URI and does not strip off the URI-scheme.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-number method-type - If no method-type is given, the default will be sip. options c - Returns an integer count of the number of NAPTRs of a certain RR type. Combination of c and Method-type of ALL will return a count of all NAPTRs for the record. u - Returns the full URI and does not strip off the URI-scheme. s - Triggers ISN specific rewriting. i - Looks for branches into an Infrastructure ENUM tree. d - for a direct DNS lookup without any flipping of digits. record# - If no record# is given, defaults to 1. zone-suffix - If no zone-suffix is given, the default will be e164.arpa
+s - Triggers ISN specific rewriting. i - Looks for branches into an Infrastructure ENUM tree. d - for a direct DNS lookup without any flipping of digits. record# - If no record# is given, defaults to 1. zone-suffix - If no zone-suffix is given, the default will be e164.arpa
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ENUMQUERY
ENUMQUERY()
Synopsis
@@ -12803,7 +13129,7 @@
number method-type - If no method-type is given, the default will be sip. zone-suffix - If no zone-suffix is given, the default will be e164.arpa
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ENUMRESULT
ENUMRESULT()
Synopsis
@@ -12811,18 +13137,18 @@
Retrieve results from a ENUMQUERY.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This function will retrieve results from a previous use of the ENUMQUERY function.
+This function will retrieve results from a previous use of the ENUMQUERY function.
Syntax
-ENUMRESULT(id,resultnum)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+ENUMRESULT(id,resultnum)
Arguments
id - The identifier returned by the ENUMQUERY function. resultnum - The number of the result that you want to retrieve. Results start at 1. If this argument is specified as getnum, then it will return the total number of results that are available.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ENV
ENV()
Synopsis
@@ -12839,7 +13165,7 @@
varname - Environment variable name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_EVAL
EVAL()
Synopsis
@@ -12847,9 +13173,11 @@
Evaluate stored variables
Description
+Using EVAL basically causes a string to be evaluated twice. When a variable or expression is in the dialplan, it will be evaluated at runtime. However, if the results of the evaluation is in fact
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Using EVAL basically causes a string to be evaluated twice. When a variable or expression is in the dialplan, it will be evaluated at runtime. However, if the results of the evaluation is in fact another variable or expression, using EVAL will have it evaluated a second time. Example: If the Example: If the None - MYVAR contains Example: If the None - OTHERVAR, then the result of ${EVAL( Example: If the None - MYVAR )} in the dialplan will be the contents of Example: If the None - OTHERVAR. Normally just putting Example: If the None - MYVAR in the dialplan the result would be Example: If the None - OTHERVAR.
+another variable or expression, using EVAL will have it evaluated a second time. Example: If the Example: If the None - MYVAR contains Example: If the None - OTHERVAR, then the result of ${EVAL( Example: If the None - MYVAR )} in the dialplan will be the contents of Example: If the None - OTHERVAR. Normally just putting Example: If the None - MYVAR in the dialplan the result would be Example: If the None - OTHERVAR.
Syntax
EVAL(variable)
@@ -12858,7 +13186,7 @@
variable
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_EXCEPTION
EXCEPTION()
Synopsis
@@ -12878,10 +13206,11 @@
Application_RaiseException
Import Version
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_EXISTS
+Function_EXISTS
EXISTS()
Synopsis
@@ -12897,7 +13226,7 @@
data
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_EXTENSION_STATE
EXTENSION_STATE()
Synopsis
@@ -12908,15 +13237,15 @@
The EXTENSION_STATE function can be used to retrieve the state from any hinted extension. For example: NoOp(1234@default has state ${EXTENSION_STATE(1234)}) NoOp(4567@home has state ${EXTENSION_STATE(4567@home)}) The possible values returned by this function are: UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING | RINGINUSE | HOLDINUSE | ONHOLD
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+EXTENSION_STATE(extension[,context])
-EXTENSION_STATE(extension[,context])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
+Arguments
extension context - If it is not specified defaults to default.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FAXOPT
FAXOPT()
Synopsis
@@ -12933,13 +13262,14 @@
item ecm - R/W Error Correction Mode (ECM) enable with 'yes', disable with 'no'. error - R/O FAX transmission error code upon failure. filename - R/O Filename of the first file of the FAX transmission. filenames - R/O Filenames of all of the files in the FAX transmission (comma separated). headerinfo - R/W FAX header information. localstationid - R/W Local Station Identification. minrate - R/W Minimum transfer rate set before transmission. maxrate - R/W Maximum transfer rate set before transmission. modem - R/W Modem type (v17/v27/v29). pages - R/O Number of pages transferred. rate - R/O Negotiated transmission rate. remotestationid - R/O Remote Station Identification after transmission. resolution - R/O Negotiated image resolution after transmission. sessionid - R/O Session ID of the FAX transmission. status - R/O Result Status of the FAX transmission. statusstr - R/O Verbose Result Status of the FAX transmission.
See Also
-Application_ReceiveFax Application_SendFAX
+Application_ReceiveFax Application_SendFax
Import Version
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_FIELDNUM
+Function_FIELDNUM
FIELDNUM()
Synopsis
@@ -12955,7 +13285,7 @@
varname delim value
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FIELDQTY
FIELDQTY()
Synopsis
@@ -12963,11 +13293,11 @@
Count the fields with an arbitrary delimiter
Description
-The delimiter may be specified as a special or extended ASCII character, by encoding it. The characters \n, \r, and \t are all recognized as the newline, carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized by the patterns \0nnn
+The delimiter may be specified as a special or extended ASCII character, by encoding it. The characters \n, \r, and \t are all recognized as the newline, carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized by the patterns \0nnn and \xHH, respectively. For example, if you wanted to encode a comma as the delimiter, you could use either \054 or \x2C.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-and \xHH, respectively. For example, if you wanted to encode a comma as the delimiter, you could use either \054 or \x2C. Example: If ${example} contains ex-amp-le, then ${FIELDQTY(example,-)} returns 3.
+Example: If ${example} contains ex-amp-le, then ${FIELDQTY(example,-)} returns 3.
Syntax
FIELDQTY(varname,delim)
@@ -12976,7 +13306,7 @@
varname delim
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FILE
FILE()
Synopsis
@@ -12984,15 +13314,15 @@
Read or write text file.
Description
-Read and write text file in character and line mode. Examples: Read mode (byte): ;reads the entire content of the file. Set(foo=${FILE(/tmp/test.txt)}) ;reads from the 11th byte to the end of the file (i.e. skips the first 10). Set(foo=${FILE(/tmp/test.txt,10)}) ;reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes). Set(foo=${FILE(/tmp/test.txt,10,10)}) Read mode (line): ; reads the 3rd line of the file.
+Read and write text file in character and line mode. Examples: Read mode (byte): ;reads the entire content of the file. Set(foo=${FILE(/tmp/test.txt)}) ;reads from the 11th byte to the end of the file (i.e. skips the first 10). Set(foo=${FILE(/tmp/test.txt,10)}) ;reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes). Set(foo=${FILE(/tmp/test.txt,10,10)}) Read mode (line): ; reads the 3rd line of the file. Set(foo=${FILE(/tmp/test.txt,3,1,l)}) ; reads the 3rd and 4th lines of the file.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Set(foo=${FILE(/tmp/test.txt,3,1,l)}) ; reads the 3rd and 4th lines of the file. Set(foo=${FILE(/tmp/test.txt,3,2,l)}) ; reads from the third line to the end of the file. Set(foo=${FILE(/tmp/test.txt,3,,l)}) ; reads the last three lines of the file. Set(foo=${FILE(/tmp/test.txt,-3,,l)}) ; reads the 3rd line of a DOS-formatted file. Set(foo=${FILE(/tmp/test.txt,3,1,l,d)}) Write mode (byte): ; truncate the file and write "bar" Set(FILE(/tmp/test.txt)=bar) ; Append "bar" Set(FILE(/tmp/test.txt,,,a)=bar) ; Replace the first byte with "bar" (replaces 1 character with 3) Set(FILE(/tmp/test.txt,0,1)=bar) ; Replace 10 bytes beginning at the 21st byte of the file with "bar" Set(FILE(/tmp/test.txt,20,10)=bar) ; Replace all bytes from the 21st with "bar" Set(FILE(/tmp/test.txt,20)=bar) ; Insert "bar" after the 4th character Set(FILE(/tmp/test.txt,4,0)=bar) Write mode (line): ; Replace the first line of the file with "bar" Set(FILE(/tmp/foo.txt,0,1,l)=bar)
+Set(foo=${FILE(/tmp/test.txt,3,2,l)}) ; reads from the third line to the end of the file. Set(foo=${FILE(/tmp/test.txt,3,,l)}) ; reads the last three lines of the file. Set(foo=${FILE(/tmp/test.txt,-3,,l)}) ; reads the 3rd line of a DOS-formatted file. Set(foo=${FILE(/tmp/test.txt,3,1,l,d)}) Write mode (byte): ; truncate the file and write "bar" Set(FILE(/tmp/test.txt)=bar) ; Append "bar" Set(FILE(/tmp/test.txt,,,a)=bar) ; Replace the first byte with "bar" (replaces 1 character with 3) Set(FILE(/tmp/test.txt,0,1)=bar) ; Replace 10 bytes beginning at the 21st byte of the file with "bar" Set(FILE(/tmp/test.txt,20,10)=bar) ; Replace all bytes from the 21st with "bar" Set(FILE(/tmp/test.txt,20)=bar) ; Insert "bar" after the 4th character Set(FILE(/tmp/test.txt,4,0)=bar) Write mode (line): ; Replace the first line of the file with "bar" Set(FILE(/tmp/foo.txt,0,1,l)=bar) ; Replace the last line of the file with "bar" Set(FILE(/tmp/foo.txt,-1,,l)=bar)
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-; Replace the last line of the file with "bar" Set(FILE(/tmp/foo.txt,-1,,l)=bar) ; Append "bar" to the file with a newline Set(FILE(/tmp/foo.txt,,,al)=bar)
+; Append "bar" to the file with a newline Set(FILE(/tmp/foo.txt,,,al)=bar)
Syntax
FILE(filename[,offset[,length[,options[,format]]]])
@@ -13004,7 +13334,7 @@
Function_FILE_COUNT_LINE Function_FILE_FORMAT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FILE_COUNT_LINE
FILE_COUNT_LINE()
Synopsis
@@ -13018,17 +13348,16 @@
FILE_COUNT_LINE(filename[,format])
Arguments
-filename
+filename format - Format may be one of the following: If not specified, an attempt will be made to determine the newline format type.If not specified, an attempt will be made to determine the newline format type. u - Unix newline format. d - DOS newline format. m - Macintosh newline format.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-format - Format may be one of the following: If not specified, an attempt will be made to determine the newline format type.If not specified, an attempt will be made to determine the newline format type. u - Unix newline format. d - DOS newline format. m - Macintosh newline format.
-See Also
+See Also
Function_FILE Function_FILE_FORMAT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FILE_FORMAT
FILE_FORMAT()
Synopsis
@@ -13048,15 +13377,14 @@
Function_FILE Function_FILE_COUNT_LINE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FILTER
+FILTER()
+Synopsis
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-FILTER()
-Synopsis
-
-Filter the string to include only the allowed characters
+Filter the string to include only the allowed characters
Description
Permits all characters listed in allowed-chars, filtering all others outs. In addition to literally listing the characters, you may also use ranges of characters (delimited by a Hexadecimal characters started with a \x (i.e. \x20) Octal characters started with a \0 (i.e. \040) Also \t, \n and \r are recognized. If you want the If you want the - character it needs to be prefixed with a {{}}
@@ -13068,7 +13396,7 @@
allowed-chars string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_FRAME_TRACE
FRAME_TRACE()
Synopsis
@@ -13077,18 +13405,17 @@
Description
Examples: exten => 1,1,Set(FRAME_TRACE(white)=DTMF_BEGIN,DTMF_END); view only DTMF frames. exten => 1,1,Set(FRAME_TRACE()=DTMF_BEGIN,DTMF_END); view only DTMF frames. exten => 1,1,Set(FRAME_TRACE(black)=DTMF_BEGIN,DTMF_END); view everything except DTMF frames.
+Syntax
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Syntax
-
-FRAME_TRACE(filter list type)
+FRAME_TRACE(filter list type)
Arguments
filter list type - A filter can be applied to the trace to limit what frames are viewed. This filter can either be a white or black list of frame types. When no filter type is present, white is used. If no arguments are provided at all, all frames will be output. Below are the different types of frames that can be filtered. DTMF_BEGIN DTMF_END VOICE VIDEO CONTROL NULL IAX TEXT IMAGE HTML CNG MODEM
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_GLOBAL
GLOBAL()
Synopsis
@@ -13105,13 +13432,13 @@
varname - Global variable name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_GROUP
+GROUP()
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-GROUP()
-Synopsis
+Synopsis
Gets or sets the channel group.
Description
@@ -13125,7 +13452,7 @@
category - Category name.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_GROUP_COUNT
GROUP_COUNT()
Synopsis
@@ -13142,12 +13469,12 @@
groupname - Group name. category - Category name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_GROUP_LIST
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Function_GROUP_LIST
-GROUP_LIST()
+GROUP_LIST()
Synopsis
Gets a list of the groups set on a channel.
@@ -13161,7 +13488,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_GROUP_MATCH_COUNT
GROUP_MATCH_COUNT()
Synopsis
@@ -13178,12 +13505,12 @@
groupmatch - A standard regular expression used to match a group name. category - A standard regular expression used to match a category name.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_HASH
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Function_HASH
-HASH()
+HASH()
Synopsis
Implementation of a dialplan associative array
@@ -13198,7 +13525,7 @@
hashname hashkey
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_HASHKEYS
HASHKEYS()
Synopsis
@@ -13213,13 +13540,11 @@
Arguments
hashname
-See Also
+See Also Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_HINT
HINT()
Synopsis
@@ -13236,7 +13561,7 @@
extension extension context options n - Retrieve name on the hint instead of list of devices.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IAXPEER
IAXPEER()
Synopsis
@@ -13247,17 +13572,17 @@
IAXPEER(peername[,item])
Arguments
-peername
+peername CURRENTCHANNEL - If peername is specified to this value, return the IP address of the endpoint of the current channel item - If peername is specified, valid items are: ip - (default) The IP address.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-CURRENTCHANNEL - If peername is specified to this value, return the IP address of the endpoint of the current channel item - If peername is specified, valid items are: ip - (default) The IP address. status - The peer's status (if qualify=yes ) mailbox - The configured mailbox. context - The configured context. expire - The epoch time of the next expire. dynamic - Is it dynamic? (yes/no). callerid_name - The configured Caller ID name. callerid_num - The configured Caller ID number. codecs - The configured codecs. codec[x] - Preferred codec index number x (beginning with 0 )
+status - The peer's status (if qualify=yes ) mailbox - The configured mailbox. context - The configured context. expire - The epoch time of the next expire. dynamic - Is it dynamic? (yes/no). callerid_name - The configured Caller ID name. callerid_num - The configured Caller ID number. codecs - The configured codecs. codec[x] - Preferred codec index number x (beginning with 0 )
See Also
Function_SIPPEER
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IAXVAR
IAXVAR()
Synopsis
@@ -13271,7 +13596,7 @@
varname
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ICONV
ICONV()
Synopsis
@@ -13279,11 +13604,11 @@
Converts charsets of strings.
Description
-Converts string from in-charset into out-charset. For available charsets, use iconv -l on your
+Converts string from in-charset into out-charset. For available charsets, use iconv -l on your shell command line.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-shell command line. Due to limitations within the API, ICONV will not currently work with charsets with embedded NULLs. If found, the string will terminate.Due to limitations within the API, ICONV will not currently work with charsets with embedded NULLs. If found, the string will terminate.
+Due to limitations within the API, ICONV will not currently work with charsets with embedded NULLs. If found, the string will terminate.Due to limitations within the API, ICONV will not currently work with charsets with embedded NULLs. If found, the string will terminate.
Syntax
ICONV(in-charset,out-charset,string)
@@ -13292,7 +13617,7 @@
in-charset - Input charset out-charset - Output charset string - String to convert, from in-charset to out-charset
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IF
IF()
Synopsis
@@ -13309,15 +13634,14 @@
expresion retvalue true false
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IFMODULE
IFMODULE()
+Synopsis
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
-
-Checks if an Asterisk module is loaded in memory.
+Checks if an Asterisk module is loaded in memory.
Description
Checks if a module is loaded. Use the full module name as shown by the list in module list. Returns 1 if module exists in memory, otherwise 0
@@ -13329,7 +13653,7 @@
modulename.so - Module name complete with .so
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IFTIME
IFTIME()
Synopsis
@@ -13346,13 +13670,13 @@
timespec retvalue true false
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_IMPORT
+IMPORT()
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-IMPORT()
-Synopsis
+Synopsis
Retrieve the value of a variable from another channel.
Description Syntax
@@ -13363,7 +13687,7 @@
channel variable
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_INC
INC()
Synopsis
@@ -13380,12 +13704,12 @@
variable - The variable name to be manipulated, without the braces.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_ISNULL
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Function_ISNULL
-ISNULL()
+ISNULL()
Synopsis
Check if a value is NULL.
@@ -13400,7 +13724,7 @@
data
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_JABBER_RECEIVE
JABBER_RECEIVE()
Synopsis
@@ -13415,15 +13739,14 @@
Arguments
account - The local named account to listen on (specified in jabber.conf) jid - Jabber ID of the buddy to receive message from. It can be a bare JID (username@domain) or a full JID (username@domain/resource). timeout - In seconds, defaults to 20.
+See Also
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-See Also
-
-Function_JABBER_STATUS Application_JabberSend
+Function_JABBER_STATUS Application_JabberSend
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_JABBER_STATUS
JABBER_STATUS()
Synopsis
@@ -13443,13 +13766,13 @@
Function_JABBER_RECEIVE Application_JabberSend
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_KEYPADHASH
+KEYPADHASH()
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-KEYPADHASH()
-Synopsis
+Synopsis
Hash the letters in string into equivalent keypad numbers.
Description
@@ -13463,7 +13786,7 @@
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_LEN
LEN()
Synopsis
@@ -13480,15 +13803,14 @@
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_LISTFILTER
LISTFILTER()
+Synopsis
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Synopsis
-
-Remove an item from a list, by name.
+Remove an item from a list, by name.
Description
Remove value from the list contained in the varname variable, where the list delimiter is specified by the delim parameter. This is very useful for removing a single channel name from a list of channels, for example.
@@ -13500,7 +13822,7 @@
varname delim value
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_LOCAL
LOCAL()
Synopsis
@@ -13518,12 +13840,11 @@
See Also
Application_Gosub Application_GosubIf Application_Return
+Import Version
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_LOCAL_PEEK
LOCAL_PEEK()
Synopsis
@@ -13543,7 +13864,7 @@
Application_Gosub Application_GosubIf Application_Return
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_LOCK
LOCK()
Synopsis
@@ -13551,11 +13872,11 @@
Attempt to obtain a named mutex.
Description
-Attempts to grab a named lock exclusively, and prevents other channels from obtaining the same lock. LOCK will wait for the lock to become available. Returns 1 if the lock was obtained or 0 on error.
+Attempts to grab a named lock exclusively, and prevents other channels from obtaining the same lock. LOCK will wait for the lock to become available. Returns 1 if the lock was obtained or 0 on error. To avoid the possibility of a deadlock, LOCK will only attempt to obtain the lock for 3 seconds if the channel already has another lock.To avoid the possibility of a deadlock, LOCK will only
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-To avoid the possibility of a deadlock, LOCK will only attempt to obtain the lock for 3 seconds if the channel already has another lock.To avoid the possibility of a deadlock, LOCK will only attempt to obtain the lock for 3 seconds if the channel already has another lock.
+attempt to obtain the lock for 3 seconds if the channel already has another lock.
Syntax
LOCK(lockname)
@@ -13564,7 +13885,7 @@
lockname
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MAILBOX_EXISTS
MAILBOX_EXISTS()
Synopsis
@@ -13581,18 +13902,17 @@
mailbox context
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MASTER_CHANNEL
MASTER_CHANNEL()
Synopsis
Gets or sets variables on the master channel
+Description
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Description
-
-Allows access to the channel which created the current channel, if any. If the channel is already a master channel, then accesses local channel variables.
+Allows access to the channel which created the current channel, if any. If the channel is already a master channel, then accesses local channel variables.
Syntax
MASTER_CHANNEL()
@@ -13600,7 +13920,7 @@
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MATH
MATH()
Synopsis
@@ -13617,15 +13937,16 @@
expression - Is of the form: number1 op number2 where the possible values for op are: +,-,/,*,%,<<,>>,^,AND,OR,XOR,<,%gt;,>=,<=,== (and behave as their C equivalents) type - Wanted type of result: f, float - float(default) i, int - integer h, hex - hex c, char - char
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MD5
MD5()
Synopsis
+Computes an MD5 digest.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Computes an MD5 digest.
-Description
+Description
Computes an MD5 digest.
Syntax
@@ -13636,7 +13957,7 @@
data
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MEETME_INFO
MEETME_INFO()
Synopsis
@@ -13653,12 +13974,12 @@
Application_MeetMe Application_MeetMeCount Application_MeetMeAdmin Application_MeetMeChannelAdmin
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_MINIVMACCOUNT
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Function_MINIVMACCOUNT
-MINIVMACCOUNT()
+MINIVMACCOUNT()
Synopsis
Gets MiniVoicemail account information.
@@ -13673,7 +13994,7 @@
Application_MinivmRecord Application_MinivmGreet Application_MinivmNotify Application_MinivmDelete Application_MinivmAccMess Application_MinivmMWI Function_MINIVMCOUNTER
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MINIVMCOUNTER
MINIVMCOUNTER()
Synopsis
@@ -13681,12 +14002,11 @@
Reads or sets counters for MiniVoicemail message.
Description
-The operation is atomic and the counter is locked while changing the value. The counters are
+The operation is atomic and the counter is locked while changing the value. The counters are stored as text files in the minivm account directories. It might be better to use realtime functions if you are using a database to operate your Asterisk.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-stored as text files in the minivm account directories. It might be better to use realtime functions if you are using a database to operate your Asterisk.
-Syntax
+Syntax
MINIVMCOUNTER(account,name[,operand])
@@ -13697,7 +14017,7 @@
Application_MinivmRecord Application_MinivmGreet Application_MinivmNotify Application_MinivmDelete Application_MinivmAccMess Application_MinivmMWI Function_MINIVMACCOUNT
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_MUTEAUDIO
MUTEAUDIO()
Synopsis
@@ -13711,14 +14031,13 @@
MUTEAUDIO(direction)
Arguments
-direction - Must be one of
+direction - Must be one of in - Inbound stream (to the PBX) out - Outbound stream (from the PBX) all - Both streams
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-in - Inbound stream (to the PBX) out - Outbound stream (from the PBX) all - Both streams
-See Also Import Version
+See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ODBC
ODBC()
Synopsis
@@ -13735,7 +14054,7 @@
property transaction - Gets or sets the active transaction ID. If set, and the transaction ID does not exist and a database name is specified as an argument, it will be created. forcecommit - Controls whether a transaction will be automatically committed when the channel hangs up. Defaults to false. If a transaction ID is specified in the optional argument, the property will be applied to that ID, otherwise to the current active ID. isolation - Controls the data isolation on uncommitted transactions. May be one of the following: read_committed, read_uncommitted, repeatable_read, or serializable. Defaults to the database setting in res_odbc.conf or read_committed if not specified. If a transaction ID is specified as an optional argument, it will be applied to that ID, otherwise the current active ID. argument
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_ODBC_FETCH
ODBC_FETCH()
Synopsis
@@ -13743,10 +14062,10 @@
Fetch a row from a multirow query.
Description
+For queries which are marked as mode=multirow, the original query returns a result-id from which results may be fetched. This function implements the actual fetch of the results. This also sets This also sets None - ODBC_FETCH_STATUS.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-For queries which are marked as mode=multirow, the original query returns a result-id from which results may be fetched. This function implements the actual fetch of the results. This also sets This also sets None - ODBC_FETCH_STATUS.
-ODBC_FETCH_STATUS SUCESS - If rows are available. FAILURE - If no rows are available.
+ODBC_FETCH_STATUS SUCESS - If rows are available. FAILURE - If no rows are available.
Syntax
ODBC_FETCH(result-id)
@@ -13755,7 +14074,7 @@
result-id
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_PASSTHRU
PASSTHRU()
Synopsis
@@ -13772,16 +14091,16 @@
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_PITCH_SHIFT
PITCH_SHIFT()
+Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Pitch shift both tx and rx audio streams on a channel.
-Synopsis
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Pitch shift both tx and rx audio streams on a channel.
-Description
+Description
Examples: exten => 1,1,Set(PITCH_SHIFT(tx)=highest); raises pitch an octave exten => 1,1,Set(PITCH_SHIFT(rx)=higher) ; raises pitch more exten => 1,1,Set(PITCH_SHIFT(both)=high) ; raises pitch exten => 1,1,Set(PITCH_SHIFT(rx)=low) ; lowers pitch exten => 1,1,Set(PITCH_SHIFT(tx)=lower) ; lowers pitch more exten => 1,1,Set(PITCH_SHIFT(both)=lowest) ; lowers pitch an octave exten => 1,1,Set(PITCH_SHIFT(rx)=0.8) ; lowers pitch exten => 1,1,Set(PITCH_SHIFT(tx)=1.5) ; raises pitch
Syntax
@@ -13792,7 +14111,7 @@
channel direction - Direction can be either rx, tx, or both. The direction can either be set to a valid floating point number between 0.1 and 4.0 or one of the enum values listed below. A value of 1.0 has no effect. Greater than 1 raises the pitch. Lower than 1 lowers the pitch. The pitch amount can also be set by the following values highest higher high low lower lowest
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_POP
POP()
Synopsis
@@ -13800,9 +14119,11 @@
Removes and returns the last item off of a variable containing delimited text
Description
+Example:
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Example: exten => s,1,Set(array=one,two,three) exten => s,n,While($["$\{SET(var=$\{POP(array)\})\}" != ""]) exten => s,n,NoOp(var is ${var}) exten => s,n,EndWhile This would iterate over each value in array, right to left, and would result in NoOp(var is three), NoOp(var is two), and NoOp(var is one) being executed.
+exten => s,1,Set(array=one,two,three) exten => s,n,While($["$\{SET(var=$\{POP(array)\})\}" != ""]) exten => s,n,NoOp(var is ${var}) exten => s,n,EndWhile This would iterate over each value in array, right to left, and would result in NoOp(var is three), NoOp(var is two), and NoOp(var is one) being executed.
Syntax
POP(varname[,delimiter])
@@ -13811,7 +14132,7 @@
varname delimiter
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_PP_EACH_EXTENSION
PP_EACH_EXTENSION()
Synopsis
@@ -13828,10 +14149,11 @@
mac template
See Also Import Version
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_PP_EACH_USER
+Function_PP_EACH_USER
PP_EACH_USER()
Synopsis
@@ -13847,7 +14169,7 @@
string exclude_mac
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_PUSH
PUSH()
Synopsis
@@ -13861,13 +14183,13 @@
PUSH(varname[,delimiter])
Arguments
+varname delimiter
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-varname delimiter
-See Also Import Version
+See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_EXISTS
QUEUE_EXISTS()
Synopsis
@@ -13882,14 +14204,19 @@
Arguments
queuename
-See Also Import Version
+See Also
+
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_MEMBER
QUEUE_MEMBER()
Synopsis
-Count number of members answering a queue.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Count number of members answering a queue.
Description
Returns the number of members currently associated with the specified queuename.
@@ -13898,13 +14225,13 @@
QUEUE_MEMBER(queuename,option)
Arguments
+queuename option logged - Returns the number of logged-in members for the specified queue. free - Returns the number of logged-in members for the specified queue that either can take calls or are currently wrapping up after a previous call. ready - Returns the number of logged-in members for the specified queue that are immediately available to answer a call. count - Returns the total number of members for the specified queue.
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-queuename option logged - Returns the number of logged-in members for the specified queue. free - Returns the number of logged-in members for the specified queue that either can take calls or are currently wrapping up after a previous call. ready - Returns the number of logged-in members for the specified queue that are immediately available to answer a call. count - Returns the total number of members for the specified queue.
-See Also Import Version
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_MEMBER_COUNT
QUEUE_MEMBER_COUNT()
Synopsis
@@ -13913,7 +14240,10 @@
Description
Returns the number of members currently associated with the specified queuename. This function has been deprecated in favor of the QUEUE_MEMBER() function
-Syntax
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
QUEUE_MEMBER_COUNT(queuename)
@@ -13921,10 +14251,10 @@
queuename
See Also
-Function_QUEUE_MEMBER_LIST
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_MEMBER_LIST
QUEUE_MEMBER_LIST()
Synopsis
@@ -13933,9 +14263,7 @@
Description
Returns a comma-separated list of members associated with the specified queuename.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Syntax
+Syntax
QUEUE_MEMBER_LIST(queuename)
@@ -13943,10 +14271,14 @@
queuename
See Also
-Function_QUEUE_MEMBER_COUNT
+Application_Queue
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_MEMBER_PENALTY
QUEUE_MEMBER_PENALTY()
Synopsis
@@ -13961,9 +14293,16 @@
Arguments
queuename interface
-See Also Import Version
+See Also
+
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_VARIABLES
QUEUE_VARIABLES()
Synopsis
@@ -13971,18 +14310,21 @@
Return Queue information in variables.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Makes the following queue variables available. Returns 0 if queue is found and setqueuevar is defined, -1 otherwise.
+Makes the following queue variables available. Returns 0 if queue is found and setqueuevar is defined, -1 otherwise.
Syntax
QUEUE_VARIABLES(queuename)
Arguments
queuename QUEUEMAX - Maxmimum number of calls allowed. QUEUESTRATEGY - The strategy of the queue. QUEUECALLS - Number of calls currently in the queue. QUEUEHOLDTIME - Current average hold time. QUEUECOMPLETED - Number of completed calls for the queue. QUEUEABANDONED - Number of abandoned calls. QUEUESRVLEVEL - Queue service level. QUEUESRVLEVELPERF - Current service level performance.
-See Also Import Version
+See Also
+
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_QUEUE_WAITING_COUNT
QUEUE_WAITING_COUNT()
Synopsis
@@ -13997,20 +14339,22 @@
Arguments
queuename
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_QUOTE
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Application_Queue Application_QueueLog Application_AddQueueMember Application_RemoveQueueMember Application_PauseQueueMember Application_UnpauseQueueMember Function_QUEUE_VARIABLES Function_QUEUE_MEMBER Function_QUEUE_MEMBER_COUNT Function_QUEUE_EXISTS Function_QUEUE_WAITING_COUNT Function_QUEUE_MEMBER_LIST Function_QUEUE_MEMBER_PENALTY
+Import Version
-QUOTE()
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_QUOTE
+QUOTE()
Synopsis
Quotes a given string, escaping embedded quotes as necessary
Description
-Example: ${QUOTE(ab"c"de)} will return "abcde"
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Example: ${QUOTE(ab"c"de)} will return "abcde"
Syntax
QUOTE(string)
@@ -14019,7 +14363,7 @@
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_RAND
RAND()
Synopsis
@@ -14036,15 +14380,14 @@
min max
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Function_REALTIME
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_REALTIME
REALTIME()
Synopsis
-RealTime Read/Write Functions.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+RealTime Read/Write Functions.
Description
This function will read or write values from/to a RealTime repository. REALTIME(....) will read names/values from the repository, and REALTIME(....)= will write a new value/field to the repository. On a read, this function returns a delimited text string. The name/value pairs are delimited by delim1, and the name and value are delimited between each other with delim2. If there is no match, NULL will be returned by the function. On a write, this function will always return NULL.
@@ -14054,9 +14397,12 @@
Arguments
family fieldmatch value delim1|field - Use delim1 with delim2 on read and field without delim2 on write If we are reading and delim1 is not specified, defaults to , delim2 - Parameter only used when reading, if not specified defaults to =
-See Also Import Version
+See Also
+
+Function_REALTIME_STORE Function_REALTIME_DESTROY Function_REALTIME_FIELD Function_REALTIME_HASH
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_REALTIME_DESTROY
REALTIME_DESTROY()
Synopsis
@@ -14069,13 +14415,17 @@
REALTIME_DESTROY(family,fieldmatch[,value[,delim1[,delim2]]])
+Arguments
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Arguments
-family fieldmatch value delim1 delim2
-See Also Import Version
+family fieldmatch value delim1 delim2
+See Also
+
+Function_REALTIME Function_REALTIME_STORE Function_REALTIME_FIELD Function_REALTIME_HASH
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_REALTIME_FIELD
REALTIME_FIELD()
Synopsis
@@ -14090,28 +14440,35 @@
Arguments
family fieldmatch value fieldname
-See Also Import Version
+See Also
+
+Function_REALTIME Function_REALTIME_STORE Function_REALTIME_DESTROY Function_REALTIME_HASH
+Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_REALTIME_HASH
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Function_REALTIME_HASH
REALTIME_HASH()
Synopsis
RealTime query function.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This function retrieves a single record from the RT engine, where fieldmatch contains the value value and formats the output suitably, such that it can be assigned to the HASH() function. The HASH() function then provides a suitable method for retrieving each field value of the record.
+This function retrieves a single record from the RT engine, where fieldmatch contains the value value and formats the output suitably, such that it can be assigned to the HASH() function. The HASH() function then provides a suitable method for retrieving each field value of the record.
Syntax
REALTIME_HASH(family,fieldmatch,value)
Arguments
family fieldmatch value
-See Also Import Version
+See Also
+
+Function_REALTIME Function_REALTIME_STORE Function_REALTIME_DESTROY Function_REALTIME_FIELD
+Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_REALTIME_STORE
REALTIME_STORE()
Synopsis
@@ -14122,37 +14479,43 @@
This function will insert a new set of values into the RealTime repository. If RT engine provides an unique ID of the stored record, REALTIME_STORE(...)=.. creates channel variable named RTSTOREID, which contains value of unique ID. Currently, a maximum of 30 field/value pairs is supported.
Syntax
-REALTIME_STORE(family,field1,fieldN[,...],field30)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+REALTIME_STORE(family,field1,fieldN[,...],field30)
Arguments
family field1 fieldN field30
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_REDIRECTING
+See Also
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Function_REALTIME Function_REALTIME_DESTROY Function_REALTIME_FIELD Function_REALTIME_HASH
+Import Version
-REDIRECTING()
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_REDIRECTING
+REDIRECTING()
Synopsis
Gets or sets Redirecting data on the channel.
Description
-Gets or sets Redirecting data on the channel. The allowable values for the reason field are the following: Unknown Call Forwarding Busy Call Forwarding No Reply Callee is Unavailable Time of Day Do Not Disturb Call Deflection Follow Me Called DTE Out-Of-Order Callee is Away Call Forwarding By The Called DTE Call Forwarding Unconditional The allowable values for the xxx-name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5
+Gets or sets Redirecting data on the channel. The allowable values for the reason field are the following: Unknown Call Forwarding Busy Call Forwarding No Reply Callee is Unavailable Time of Day Do Not Disturb Call Deflection Follow Me Called DTE Out-Of-Order
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-ISO8859-7 ISO10646 Bmp String ISO10646 UTF-8 String
+Callee is Away Call Forwarding By The Called DTE Call Forwarding Unconditional The allowable values for the xxx-name-charset field are the following: Unknown ISO8859-1 Withdrawn ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 ISO8859-7 ISO10646 Bmp String ISO10646 UTF-8 String
Syntax
REDIRECTING(datatype[,i])
Arguments
-datatype - The allowable datatypes are: from-all from-name from-name-valid from-name-charset from-name-pres from-num from-num-valid from-num-plan from-num-pres from-subaddr from-subaddr-valid from-subaddr-type from-subaddr-odd from-tag to-all to-name to-name-valid to-name-charset to-name-pres to-num to-num-valid to-num-plan to-num-pres to-subaddr to-subaddr-valid to-subaddr-type to-subaddr-odd to-tag reason count i - If set, this will prevent the channel from sending out protocol messages because of the value being set
+datatype - The allowable datatypes are: from-all from-name from-name-valid from-name-charset from-name-pres from-num from-num-valid from-num-plan from-num-pres from-subaddr from-subaddr-valid from-subaddr-type from-subaddr-odd from-tag to-all to-name to-name-valid to-name-charset to-name-pres to-num to-num-valid to-num-plan to-num-pres
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+to-subaddr to-subaddr-valid to-subaddr-type to-subaddr-odd to-tag reason count i - If set, this will prevent the channel from sending out protocol messages because of the value being set
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_REGEX
REGEX()
Synopsis
@@ -14160,9 +14523,7 @@
Check string against a regular expression.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Return 1 on regular expression match or 0 otherwise Please note that the space following the double quotes separating the regex from the data is optional and if present, is skipped. If a space is desired at the beginning of the data, then put two spaces there; the second will not be skipped.
+Return 1 on regular expression match or 0 otherwise Please note that the space following the double quotes separating the regex from the data is optional and if present, is skipped. If a space is desired at the beginning of the data, then put two spaces there; the second will not be skipped.
Syntax
REGEX("regular expression",string)
@@ -14171,7 +14532,7 @@
"regular expression" string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_REPLACE
REPLACE()
Synopsis
@@ -14179,7 +14540,9 @@
Replace a set of characters in a given string with another character.
Description
-Iterates through a string replacing all the find-chars with replace-char. replace-char may be either empty or contain one character. If empty, all find-chars will be deleted from the output. The replacement only occurs in the output. The original variable is not altered.The replacement only occurs in the output. The original variable is not altered.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Iterates through a string replacing all the find-chars with replace-char. replace-char may be either empty or contain one character. If empty, all find-chars will be deleted from the output. The replacement only occurs in the output. The original variable is not altered.The replacement only occurs in the output. The original variable is not altered.
Syntax
REPLACE(varname,find-chars[,replace-char])
@@ -14188,11 +14551,8 @@
varname find-chars replace-char
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Function_SET
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+Function_SET
SET()
Synopsis
@@ -14205,13 +14565,16 @@
varname value
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SHA1
SHA1()
Synopsis
Computes a SHA1 digest.
-Description
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Description
Generate a SHA1 digest via the SHA1 algorythm. Example: Set(sha1hash=${SHA1(junky)}) Sets the asterisk variable sha1hash to the string 60fa5675b9303eb62f99a9cd47f9f5837d18f9a0 which is known as his hash
Syntax
@@ -14222,9 +14585,7 @@
data - Input string
See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SHARED
SHARED()
Synopsis
@@ -14235,13 +14596,15 @@
Implements a shared variable area, in which you may share variables between channels. The variables used in this space are separate from the general namespace of the channel and thus The variables used in this space are separate from the general namespace of the channel and thus None - SHARED(foo) and The variables used in this space are separate from the general namespace of the channel and thus None - foo represent two completely different variables, despite sharing the same name. Finally, realize that there is an inherent race between channels operating at the same time, fiddling with each others' internal variables, which is why this special variable namespace exists; it is to remind you that variables in the SHARED namespace may change at any time, without warning. You should therefore take special care to ensure that when using the SHARED namespace, you retrieve the variable and store it in a regular channel variable before using it in a set of calculations (or you might be surprised by the result).
Syntax
-SHARED(varname[,channel])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SHARED(varname[,channel])
Arguments
varname - Variable name channel - If not specified will default to current channel. It is the complete channel name: SIP/12-abcd1234 or the prefix only SIP/12.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SHELL
SHELL()
Synopsis
@@ -14249,9 +14612,7 @@
Executes a command as if you were at a shell.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Returns the value from a system command Example: Set(foo=${SHELL(echo \bar)}) When using the SHELL() dialplan function, your \SHELL\ is /bin/sh, which may differ as to the underlying shell, depending upon your production platform. Also keep in mind that if you are using a common path, you should be mindful of race conditions that could result from two calls running SHELL() simultaneously.When using the SHELL() dialplan function, your \SHELL\ is /bin/sh, which may differ as to the underlying shell, depending upon your production platform. Also keep in mind that if you are using a common path, you should be mindful of race conditions that could result from two calls running SHELL() simultaneously.
+Returns the value from a system command Example: Set(foo=${SHELL(echo \bar)}) When using the SHELL() dialplan function, your \SHELL\ is /bin/sh, which may differ as to the underlying shell, depending upon your production platform. Also keep in mind that if you are using a common path, you should be mindful of race conditions that could result from two calls running SHELL() simultaneously.When using the SHELL() dialplan function, your \SHELL\ is /bin/sh, which may differ as to the underlying shell, depending upon your production platform. Also keep in mind that if you are using a common path, you should be mindful of race conditions that could result from two calls running SHELL() simultaneously.
Syntax
SHELL(command)
@@ -14260,8 +14621,11 @@
command - This is the argument to the function, the command you want to pass to the shell.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
-Function_SHIFT
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Function_SHIFT
SHIFT()
Synopsis
@@ -14271,15 +14635,13 @@
Example: exten => s,1,Set(array=one,two,three) exten => s,n,While($["$\{SET(var=$\{SHIFT(array)\})\}" != ""]) exten => s,n,NoOp(var is ${var}) exten => s,n,EndWhile This would iterate over each value in array, left to right, and would result in NoOp(var is one), NoOp(var is two), and NoOp(var is three) being executed.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SHIFT(varname[,delimiter])
+SHIFT(varname[,delimiter])
Arguments
varname delimiter
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SIP_HEADER
SIP_HEADER()
Synopsis
@@ -14290,13 +14652,15 @@
Since there are several headers (such as Via) which can occur multiple times, SIP_HEADER takes an optional second argument to specify which header with that name to retrieve. Headers start at offset 1.
Syntax
-SIP_HEADER(name[,number])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SIP_HEADER(name[,number])
Arguments
name number - If not specified, defaults to 1.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SIPCHANINFO
SIPCHANINFO()
Synopsis
@@ -14304,15 +14668,13 @@
Gets the specified SIP parameter from the current channel.
Description Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SIPCHANINFO(item)
+SIPCHANINFO(item)
Arguments
item peerip - The IP address of the peer. recvip - The source IP address of the peer. from - The URI from the From: header. uri - The URI from the Contact: header. useragent - The useragent. peername - The name of the peer. t38passthrough - 1 if T38 is offered or enabled in this channel, otherwise 0.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SIPPEER
SIPPEER()
Synopsis
@@ -14320,16 +14682,15 @@
Gets SIP peer information.
Description Syntax
-SIPPEER(peername[,item])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SIPPEER(peername[,item])
Arguments
peername item ip - (default) The ip address. port - The port number. mailbox - The configured mailbox. context - The configured context. expire - The epoch time of the next expire. dynamic - Is it dynamic? (yes/no). callerid_name - The configured Caller ID name. callerid_num - The configured Caller ID number. callgroup - The configured Callgroup. pickupgroup - The configured Pickupgroup. codecs - The configured codecs. status - Status (if qualify=yes). regexten - Registration extension. limit - Call limit (call-limit). busylevel - Configured call level for signalling busy. curcalls - Current amount of calls. Only available if call-limit is set. language - Default language for peer. accountcode - Account code for this peer. useragent - Current user agent id for peer. maxforwards - The value used for SIP loop prevention in outbound requests chanvar[name] - A channel variable configured with setvar for this peer. codec[x] - Preferred codec index number x (beginning with zero).
+See Also Import Version
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-See Also Import Version
-
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SMDI_MSG
SMDI_MSG()
Synopsis
@@ -14343,13 +14704,17 @@
SMDI_MSG(message_id,component)
Arguments
-message_id component - Valid message components are: number - The message desk number terminal - The message desk terminal station - The forwarding station callerid - The callerID of the calling party that was forwarded type - The call type. The value here is the exact character that came in on the SMDI link. Typically, example values are: Options: D - Direct Calls A - Forward All Calls B - Forward Busy Calls N - Forward No Answer Calls
+message_id component - Valid message components are: number - The message desk number terminal - The message desk terminal station - The forwarding station
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+callerid - The callerID of the calling party that was forwarded type - The call type. The value here is the exact character that came in on the SMDI link. Typically, example values are: Options: D - Direct Calls A - Forward All Calls B - Forward Busy Calls N - Forward No Answer Calls
See Also
Function_SMDI_MSG_RETRIEVE
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SMDI_MSG_RETRIEVE
SMDI_MSG_RETRIEVE()
Synopsis
@@ -14357,9 +14722,7 @@
Retrieve an SMDI message.
Description
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-This function is used to retrieve an incoming SMDI message. It returns an ID which can be used with the SMDI_MSG() function to access details of the message. Note that this is a destructive function in the sense that once an SMDI message is retrieved using this function, it is no longer in the global SMDI message queue, and can not be accessed by any other Asterisk channels. The timeout for this function is optional, and the default is 3 seconds. When providing a timeout, it should be in milliseconds. The default search is done on the forwarding station ID. However, if you set one of the search key options in the options field, you can change this behavior.
+This function is used to retrieve an incoming SMDI message. It returns an ID which can be used with the SMDI_MSG() function to access details of the message. Note that this is a destructive function in the sense that once an SMDI message is retrieved using this function, it is no longer in the global SMDI message queue, and can not be accessed by any other Asterisk channels. The timeout for this function is optional, and the default is 3 seconds. When providing a timeout, it should be in milliseconds. The default search is done on the forwarding station ID. However, if you set one of the search key options in the options field, you can change this behavior.
Syntax
SMDI_MSG_RETRIEVE(smdi port,search key[,timeout[,options]])
@@ -14371,7 +14734,9 @@
Function_SMDI_MSG
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SORT
SORT()
Synopsis
@@ -14385,14 +14750,10 @@
SORT(key1val1[,key2val2[,...]])
Arguments
-keyval key1 val1
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-keyvaln key2 val2
+keyval key1 val1 keyvaln key2 val2
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH
SPEECH()
Synopsis
@@ -14406,10 +14767,14 @@
SPEECH(argument)
Arguments
-argument status - Returns 1 upon speech object existing, or 0 if not spoke - Returns 1 if spoker spoke, or 0 if not results - Returns number of results that were recognized.
+argument
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+status - Returns 1 upon speech object existing, or 0 if not spoke - Returns 1 if spoker spoke, or 0 if not results - Returns number of results that were recognized.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH_ENGINE
SPEECH_ENGINE()
Synopsis
@@ -14420,15 +14785,13 @@
Changes a speech engine specific attribute.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SPEECH_ENGINE(name)
+SPEECH_ENGINE(name)
Arguments
name
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH_GRAMMAR
SPEECH_GRAMMAR()
Synopsis
@@ -14442,10 +14805,13 @@
SPEECH_GRAMMAR([nbest_number,result_number])
Arguments
-nbest_number result_number
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+nbest_number result_number
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH_RESULTS_TYPE
SPEECH_RESULTS_TYPE()
Synopsis
@@ -14456,14 +14822,12 @@
Sets the type of results that will be returned. Valid options are normal or nbest.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SPEECH_RESULTS_TYPE()
+SPEECH_RESULTS_TYPE()
Arguments
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH_SCORE
SPEECH_SCORE()
Synopsis
@@ -14478,9 +14842,12 @@
Arguments
nbest_number result_number
-See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPEECH_TEXT
SPEECH_TEXT()
Synopsis
@@ -14491,15 +14858,13 @@
Gets the recognized text of a result.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-SPEECH_TEXT([nbest_number,result_number])
+SPEECH_TEXT([nbest_number,result_number])
Arguments
nbest_number result_number
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SPRINTF
SPRINTF()
Synopsis
@@ -14513,22 +14878,23 @@
SPRINTF(format,arg1[,arg2[,...][,argN]])
Arguments
-format arg1 arg2 argN
+format arg1
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+arg2 argN
See Also
sprintf(3)
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SQL_ESC
SQL_ESC()
Synopsis
Escapes single ticks for use in SQL statements.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
Used in SQL templates to escape data which may contain single ticks ' which are otherwise used to delimit data. Example: SELECT foo FROM bar WHERE baz='${SQL_ESC(${ARG1})}'
Syntax
@@ -14539,7 +14905,7 @@
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SRVQUERY
SRVQUERY()
Synopsis
@@ -14550,20 +14916,20 @@
This will do an SRV lookup of the given service.
Syntax
-SRVQUERY(service)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+SRVQUERY(service)
Arguments
service - The service for which to look up SRV records. An example would be something like _sip._udp.example.com
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SRVRESULT
SRVRESULT()
Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Retrieve results from an SRVQUERY.
+Retrieve results from an SRVQUERY.
Description
This function will retrieve results from a previous use of the SRVQUERY function.
@@ -14575,7 +14941,7 @@
id - The identifier returned by the SRVQUERY function. resultnum - The number of the result that you want to retrieve. Results start at 1. If this argument is specified as getnum, then it will return the total number of results that are available.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_STAT
STAT()
Synopsis
@@ -14583,20 +14949,20 @@
Does a check on the specified file.
Description Syntax
-STAT(flag,filename)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+STAT(flag,filename)
Arguments
flag - Flag may be one of the following: d - Checks if the file is a directory. e - Checks if the file exists. f - Checks if the file is a regular file. m - Returns the file mode (in octal) s - Returns the size (in bytes) of the file A - Returns the epoch at which the file was last accessed. C - Returns the epoch at which the inode was last changed. M - Returns the epoch at which the file was last modified. filename
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_STRFTIME
STRFTIME()
Synopsis
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Returns the current date/time in the specified format.
+Returns the current date/time in the specified format.
Description
STRFTIME supports all of the same formats as the underlying C function strftime(3). It also supports the following format: %[n]q - fractions of a second, with leading zeros. Example: %3q will give milliseconds and %1q will give tenths of a second. The default is set at milliseconds (n=3). The common case is to use it in combination with %S, as in %S.%3q.
@@ -14611,9 +14977,12 @@
strftime(3)
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_STRPTIME
-STRPTIME()
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+STRPTIME()
Synopsis
Returns the epoch of the arbitrary date/time string structured as described by the format.
@@ -14625,13 +14994,10 @@
STRPTIME(datetime,timezone,format)
Arguments
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-datetime timezone format
+datetime timezone format
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_SYSINFO
SYSINFO()
Synopsis
@@ -14645,18 +15011,20 @@
SYSINFO(parameter)
Arguments
-parameter loadavg - System load average from past minute. numcalls - Number of active calls currently in progress. uptime - System uptime in hours. This parameter is dependant upon operating system.This parameter is dependant upon operating system. totalram - Total usable main memory size in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. freeram - Available memory size in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. bufferram - Memory used by buffers in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. totalswap - Total swap space still available in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. freeswap - Free swap space still available in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. numprocs - Number of current processes. This parameter is dependant upon operating system.This parameter is dependant upon operating system.
+parameter loadavg - System load average from past minute. numcalls - Number of active calls currently in progress. uptime - System uptime in hours. This parameter is dependant upon operating system.This parameter is dependant upon operating system. totalram - Total usable main memory size in KiB. This parameter is dependant upon operating system.This parameter is
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+dependant upon operating system. freeram - Available memory size in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. bufferram - Memory used by buffers in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. totalswap - Total swap space still available in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. freeswap - Free swap space still available in KiB. This parameter is dependant upon operating system.This parameter is dependant upon operating system. numprocs - Number of current processes. This parameter is dependant upon operating system.This parameter is dependant upon operating system.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TESTTIME
TESTTIME()
Synopsis
Sets a time to be used with the channel to test logical conditions.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
To test dialplan timing conditions at times other than the current time, use this function to set an alternate date and time. For example, you may wish to evaluate whether a location will correctly identify to callers that the area is closed on Christmas Day, when Christmas would otherwise fall on a day when the office is normally open.
Syntax
@@ -14670,26 +15038,26 @@
Application_GotoIfTime
Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TIMEOUT
TIMEOUT()
Synopsis
-Gets or sets timeouts on the channel. Timeout values are in seconds.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Gets or sets timeouts on the channel. Timeout values are in seconds.
Description
The timeouts that can be manipulated are: absolute : The absolute maximum amount of time permitted for a call. Setting of 0 disables the timeout. digit : The maximum amount of time permitted between digits when the user is typing in an extension. When this timeout expires, after the user has started to type in an extension, the extension will be considered complete, and will be interpreted. Note that if an extension typed in is valid, it will not have to timeout to be tested, so typically at the expiry of this timeout, the extension will be considered invalid (and thus control would be passed to the i extension, or if it doesn't exist the call would be terminated). The default timeout is 5 seconds. response : The maximum amount of time permitted after falling through a series of priorities for a channel in which the user may begin typing an extension. If the user does not type an extension in this amount of time, control will pass to the t extension if it exists, and if not the call would be terminated. The default timeout is 10 seconds.
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-TIMEOUT(timeouttype)
+TIMEOUT(timeouttype)
Arguments
timeouttype - The timeout that will be manipulated. The possible timeout types are: absolute, digit or response
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TOLOWER
TOLOWER()
Synopsis
@@ -14704,9 +15072,12 @@
Arguments
string
-See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TOUPPER
TOUPPER()
Synopsis
@@ -14717,15 +15088,13 @@
Example: ${TOUPPER(Example)} returns "EXAMPLE"
Syntax
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-TOUPPER(string)
+TOUPPER(string)
Arguments
string
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TRYLOCK
TRYLOCK()
Synopsis
@@ -14740,9 +15109,12 @@
Arguments
lockname
-See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+See Also Import Version
+
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_TXTCIDNAME
TXTCIDNAME()
Synopsis
@@ -14751,10 +15123,7 @@
Description
This function looks up the given phone number in DNS to retrieve the caller id name. The result will either be blank or be the value found in the TXT record in DNS.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Syntax
+Syntax
TXTCIDNAME(number[,zone-suffix])
@@ -14762,7 +15131,7 @@
number zone-suffix - If no zone-suffix is given, the default will be e164.arpa
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_UNLOCK
UNLOCK()
Synopsis
@@ -14773,22 +15142,21 @@
Unlocks a previously locked mutex. Returns 1 if the channel had a lock or 0 otherwise. It is generally unnecessary to unlock in a hangup routine, as any locks held are automatically freed when the channel is destroyed.It is generally unnecessary to unlock in a hangup routine, as any locks held are automatically freed when the channel is destroyed.
Syntax
-UNLOCK(lockname)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+UNLOCK(lockname)
Arguments
lockname
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_UNSHIFT
UNSHIFT()
Synopsis
Inserts one or more values to the beginning of a variable containing delimited text
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
Example: Set(UNSHIFT(array)=one,two,three) would insert one, two, and three before the values stored in the variable "array".
Syntax
@@ -14799,7 +15167,7 @@
varname delimiter
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_URIDECODE
URIDECODE()
Synopsis
@@ -14808,7 +15176,10 @@
Description
Returns the decoded URI-encoded data string.
-Syntax
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Syntax
URIDECODE(data)
@@ -14816,16 +15187,13 @@
data - Input string to be decoded.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_URIENCODE
URIENCODE()
Synopsis
Encodes a string to URI-safe encoding according to RFC 2396.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
Returns the encoded string defined in data.
Syntax
@@ -14836,7 +15204,7 @@
data - Input string to be encoded.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_VALID_EXTEN
VALID_EXTEN()
Synopsis
@@ -14847,22 +15215,21 @@
Returns a true value if the indicated context, extension, and priority exist.
Syntax
-VALID_EXTEN([context,extension[,priority]])
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+VALID_EXTEN([context,extension[,priority]])
Arguments
context - Defaults to the current context extension priority - Priority defaults to 1.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_VERSION
VERSION()
Synopsis
Return the Version info for this Asterisk.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Description
+Description
If there are no arguments, return the version of Asterisk in this format: SVN-branch-1.4-r44830M Example: Set(junky=${VERSION()}; Sets junky to the string SVN-branch-1.6-r74830M, or possibly, SVN-trunk-r45126M.
Syntax
@@ -14873,10 +15240,13 @@
info - The possible values are: ASTERISK_VERSION_NUM - A string of digits is returned (right now fixed at 999999). BUILD_USER - The string representing the user's name whose account was used to configure Asterisk, is returned. BUILD_HOSTNAME - The string representing the name of the host on which Asterisk was configured, is returned. BUILD_MACHINE - The string representing the type of machine on which Asterisk was configured, is returned. BUILD_OS - The string representing the OS of the machine on which Asterisk was configured, is returned. BUILD_DATE - The string representing the date on which Asterisk was configured, is returned. BUILD_KERNEL - The string representing the kernel version of the machine on which Asterisk was configured, is returned.
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_VMCOUNT
VMCOUNT()
-Synopsis
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Synopsis
Count the voicemails in a specified mailbox.
Description
@@ -14887,14 +15257,10 @@
VMCOUNT(vmbox[@context][,folder])
Arguments
-vmbox vmbox context - If not specified, defaults to default.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-folder - If not specified, defaults to INBOX
+vmbox vmbox context - If not specified, defaults to default. folder - If not specified, defaults to INBOX
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Function_VOLUME
VOLUME()
Synopsis
@@ -14902,25 +15268,24 @@
Set the TX or RX volume of a channel.
Description
-The VOLUME function can be used to increase or decrease the tx or rx gain of any channel. For example: Set(VOLUME(TX)=3) Set(VOLUME(RX)=2)
+The VOLUME function can be used to increase or decrease the tx or rx gain of any channel. For example: Set(VOLUME(TX)=3) Set(VOLUME(RX)=2) Set(VOLUME(TX,p)=3) Set(VOLUME(RX,p)=3>
Syntax
-VOLUME(direction)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+VOLUME(direction[,options])
Arguments
-direction - Must be TX or RX.
+direction - Must be TX or RX. options p - Enable DTMF volume control
See Also Import Version
-This documentation was imported from Asterisk version SVN-branch-1.8-r293887.
+This documentation was imported from Asterisk version SVN-branch-1.8-r311874.
Development
This section includes some information related to the core development of Asterisk. Most of the documentation related to the source code is embedded in the source files and is processed with Doxygen. The latest versions of the source documentation can be found on asterisk.org.
Policies and Procedures
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Commit Messages
+Commit Messages
1. Commit Message Formatting 2. Special Tags for Commit Messages 2.1. Mantis ( https://issues.asterisk.org/) 2.2. Review Board ( https://reviewboard.asterisk.org/) 3. Commit Messages with svnmerge
1. Commit Message Formatting
@@ -14928,7 +15293,11 @@
The following illustrates the basic outline for commit messages:
<Empty line="Line"> <Verbose of="of" the="the" description="description" changes="changes"> <Empty line="Line"> <Special tags="Tags"> ]]></Special></Empty></Verbose></Empty>
-Some commit history viewers treat the first line of commit messages as the summary for the commit. So, an effort should be made to format our commit messages in that fashion. The verbose description may contain multiple paragraphs, itemized lists, etc. Always end the first sentence (and any subsequent sentences) with punctuation. Commit messages should be wrapped at 80 columns. Note that for trivial commits, such as "fix the build", or "fix spelling mistake", the verbose description may not be necessary.
+Some commit history viewers treat the first line of commit messages as the summary for the commit. So, an effort should be made to format our commit messages in that fashion. The verbose description may contain multiple paragraphs, itemized lists, etc. Always end the first sentence (and any subsequent sentences) with punctuation. Commit messages should be wrapped at 80 columns.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Note that for trivial commits, such as "fix the build", or "fix spelling mistake", the verbose description may not be necessary.
2. Special Tags for Commit Messages
2.1. Mantis (https://issues.asterisk.org/)
@@ -14938,11 +15307,7 @@
To have a commit automatically close an issue, use a tag of the form:
(closes issue #1234)
-When making a commit for a mantis issue, it is easiest to use the provided commit message template functionality. It will format the special tags appropriately, and will also include information about who reported the issue, which patches are being applied, and who did testing. Assuming that you have bug marshal access (and if you have commit access, it is pretty safe to assume that you do), you will find the commit message template section directly below the issue details section and above the issue relationships section. You will have to click the '+' next to "Commit message template" to make the contents of the section visible.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Here is an example of what the template will generate for you:
+When making a commit for a mantis issue, it is easiest to use the provided commit message template functionality. It will format the special tags appropriately, and will also include information about who reported the issue, which patches are being applied, and who did testing. Assuming that you have bug marshal access (and if you have commit access, it is pretty safe to assume that you do), you will find the commit message template section directly below the issue details section and above the issue relationships section. You will have to click the '+' next to "Commit message template" to make the contents of the section visible. Here is an example of what the template will generate for you:
(closes issue #1234) Reported by: SomeGuy Patches: fix_bug_1234.diff uploaded by SomeDeveloper (license 5678)
If the patch being committed was written by the person doing the commit, and is not available to reference as an upload to the issue, there is no need to include something like "fixed by me", as that will be the default assumption when a specific patch is not referenced.
@@ -14952,17 +15317,13 @@
Review: https://reviewboard.asterisk.org/r/95/
3. Commit Messages with svnmerge
-When using the svnmerge tool for merging changes between branches, use the commit message generated by svnmerge. The '-f' option to svnmerge allows you to specify a file for svnmerge to write out a commit message to. The '-F' option to svn commit allows you to specify a file that contains the commit message. If you are using the expect script wrappers for svnmerge from repotools, a commit message is automatically placed in the file '../merge.msg'. For more detailed information about working with branches and merging, see Subversion Usage. Issue Tracker Workflow
-Description of the Issue Tracker Workflow
-
-(This document is most beneficial for Asterisk bug marshals, however it is good reading for anyone who may be filing issues or wondering how the Asterisk Open Source project moves issues through from filing to completion.) The workflow in the issue tracker should be handled in the following way:
-1. A bug is reported and is automatically placed in the 'New' status. 2. The Bug Marshall team should go through bugs in the 'New' status to determine whether the report is valid (not a duplicate, hasn't already been fixed, not a Digium tech support issue, etc.). Invalid reports should be set to 'Closed' with the appropriate resolution set. Categories and descriptions should be corrected at this point.[~russell:Note1] Issues should also have enough information for a developer to either reproduce the issue or determine where an issue exists (or both). If this is not the case then the issue should be moved to 'Feedback' prior to moving forward in the workflow. 3. The next step is to determine whether the report is about a bug or a submission of a new feature: a. BUG: A bug should be moved into the status 'Acknowledged' if enough information has been provided by the reporter to either reproduce the issue or clearly see where an issue may lie. The bug may also be assigned to a developer for the creation of the initial patch, or review of the issue. Once a patch has been created for the issue and attached, the issue can then be moved to the 'Confirmed' status. At this point,
-
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-3. a.
+When using the svnmerge tool for merging changes between branches, use the commit message generated by svnmerge. The '-f' option to svnmerge allows you to specify a file for svnmerge to write out a commit message to. The '-F' option to svn commit allows you to specify a file that contains the commit message. If you are using the expect script wrappers for svnmerge from repotools, a commit message is automatically placed in the file '../merge.msg'. For more detailed information about working with branches and merging, see Subversion Usage. Issue Tracker Workflow
+Description of the Issue Tracker Workflow
-initial code review and discussion about the patch will take place. Once an adequate amount of support for the implementation of the patch is acquired, then the bug can be moved to the 'Ready for Testing' status for wider testing by the community. After the testing phase is complete and it appears the issue is resolved, the patch can be committed by a developer and closed. b. FEATURE: As new features should be filed with a patch, it can be immediately moved to the 'confirmed' status, making it ready for basic formatting and code review. From there any changes to style or feel of the patch based on feedback from the community can be discussed, and changes to the patch made. It can then be moved forward to the 'Ready for Testing' status. Once the feature has been merged, or a decision has been made that it will not be merged, the issue should be taken to 'Closed' with the appropriate resolution.[~russell:Note2] 4. If at any point in the workflow, an issue requires feedback from the original poster of the issue, the status should be changed to 'Feedback'. Once the required information has been provided, it should be placed back in the appropriate point of the workflow. 5. If at any point in the workflow, a developer or bug marshal would like to take responsibility for doing the work that is necessary to progress an issue, the status can be changed to 'Assigned'. At that point the developer assigned to the issue will be responsible for moving the issue to completion.
+(This document is most beneficial for Asterisk bug marshals, however it is good reading for anyone who may be filing issues or wondering how the Asterisk Open Source project moves issues through from filing to completion.) The workflow in the issue tracker should be handled in the following way:
+1. A bug is reported and is automatically placed in the 'New' status. 2. The Bug Marshall team should go through bugs in the 'New' status to determine whether the report is valid (not a duplicate, hasn't already been fixed, not a Digium tech support issue, etc.). Invalid reports should be set to 'Closed' with the appropriate resolution set. Categories and descriptions should be corrected at this point.[~russell:Note1] Issues should also have enough information for a developer to either reproduce the issue or determine where an issue exists (or both). If this is not the case then the issue should be moved to 'Feedback' prior to moving forward in the workflow. 3. The next step is to determine whether the report is about a bug or a submission of a new feature: a. BUG: A bug should be moved into the status 'Acknowledged' if enough information has been provided by the reporter to either reproduce the issue or clearly see where an issue may lie. The bug may also be assigned to a developer for the creation of the initial patch, or review of the issue. Once a patch has been created for the issue and attached, the issue can then be moved to the 'Confirmed' status. At this point, initial code review and discussion about the patch will take place. Once an adequate amount of support for the implementation of the patch is acquired, then the bug can be moved to the 'Ready for Testing' status for wider testing by the community. After the testing phase is complete and it appears the issue is resolved, the patch can be committed by a developer and closed. b. FEATURE: As new features should be filed with a patch, it can be immediately moved to the 'confirmed' status, making it ready for basic formatting and code review. From there any changes to style or feel of the patch based on feedback from the community can be discussed, and changes to the patch made. It can then be moved forward to the 'Ready for Testing' status. Once the feature has been merged, or a decision has been made that it will not be merged, the issue should be taken to 'Closed' with the appropriate resolution.[~russell:Note2] 4. If at any point in the workflow, an issue requires feedback from the original poster of the issue, the status should be changed to 'Feedback'. Once the required information has been provided, it should be placed back in the appropriate point of the workflow. 5. If at any point in the workflow, a developer or bug marshal would like to take responsibility for doing the work that is necessary to progress an issue, the status can be changed to 'Assigned'. At that point the developer assigned to the issue will be responsible for moving the issue to completion.
Workflow Summary
@@ -14972,7 +15333,11 @@
This issue is awaiting review by bug marshals. Categorization and summaries should be fixed as appropriate.
Feedback
-This issue requires feedback from the poster of the issue before any additional progress in the workflow can be made. This may include providing additional debugging information, or a backtrace with DONT_OPTIMIZE enabled, for example. (See the doc/HOWTO_collect_debug_information.txt file in your Asterisk source.)
+This issue requires feedback from the poster of the issue before any additional progress in the workflow can be made. This may include providing additional debugging information, or a
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+backtrace with DONT_OPTIMIZE enabled, for example. (See the doc/HOWTO_collect_debug_information.txt file in your Asterisk source.)
Acknowledged
This is a submitted bug which has no patch associated with it, but appears to be a valid bug based on the description and provided debugging information.
@@ -14987,9 +15352,7 @@
A developer or bug marshal has taken responsibility for taking the necessary steps to move forward in the workflow. Once the issue is ready to be reviewed and feedback provided, it should be placed back into the appropriate place of the workflow.
Resolved
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-A resolution for this issue has been reached. This issue should immediately be Closed.
+A resolution for this issue has been reached. This issue should immediately be Closed.
Closed
No further action is necessary for this issue.
@@ -15002,7 +15365,10 @@
Trivial
A trivial issue is something that either affects an insignificant number of Asterisk users, or is a minimally invasive change that does not affect functionality.
-Text
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Text
A text issue is typically something like a spelling fix, a clarifying of a debugging or verbose message, or changes to documentation.
Tweak
@@ -15019,9 +15385,7 @@
An issue marked as a Crash is something that would cause Asterisk to be unusable for a majority of Asterisk users and is an issue that causes a deadlock or crash of the Asterisk process.
Block
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-A blocking issue is an issue that must be resolved before the next release of Asterisk as would affect a significant number of Asterisk users, or could be a highly visible regression. A severity of block should only be set by Asterisk bug marshals at their discretion. ** USERS SHOULD NOT FILE ISSUES WITH A SEVERITY OF BLOCK **
+A blocking issue is an issue that must be resolved before the next release of Asterisk as would affect a significant number of Asterisk users, or could be a highly visible regression. A severity of block should only be set by Asterisk bug marshals at their discretion. ** USERS SHOULD NOT FILE ISSUES WITH A SEVERITY OF BLOCK **
Priority Levels
Currently, the following priority levels are listed on the issue tracker:
@@ -15029,7 +15393,11 @@
However, at this time they are not utilized and all new issue should have a priority of 'Normal'.
Notes
-1. Using the "Need Triage" filter is useful for finding these issues quickly. 2. The issue tracker now has the ability to monitor the commits list, and if the commit message contains something like, "(Closes issue #9999)", the bug will be automatically closed. See http://www.asterisk.org/doxygen/trunk/CommitMessages.html for more information on commit messages.
+1. Using the "Need Triage" filter is useful for finding these issues quickly. 2. The issue tracker now has the ability to monitor the commits list, and if the commit message contains something like, "(Closes issue
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+2. #9999)", the bug will be automatically closed. See http://www.asterisk.org/doxygen/trunk/CommitMessages.html for more information on commit messages.
Release Branch Commit Policy
@@ -15039,17 +15407,20 @@
Mantis and Reviewboard are both utilities that the Asterisk development community uses to help track and review code being written for Asterisk. Since both systems are used for posting patches, it is worth discussing when it is appropriate to use reviewboard and when not. Here are the situations in which it is appropriate to post code to reviewboard:
A committer has a patch that they would like to get some feedback on before merging into one of the main branches. A committer or bug marshal has requested a contributor to post their patch from Mantis on reviewboard to aid in the review process. This typically happens with complex code contributions where reviewboard can help aid in providing feedback.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-We do encourage all interested parties to participate in the review process. However, aside from the cases mentioned above, we prefer that all code submissions first go through Mantis.
+We do encourage all interested parties to participate in the review process. However, aside from the cases mentioned above, we prefer that all code submissions first go through Mantis.
It is acceptable for a committer to post patches to reviewboard before they are complete to get some feedback on the approach being taken. However, if the code is not yet ready to be merged, it must be documented as such. A review request with a patch proposed for merging should have documented testing and should not have blatant coding guidelines violations. Lack of these things is careless and shows disrespect for those reviewing your code.
Posting Code to Reviewboard
Using post-review
The easiest way to post a patch to reviewboard is by using the post-review tool. Install it using easy_install.
+If you do not already have easy_install, install the python-setuptools package.
+
+Essentially, post-review is a script that will take the output of "svn diff" and create a review
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Essentially, post-review is a script that will take the output of "svn diff" and create a review request out of it for you. So, once you have a working copy with the changes you expect in the output of "svn diff", you just run the following command:
+request out of it for you. So, once you have a working copy with the changes you expect in the output of "svn diff", you just run the following command:
If it complains about not knowing which reviewboard server to use, add the server option:
@@ -15064,9 +15435,7 @@
Now, it should work, and you can run "post-review" as usual.
Updating Patch on Existing Review Request
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-Most of the time, a patch on reviewboard will require multiple iterations before other sign off on it being ready to be merged. To update the diff for an existing review request, you can use post-review and the -r option. Apply the current version of the diff to a working copy as described above, and then run the following command:
+Most of the time, a patch on reviewboard will require multiple iterations before other sign off on it being ready to be merged. To update the diff for an existing review request, you can use post-review and the -r option. Apply the current version of the diff to a working copy as described above, and then run the following command:
]]>
Debugging
@@ -15074,7 +15443,10 @@
Collecting Debug Information for the Asterisk Issue Tracker
This document will provide instructions on how to collect debugging logs from an Asterisk machine, for the purpose of helping bug marshals troubleshoot an issue on https://issues.asterisk.org
-PREREQUISITES
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+PREREQUISITES
Asterisk 1.4.30 or greater.
STEPS
@@ -15092,10 +15464,7 @@
sip set debug on ]]>
SIP (1.4)
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-sip set debug ]]>
+sip set debug ]]>
IAX2 (1.6.0 or higher)
iax2 set debug on ]]>
@@ -15104,7 +15473,10 @@
iax2 set debug ]]>
3. Reproduce your issue. 4. Once finished, be sure to disable the extra debugging:
-core set verbose 0 *CLI> core set debug 0 ]]>
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+core set verbose 0 *CLI> core set debug 0 ]]>
4.1. Again, remember to disable any extra logging if you enabled it in the channel driver. SIP (1.4 or higher)
sip set debug off ]]>
@@ -15121,13 +15493,15 @@
Then reload the logger module like in step 2:
module reload logger ]]>
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+Getting a Backtrace This document is intended to provide information on how to obtain the backtraces required on the asterisk bug tracker, available at https://issues.asterisk.org.
+Overview Preparing Asterisk To Produce Core Files On Crash Getting Information After A Crash Getting Information For A Deadlock Verify Your Backtraces Uploading Your Information To The Issue Tracker
-Getting a Backtrace This document is intended to provide information on how to obtain the backtraces required on the asterisk bug tracker, available at https://issues.asterisk.org.
Overview
The backtrace information is required by developers to help fix problems with bugs of any kind. Backtraces provide information about what was wrong when a program crashed; in our case, Asterisk.
-Preparing Asterisk To Produce Core Files On Crash
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Preparing Asterisk To Produce Core Files On Crash
First of all, when you start Asterisk, you MUST start it with option -g. This tells Asterisk to produce a core file if it crashes. If you start Asterisk with the safe_asterisk script, it automatically starts using the option -g. If you're not sure if Asterisk is running with the -g option, type the following command in your shell:
# ps aux | grep asterisk root 17832 0.0 1.2 2348 /bin/sh /usr/sbin/safe_asterisk root 26686 0.0 2.8 15544 asterisk -vvvg -c [...]
@@ -15144,15 +15518,14 @@
Using BETTER_BACKTRACES As of Asterisk versions 1.4.40, 1.6.2.17, and 1.8.3, the option BETTER_BACKTRACES which uses libbfd, will provide better symbol information within both the Asterisk binary, as well as loaded modules, to assist when using inline backtraces to track down problems. It is recommended that you enable both DONT_OPTIMIZE and BETTER_BACKTRACES
-Running a production server with DONT_OPTIMIZE is generally safe. You'll notice the binary files may be a bit larger, but in terms of Asterisk performance, impact should be negligible. After Asterisk crashes, a file named "core" will be dumped in the present working directory of the Linux shell from which Asterisk was started.
-
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-
-In the event that there are multiple core files present, it is important to look at the file timestamps in order to determine which one you really intend to look at.
+Running a production server with DONT_OPTIMIZE is generally safe. You'll notice the binary files may be a bit larger, but in terms of Asterisk performance, impact should be negligible. After Asterisk crashes, a file named "core" will be dumped in the present working directory of the Linux shell from which Asterisk was started. In the event that there are multiple core files present, it is important to look at the file timestamps in order to determine which one you really intend to look at.
Getting Information After A Crash
There are two kind of backtraces (aka 'bt') which are useful: bt and bt full. Now that we've verified the core file has been written to disk, the final part is to extract 'bt' from the core file. Core files are pretty big, don't be scared, it's normal.
-Don't attach core files on the bug tracker as they are only useful on the machine they were generated on. We only need the output of the 'bt' and 'bt full.'
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+Don't attach core files on the bug tracker as they are only useful on the machine they were generated on. We only need the output of the 'bt' and 'bt full.'
For extraction, we use a really nice tool, called gdb. To verify that you have gdb installed on your system:
# gdb -v GNU gdb 6.8-debian Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu"... Type "show
@@ -15163,12 +15536,13 @@
# gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c core > /tmp/backtrace.txt
Now load the core file in gdb with the following command. This will also save the output of gdb to the /tmp/backtract.txt file.
+# gdb -se "asterisk" -c core | tee /tmp/backtrace.txt [...] (You would see a lot of output here.) [...] Reading symbols from /usr/lib/asterisk/modules/app_externalivr.so...done. Loaded symbols for /usr/lib/asterisk/modules/app_externalivr.so #0 0x29b45d7e in ?? () (gdb)
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+In order to make extracting the gdb output easier, you may wish to turn on logging using "set logging on". This command will save all output to the default file of gdb.txt, which in the end can
-# gdb -se "asterisk" -c core | tee /tmp/backtrace.txt [...] (You would see a lot of output here.) [...] Reading symbols from /usr/lib/asterisk/modules/app_externalivr.so...done. Loaded symbols for /usr/lib/asterisk/modules/app_externalivr.so #0 0x29b45d7e in ?? () (gdb)
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-In order to make extracting the gdb output easier, you may wish to turn on logging using "set logging on". This command will save all output to the default file of gdb.txt, which in the end can be uploaded as an attachment to the bug tracker. Now at the gdb prompt, type: bt You would see output similar to:
+be uploaded as an attachment to the bug tracker. Now at the gdb prompt, type: bt You would see output similar to:
(gdb) bt #0 0x29b45d7e in ?? () #1 0x08180bf8 in ?? () #2 0xbcdffa58 in ?? () #3 0x08180bf8 in ?? () #4 0xbcdffa60 in ?? () #5 0x08180bf8 in ?? () #6 0x180bf894 in ?? () #7 0x0bf80008 in ?? () #8 0x180b0818 in ?? () #9 0x08068008 in ast_stopstream (tmp=0x40758d38) at file.c:180 #10 0x000000a0 in ?? () #11 0x000000a0 in ?? () #12 0x00000000 in ?? () #13 0x407513c3 in confcall_careful_stream (conf=0x8180bf8, filename=0x8181de8 "DAHDI/pseudo-1324221520") at app_meetme.c:262 #14 0x40751332 in streamconfthread (args=0x8180bf8) at app_meetme.c:1965 #15 0xbcdffbe0 in ?? () #16 0x40028e51 in pthread_start_thread () from /lib/libpthread.so.0 #17 0x401ec92a in clone () from /lib/libc.so.6 (gdb)
The bt's output is the information that we need on the bug tracker. Now do a bt full as follows:
@@ -15425,7 +15799,9 @@
-- end printout --
Build System Architecture
-Build Architecture
+1. Build Architecture 2. Adding new modules 2.1. Modules with no dependencies 2.2. Modules with dependencies 2.2.1. configure.ac 2.2.2. build_tools/menuselect-deps.in 2.2.3. makeopts.in 2.2.4. Update your module
+
+1. Build Architecture
The asterisk build architecture relies on autoconf to detect the system configuration, and on a locally developed tool (menuselect) to select build options and modules list, and on gmake to do the build. The first step, usually to be done soon after a checkout, is running "./configure", which will store its findings in two files:
include/asterisk/autoconfig.h contains C macros, normally #define HAVE_FOO or HAVE_FOO_H , for all functions and headers that have been detected at build time. These are meant to be used by C or C++ source files. makeopts contains variables that can be used by Makefiles. In addition to the usual CC, LD, ... variables pointing to the various build tools, and prefix, includedir ... which are useful for generic compiler flags, there are variables for each package detected. These are normally of the form FOO_INCLUDE=... FOO_LIB=... FOO_DIR=... indicating, for each package, the useful libraries and header files.
@@ -15433,12 +15809,39 @@
The next step is to run "make menuselect", to extract the dependencies existing between files and modules, and to store build options. menuselect produces two files, both to be read by the Makefile:
menuselect.makeopts Contains for each subdirectory a list of modules that must be excluded from the build, plus some additional informatiom. menuselect.makedeps Contains, for each module, a list of packages it depends on. For each of these packages, we can collect the relevant INCLUDE and LIB files from makeopts. This file is based on information in the .c source code files for each module.
-The top level Makefile is in charge of setting up the build environment, creating header files with build options, and recursively invoking the subdir Makefiles to produce modules and the main executable. The sources are split in multiple directories, more or less divided by module type (apps/ channels/ funcs/ res/ ...) or by function, for the main binary (main/ pbx/). TO BE COMPLETED Coding Guidelines
-1. Introduction 2. Guidelines 2.1. General Rules 2.2. File structure and header inclusion 2.3. Declaration of functions and variables 2.4. Structure alignment and padding 2.5. Use the internal API 2.6. Code formatting 2.6.1. Functions: 2.6.2. If statements:
+The top level Makefile is in charge of setting up the build environment, creating header files with build options, and recursively invoking the subdir Makefiles to produce modules and the main executable. The sources are split in multiple directories, more or less divided by module type (apps/ channels/ funcs/ res/ ...) or by function, for the main binary (main/ pbx/).
+This section is not complete...
+
+2. Adding new modules
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-2.6.3. Case statements: 2.6.4. No nested statements without braces 2.7. Labels/goto are acceptable 2.8. Do not cast 'void *' 2.9. Function naming 2.10. Variable function argument parsing 2.11. Variable naming 2.11.1. Global variables 2.12. Don't use unnecessary typedef's 2.13. Use enums instead of #define where possible 2.14. String handling 2.15. String conversions 2.16. Use of functions 2.17. Handling of pointers and allocations 2.17.1. Use const on pointer arguments if possible 2.17.2. Do not create your own linked list code - reuse! 2.17.3. Allocations for structures 2.17.4. String Duplications 2.18. CLI Commands 2.19. New dialplan applications/functions 2.20. Doxygen API Documentation Guidelines 2.21. Finishing up before you submit your code 2.22. Creating new manager events?
+2.1. Modules with no dependencies
+
+If your module has no dependencies on external libraries, it can be dropped into the appropriate directory and the build system will automatically detect it and build it for you. For example, if you write app_custom.c, drop it in the apps/ directory.
+2.2. Modules with dependencies
+
+If your module has an external dependency, you have a bit more work to do to integrate it into the build system. First, you must determine whether the library you are using is used by any other Asterisk module. If not, you must add the library to the following files.
+2.2.1. configure.ac
+
+This is the source of the configure script. There are many examples to draw from in this file. Search for the two instances of ALSA in this file to find one of the simpler examples of checking for a library.
+2.2.2. build_tools/menuselect-deps.in
+
+Add a line in this file for your new library. The configure script uses this file as input and outputs build_tools/menuselect-deps. The menuselect utility reads in this file to know which libraries have been found on the system.
+2.2.3. makeopts.in
+
+Add LIBNAME_LIB and LIBNAME_INCLUDE lines into this file. The configure script will use this file as input and output the makeopts file. When this library is found, these lines will have the appropriate CFLAGS and LDFLAGS needed to build and link a module with the library. Follow the other examples that are already in this file for formatting.
+2.2.4. Update your module
+
+Modules that have a dependency must have a special comment block in them that is used by the build system.
+libname ***/ ]]>
+
+Coding Guidelines
+1. Introduction 2. Guidelines 2.1. General Rules 2.2. File structure and header inclusion 2.3. Declaration of functions and variables 2.4. Structure alignment and padding 2.5. Use the internal API 2.6. Code formatting 2.6.1. Functions: 2.6.2. If statements: 2.6.3. Case statements: 2.6.4. No nested statements without braces
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+
+2.7. Labels/goto are acceptable 2.8. Do not cast 'void *' 2.9. Function naming 2.10. Variable function argument parsing 2.11. Variable naming 2.11.1. Global variables 2.12. Don't use unnecessary typedef's 2.13. Use enums instead of #define where possible 2.14. String handling 2.15. String conversions 2.16. Use of functions 2.17. Handling of pointers and allocations 2.17.1. Use const on pointer arguments if possible 2.17.2. Do not create your own linked list code - reuse! 2.17.3. Allocations for structures 2.17.4. String Duplications 2.18. CLI Commands 2.19. New dialplan applications/functions 2.20. Doxygen API Documentation Guidelines 2.21. Finishing up before you submit your code 2.22. Creating new manager events?
1. Introduction
@@ -15449,11 +15852,11 @@
/usr/src/asterisk$ svn diff somefile.c someotherfile.c > mypatch
2. Guidelines
2.1. General Rules
-Indent code using tabs, not spaces. All code, filenames, function names and comments must be in ENGLISH.
+Indent code using tabs, not spaces. All code, filenames, function names and comments must be in ENGLISH. Don't annotate your changes with comments like "/* JMG 4/20/04 */"; Comments should explain what the code does, not when something
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Don't annotate your changes with comments like "/* JMG 4/20/04 */"; Comments should explain what the code does, not when something was changed or who changed it. If you have done a larger contribution, make sure that you are added to the CREDITS file. Don't make unnecessary whitespace changes throughout the code. If you make changes, submit them to the tracker as separate patches that only include whitespace and formatting changes. Don't use C++ type (//) comments. Try to match the existing formatting of the file you are working on. Use spaces instead of tabs when aligning in-line comments or #defines (this makes your comments aligned even if the code is viewed with another tabsize)
+was changed or who changed it. If you have done a larger contribution, make sure that you are added to the CREDITS file. Don't make unnecessary whitespace changes throughout the code. If you make changes, submit them to the tracker as separate patches that only include whitespace and formatting changes. Don't use C++ type (//) comments. Try to match the existing formatting of the file you are working on. Use spaces instead of tabs when aligning in-line comments or #defines (this makes your comments aligned even if the code is viewed with another tabsize)
2.2. File structure and header inclusion
@@ -15833,7 +16236,7 @@
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
P1 is the highest priority.
-Codecs (SILK, Opal), Media Negotiation (Digium) RTCP (Olle) Pinefrog; Work to be done - Ported to trunk, added to CEL Conferencing that supports a new magic media (Digium) higher sampling rates
+Codecs (SILK, OPUS), Media Negotiation (Digium) RTCP (Olle) Pinefrog; Work to be done - Ported to trunk, added to CEL Conferencing that supports a new magic media (Digium) higher sampling rates
3.3. (P2)
Async DNS (TCP DNS and use a good resolver) Named ACLs (deluxepine) SIP Security Events Light weight means of holding NAT open in SIP (less complex than current qualify, Consider it done) IPv6 for the restivus (IAX, Jabber/XMPP/Gtalk, Manager, etc.) ConfBridge feature complete with MeetMe Support sound file containers (matroska)
@@ -16400,7 +16803,7 @@
if T.38 negotiation succeeds (request can be accepted), gateway sends a T.38 negotiation success response, constructs T.38 session in FAX stack, feeds it negotiated parameters, and starts session; if this fails, gateway causes channel(s) to be hung up and reports appropriate errors while T.38 session is active, gateway receives T.38 media frames from called endpoint and passes them to FAX stack; gateway receives T.38 media frames from FAX stack and sends them to called endpoint. gateway also receives audio frames from calling endpoint and passes them to FAX stack, and receives audio frames from FAX stack and sends them to calling endpoint when T.38 session is complete, gateway sends T.38 negotiation request to revert to audio mode if audio mode reversion fails, gateway causes channel(s) to be hung up if audio mode reversion succeeds, gateway removes itself from audio path
Asterisk Developer Conference Call
-The Asterisk Weekly Developer Conference call is held every Thursday. Please note that this call staggers every other week to accommodate participation from other time zones. Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall The Asterisk Developer Conference Call can be accessed via the following methods: sip:100@devcon.asterisk.org SKYPE: devcall.digium pstn: 1.877.274.7510 Digium internal: 500003 Bridge: Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall Pin Code: Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall Please join us on IRC at #asterisk-dev during the call for real time communication and file sharing. The format for the call is: 00:00 - 05:00: Welcome & Announcements 05:00 - 20:00: Old Business 20:00 - 40:00: New Business 40:00 - 60:00: Open Floor All participants are muted by default and should press "*" to access the conference menu followed by "1" to unmute in order to speak.
+The Asterisk Developer Conference call is held every other Thursday. Please note that this call staggers every other instance to accommodate participation from other time zones. Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall The Asterisk Developer Conference Call can be accessed via the following methods: sip:100@devcon.asterisk.org SKYPE: devcall.digium pstn: 1.877.274.7510 Digium internal: 500003 Bridge: Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall Pin Code: Shared calendar URL: http://devcon.digium.com/calendar/AsteriskDevCall Please join us on IRC at #asterisk-dev during the call for real time communication and file sharing. The format for the call is: 00:00 - 05:00: Welcome & Announcements 05:00 - 20:00: Old Business 20:00 - 40:00: New Business 40:00 - 60:00: Open Floor All participants are muted by default and should press "*" to access the conference menu followed by "1" to unmute in order to speak.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
@@ -16448,40 +16851,56 @@
Open Floor
Malcolm gives abbreviated update on 1.10 media handling overhaul and availability of wideband conferencing. Encourages attendees to test it.
-Notes:
+Notes: Asterisk Developer Call - 03102011 - 1700 EST Digium Developer Conference Bridge: Bridge: 15071 PIN: 35806 Proposed Agenda: Welcome & Announcements: Bryan Johns / Russell Bryant / Leif Madsen
+Introduction of Digium participants Overview of developer call format and future sessions
-Asterisk Versions
-There are multiple supported feature frozen releases of Asterisk. Once a release series is made available, it is supported for some period of time. During this initial support period, releases include changes to fix bugs that have been reported. At some point, the release series will be deprecated and only maintained with fixes for security issues. Finally, the release will reach an End of Life, where it will no longer receive changes of any kind. The type of release defines how long it will be supported. A Long Term Support (LTS) release will be fully supported for 4 years, with one additional year of maintenance for security fixes. Standard releases are supported for a shorter period of time, which will be at least one year of full support and an additional year of maintenance for security fixes. The following table shows the release time lines for all releases of Asterisk, including those that have reached End of Life.
-Release Series 1.2.X 1.4.X 1.6.0.X 1.6.1.X 1.6.2.X 1.8.X LTS Standard Standard Standard LTS Release Type Release Date 2005-11-21 2006-12-23 2008-10-01 2009-04-27 2009-12-18 2010-10-21 Security Fix Only 2007-08-07 2011-04-21 2010-05-01 2010-05-01 2011-04-21 2014-10-21 EOL 2010-11-21 2012-04-21 2010-10-01 2011-04-27 2012-04-21 2015-10-21
+Old Business:
+Media handling revision update
-New releases of Asterisk will be made roughly once a year. Releases marked as LTS releases will be much less frequent. Within a given release series that is fully supported, bug fix updates are provided roughly every 4 weeks. For a release series that is receiving only maintenance for security fixes, updates are made on an as needed basis.
+New Business:
+Discussion of developer call purpose Discussion of developer call frequency Call for future conference call topics
+
+Open Floor Notes:
+
+Asterisk Versions
+There are multiple supported feature frozen releases of Asterisk. Once a release series is made available, it is supported for some period of time. During this initial support period, releases
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-If you're not sure which one to use, choose either the latest release for the most up to date features, or the latest LTS release for a platform that may have less features, but will usually be around longer.
+include changes to fix bugs that have been reported. At some point, the release series will be deprecated and only maintained with fixes for security issues. Finally, the release will reach an End of Life, where it will no longer receive changes of any kind. The type of release defines how long it will be supported. A Long Term Support (LTS) release will be fully supported for 4 years, with one additional year of maintenance for security fixes. Standard releases are supported for a shorter period of time, which will be at least one year of full support and an additional year of maintenance for security fixes. The following table shows the release time lines for all releases of Asterisk, including those that have reached End of Life.
+Release Series 1.2.X 1.4.X 1.6.0.X 1.6.1.X 1.6.2.X 1.8.X LTS Standard Standard Standard LTS Release Type Release Date 2005-11-21 2006-12-23 2008-10-01 2009-04-27 2009-12-18 2010-10-21 Security Fix Only 2007-08-07 2011-04-21 2010-05-01 2010-05-01 2011-04-21 2014-10-21 EOL 2010-11-21 2012-04-21 2010-10-01 2011-04-27 2012-04-21 2015-10-21
+
+New releases of Asterisk will be made roughly once a year. Releases marked as LTS releases will be much less frequent. Within a given release series that is fully supported, bug fix updates are provided roughly every 4 weeks. For a release series that is receiving only maintenance for security fixes, updates are made on an as needed basis. If you're not sure which one to use, choose either the latest release for the most up to date features, or the latest LTS release for a platform that may have less features, but will usually be around longer. The schedule for Asterisk releases is visualized below (which is subject to change at any time):
FOSDEM 2011 Open Source Telephony Devroom
-Overview An Open Source Telephony Devroom has been organized at FOSDEM 2011 in Brussels on Sunday, February 6th, 2011. We will be holding a day full of presentations on development topics in the area of open source telephony. 30 minute presentations will be made from 09:00 until 17:00. We have been assigned room AW1.124 - provided with a projector, WiFi, and 59 seats. Proposals have already been submitted and accepted. The following schedule will be observed. Please direct discussion about this devroom to the telephony-devroom mailing list hosted on http://lists.fosdem.org/. If you would like to contact the devroom organizer directly, please contact Russell Bryant <russell at digium.com>. Feel free to forward this along to any people or mailing lists that you think would be interested in this event. Schedule
-Time 09:00 09:15 09:45 09:55 10:00 10:30 10:40 10:45 11:15 11:25 11:30 12:00 12:10 12:15 12:45 12:55 13:00 13:30 13:40 Session Welcome to the Open Source Telephony Devroom Introduction to Asterisk Development Session Q&A Break Digital PSTN Connectivity with Asterisk Session Q&A Break Mobicents 2.0, The Open Source Java Communication Platform Session Q&A Break Scaling Location Services in Large SIP Networks with Kamailio Session Q&A Break Unifying SIP and Web Worlds with Lua Session Q&A Break XiVO IPPBX OpenHardware Session Q&A Break Xavier Carcelle Daniel-Constantin Meirla Henning Westerholt, Marius Zbihlei Jean Deruelle Jakub Klausa Speaker(s) Russell Bryant Russell Bryant
+Overview An Open Source Telephony Devroom has been organized at FOSDEM 2011 in Brussels on Sunday, February 6th, 2011. We will be holding a day full of presentations on development topics in the area of open source telephony. 30 minute presentations will be made from 09:00 until 17:00. We have been assigned room AW1.124 - provided with a projector, WiFi, and 59 seats.
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-13:45 14:15 14:25 14:30 15:00 15:10 15:15 15:45 15:55 16:00 16:30 16:40 17:00
+Proposals have already been submitted and accepted. The following schedule will be observed. Please direct discussion about this devroom to the telephony-devroom mailing list hosted on http://lists.fosdem.org/. If you would like to contact the devroom organizer directly, please contact Russell Bryant <russell at digium.com>. Feel free to forward this along to any people or mailing lists that you think would be interested in this event. Schedule
+Time 09:00 09:15 09:45 09:55 10:00 10:30 10:40 10:45 11:15 11:25 11:30 12:00 12:10 12:15 12:45 12:55 13:00 13:30 13:40 13:45 14:15 14:25 14:30 15:00 15:10 15:15 15:45 15:55 16:00 16:30 Session Welcome to the Open Source Telephony Devroom Introduction to Asterisk Development Session Q&A Break Digital PSTN Connectivity with Asterisk Session Q&A Break Mobicents 2.0, The Open Source Java Communication Platform Session Q&A Break Scaling Location Services in Large SIP Networks with Kamailio Session Q&A Break Unifying SIP and Web Worlds with Lua Session Q&A Break XiVO IPPBX OpenHardware Session Q&A Break SIP Communicator: Building a Multi-Protocol Multi-OS Communications Client Session Q&A Break Asterisk SCF Development Interfaces Session Q&A Break Developing rich VoIP Applications with SIPSIMPLE SDK Session Q&A Break Unified Communications - Future (Yate and YateClient) Session Q&A Diana Cionoiu Saúl Ibarra Corretgé Kevin P. Fleming Emil Ivov Xavier Carcelle Daniel-Constantin Meirla Henning Westerholt, Marius Zbihlei Jean Deruelle Jakub Klausa Speaker(s) Russell Bryant Russell Bryant
-SIP Communicator: Building a Multi-Protocol Multi-OS Communications Client Session Q&A Break Asterisk SCF Development Interfaces Session Q&A Break Developing rich VoIP Applications with SIPSIMPLE SDK Session Q&A Break Unified Communications - Future (Yate and YateClient) Session Q&A Concluding Remarks End
-
-Emil Ivov
-
-Kevin P. Fleming
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Saúl Ibarra Corretgé
+16:40 17:00
-Diana Cionoiu
+Concluding Remarks End
Location FOSDEM 2011 will take place at the ULB Campus Solbosch, Brussels, Belgium. Avenue Franklin D. Roosevelt, 50 1050 Bruxelles The Open Source Telephony Devroom will be in room 1.124 in building AW as shown on this map:
+Asterisk 1.10 Documentation
+Asterisk 1.10 is still in development. This is just a staging area for some documentation that is in
+
Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
-Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.
+progress and specific to Asterisk 1.10.
+
+Device State information for the CCSS generic agent.
+There are currently not many devices that have native support for CCSS. Even as the devices become available there may be other reasons why one may choose to not take advantage of the native abilities and stick with the generic implementation. The generic implementation is quite capable and could be greatly enhanced by adding device state capabilities. A phone could then subscribe to the device state with a BLF key in conjunction with Asterisk hints. The advantages of the device state information would allow a single button to: request CCSS, cancel a CCSS request, and display the current state of a CCSS request. For example, you may have a single button that when not lit, there is no active CCSS request. When you press that button, the dialplan can query the DEVICE_STATE() associated with that caller to determine whether they should be calling CallCompletionRequest() or CallCompletionCancel(). If there is currently a pending request, then the dialplan would cancel it. This also has the advantage of showing the true state of a request, which is an asynchronous call, even when CallCompletionRequest() thinks it was successful. The actual request could ultimately fail. Once lit, further feedback can be provided to the caller about the current state of their request since it will be updated by the CCSS State Machine as appropriate. The DEVICE_STATE mapping is configurable since the BLF being used on a given phone type may vary. The idea is to allow some level of customization as to the phone's behavior. As an example, you may want the BLF key to go solid once you have requested a callback. You may then want the LED to blink (typically ringing) when either the callback is in process, which is a visual indication that the incoming call is the desired callback. You may want it to blink when the callee is ready but you are busy, giving you a visual indication that the target is available as you may want to get off the line so that the callback can be successful. Device state information is sent back via the ast_devstate_prov_add() callback for any generic CCSS device as it traverses through the state machine. You simply provide a map between CC_STATE values and the corresponding AST_DEVICE state values. You could then generate hints against these states similar to what is possible today with Custom Devstates or MeetMe states. For example, you may have an extension 3000 that is currently associated with device SIP/3000. You could then create a feature code for that extension that may look something like:
+exten => *823000,hint,ccss:sip/3000
+
+You would then subscribe a BLF button to *823000 which would point to the dialplan that handled CCSS requests/cancels using the available DEVICE_STATE() information about ccss:sip/3000 to make the decision about what to do.
+
+Content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.

\ No newline at end of file
|