<br><br><div class="gmail_quote">On Wed, Feb 2, 2011 at 4:06 AM, Kirill Katsnelson <span dir="ltr">&lt;<a href="mailto:kkm@adaptiveai.com">kkm@adaptiveai.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
AEL does not offer this feature of .conf scripts.<br>
<br>
Practical example. We are using many customer &quot;applications&quot;. An application name is also a queue name, among a few other things. Also, there is an optional per-customer set-up macro, invoked like this:<br>
<br>
    if (${DIALPLAN_EXISTS(&quot;setup-${CUSTAPP}&quot;,s,1)}) {<br>
      GoSub(setup-${CUSTAPP},s,1);<br>
    }<br>
<br>
Now, GoSub() causes a warning when compiling AEL file. Something we could live up to now. But the use of `s&#39; here is relying on undocumented behavior of AEL.<br>
<br>
So, between 1.8.1.1 and 1.8.3.rc2 it changed. Macros are no longer using the `s&#39; extension as their entry point, rather `~~s~~&#39;. That seems like a completely internal affair between AEL compiler and the dialplan, but thinking along these lines means there is no such an optional gosub feature in AEL at all.<br>

<br>
Or I can test for both `s&#39; and `~~s~~&#39; in the script, to maintain the hack compatible both with 1.8.1 and 1.8.3, but obviously I do not like that either.<br>
<br>
There should be a clean and documented way of doing exactly that. Going AEL should not mean self-limiting to fewer features of Asterisk.<br></blockquote><div><br>In the beginning, we implemented macros with macros. But, there is a limit of about 7 levels, and then you crash. So I changed AEL to<br>
implement macros with gosubs instead. Now you can use recursion to your heart&#39;s content. My advise: don&#39;t mix AEL macro calls with gosubs.<br>Really, there should be little to no need. It&#39;ll only complicate things. Need to use routines in extensions.conf? Take a few minutes and rewrite them into AEL.<br>
<br>If you need to do some real low-level tweaks in extensions.conf, then mimic the conventions of AEL there. (Look at the code AEL generates for macros as an example).<br><br> Best of luck!<br><br>murf<br><br></div></div>
<br>-- <br><div><span style="font-size: 13.3px; font-family: Verdana,Arial,Helvetica,sans-serif;"><div style="margin: 0pt 0pt 8px;"><p style="margin: 0pt;"><span style="font-family: comic sans ms,sans-serif; font-size: medium;">Steve Murphy</span></p>

<p style="margin: 0pt;"><span style="font-family: comic sans ms,sans-serif; font-size: medium;">ParseTree Corporation<br></span></p>
<p style="margin: 0pt;">57 Lane 17</p>
<p style="margin: 0pt;">Cody, WY 82414</p><br>
</div></span></div>