<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/1778/">https://reviewboard.asterisk.org/r/1778/</a>
     </td>
    </tr>
   </table>
   <br />









<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/1778/diff/1/?file=25109#file25109line330" style="color: black; font-weight: bold; text-decoration: underline;">/trunk/funcs/func_frame_trigger.c</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">static void trigger_gosub_action(struct ast_channel *chan, struct ast_frame *frame, enum ast_framehook_event event, struct frame_trigger_data *framedata, const char* typeName)</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">330</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                         <span class="n">ast_exists_extension</span><span class="p">(</span><span class="n">chan</span><span class="p">,</span> <span class="n">triggergosub</span><span class="p">,</span> <span class="s">&quot;~~s~~&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">S_COR</span><span class="p">(</span><span class="n">chan</span><span class="o">-&gt;</span><span class="n">caller</span><span class="p">.</span><span class="n">id</span><span class="p">.</span><span class="n">number</span><span class="p">.</span><span class="n">valid</span><span class="p">,</span> <span class="n">chan</span><span class="o">-&gt;</span><span class="n">caller</span><span class="p">.</span><span class="n">id</span><span class="p">.</span><span class="n">number</span><span class="p">.</span><span class="n">str</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)))</span> <span class="p">{</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">331</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="n">extension</span> <span class="o">=</span> <span class="n">sintesizeExtension</span><span class="p">(</span><span class="o">&amp;</span><span class="n">extension</span><span class="p">,</span> <span class="s">&quot;~~s~~&quot;</span><span class="p">,</span> <span class="s">&quot;&quot;</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">You should not hardcode the &quot;~~s~~&quot; value, since this is an internal implementation detail of AEL2.  Instead, call AELSub (instead of Gosub) if you want to call a function built with AEL.  If you need a function that verifies an entry point in AEL, that function should be in the pbx_ael module, not here.</pre>
</div>
<br />

<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/1778/diff/1/?file=25109#file25109line348" style="color: black; font-weight: bold; text-decoration: underline;">/trunk/funcs/func_frame_trigger.c</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
   <td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">static void trigger_gosub_action(struct ast_channel *chan, struct ast_frame *frame, enum ast_framehook_event event, struct frame_trigger_data *framedata, const char* typeName)</pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">348</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                                <span class="n">ast_pbx_run_args</span><span class="p">(</span><span class="n">chan</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">No, it won&#39;t be fine.  This code appears to be snatched from the AGI GOSUB command within app_stack.c, but portions have been eliminated, with the problem that Josh noted.</pre>
</div>
<br />



<p>- Tilghman</p>


<br />
<p>On February 29th, 2012, 10:02 a.m., Marco Signorini wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Marco Signorini.</div>


<p style="color: grey;"><i>Updated Feb. 29, 2012, 10:02 a.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">A filter can be applied to the trigger to limit frames sensibility. This filter can either be a white or black list of control frame types. When no filter type is present, white is used. If no arguments are provided at all, all frames will trigger the specified gosub call.
If the specified gosub extension is not present on the dialplan, the function will gosub to the &quot;s-XXXX&quot; extension in the gosub context where XXXX is the type of the control frame.
It can be set only once on a given channel.

Examples:
exten =&gt; 1,1,Set(FRAME_TRIGGER(white, CONTROL_HOLD)=ext,context); trigger gosub ext-CONTROL_HOLD@context only for HOLD type control frames
exten =&gt; 1,1,Set(FRAME_TRIGGER(black, CONTROL_HOLD)=ext,context); trigger gosub ext-CONTROL_XXXX@context for all control type frames except for HOLD type control frames
exten =&gt; 1,1,Set(FRAME_TRIGGER(CONTROL_HOLD, CONTROL_UNHOLD)=context) ; trigger gosub to s-CONTROL_HOLD@context and s-CONTROL_UNHOLD context only for HOLD and UNHOLD type control frames

This feature was originally developed in order to track MOH events in a call center environment but has general interest.
</pre>
  </td>
 </tr>
</table>




<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-19319">ASTERISK-19319</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/trunk/funcs/func_frame_trigger.c <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/1778/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>