| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | <!doctype html><title>CodeMirror: Asterisk dialplan mode</title><meta charset="utf-8"/><link rel=stylesheet href="../../doc/docs.css"><link rel="stylesheet" href="../../lib/codemirror.css"><script src="../../lib/codemirror.js"></script><script src="asterisk.js"></script><style>      .CodeMirror {border: 1px solid #999;}      .cm-s-default span.cm-arrow { color: red; }    </style><div id=nav>  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>  <ul>    <li><a href="../../index.html">Home</a>    <li><a href="../../doc/manual.html">Manual</a>    <li><a href="https://github.com/codemirror/codemirror">Code</a>  </ul>  <ul>    <li><a href="../index.html">Language modes</a>    <li><a class=active href="#">Asterisk dialplan</a>  </ul></div><article><h2>Asterisk dialplan mode</h2><form><textarea id="code" name="code">; extensions.conf - the Asterisk dial plan;[general];; If static is set to no, or omitted, then the pbx_config will rewrite; this file when extensions are modified.  Remember that all comments; made in the file will be lost when that happens.static=yes#include "/etc/asterisk/additional_general.conf[iaxprovider]switch => IAX2/user:[key]@myserver/mycontext[dynamic]#exec /usr/bin/dynamic-peers.pl[trunkint];; International long distance through trunk;exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})[local];; Master context for local, toll-free, and iaxtel calls only;ignorepat => 9include => default[demo]include => stdexten;; We start with what to do when a call first comes in.;exten => s,1,Wait(1)			; Wait a second, just for funsame  => n,Answer			; Answer the linesame  => n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 secondssame  => n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 secondssame  => n(restart),BackGround(demo-congrats)	; Play a congratulatory messagesame  => n(instruct),BackGround(demo-instruct)	; Play some instructionssame  => n,WaitExten			; Wait for an extension to be dialed.exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.exten => 2,n,Goto(s,instruct)exten => 3,1,Set(LANGUAGE()=fr)		; Set language to frenchexten => 3,n,Goto(s,restart)		; Start with the congratulationsexten => 1000,1,Goto(default,s,1);; We also create an example user, 1234, who is on the console and has; voicemail, etc.;exten => 1234,1,Playback(transfer,skip)		; "Please hold while..."					; (but skip if channel is not up)exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))exten => 1234,n,Goto(default,s,1)		; exited Voicemailexten => 1235,1,Voicemail(1234,u)		; Right to voicemailexten => 1236,1,Dial(Console/dsp)		; Ring foreverexten => 1236,n,Voicemail(1234,b)		; Unless busy;; # for when they're done with the demo;exten => #,1,Playback(demo-thanks)	; "Thanks for trying the demo"exten => #,n,Hangup			; Hang them up.;; A timeout and "invalid extension rule";exten => t,1,Goto(#,1)			; If they take too long, give upexten => i,1,Playback(invalid)		; "That's not valid, try again";; Create an extension, 500, for dialing the; Asterisk demo.;exten => 500,1,Playback(demo-abouttotry); Let them know what's going onexten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default)	; Call the Asterisk demoexten => 500,n,Playback(demo-nogo)	; Couldn't connect to the demo siteexten => 500,n,Goto(s,6)		; Return to the start over message.;; Create an extension, 600, for evaluating echo latency.;exten => 600,1,Playback(demo-echotest)	; Let them know what's going onexten => 600,n,Echo			; Do the echo testexten => 600,n,Playback(demo-echodone)	; Let them know it's overexten => 600,n,Goto(s,6)		; Start over;;	You can use the Macro Page to intercom a individual userexten => 76245,1,Macro(page,SIP/Grandstream1); or if your peernames are the same as extensionsexten => _7XXX,1,Macro(page,SIP/${EXTEN});;; System Wide Page at extension 7999;exten => 7999,1,Set(TIMEOUT(absolute)=60)exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d); Give voicemail at extension 8500;exten => 8500,1,VoicemailMainexten => 8500,n,Goto(s,6)    </textarea></form>    <script>      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {        mode: "text/x-asterisk",        matchBrackets: true,        lineNumber: true      });    </script>    <p><strong>MIME types defined:</strong> <code>text/x-asterisk</code>.</p>  </article>
 |