<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/2687/">https://reviewboard.asterisk.org/r/2687/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 5th, 2013, 9:27 a.m. CDT, <b>Matt Jordan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">(1) AST_CEL_BRIDGE_TO_CONF is raised when a 2-party bridge transitions to a multi-party bridge. Is there an event for when a multi-party bridge transitions to a 2-party bridge?

(2) In CEL Overview, I&#39;d be a bit more clear that, for each channel in Asterisk, CEL tracks the changes that occur to a channel. For a sequence of CEL events, there is always a Primary channel, and that events for a primary channel have an ordering. Unless otherwise specified, there is no explicit ordering between events on two primary channels.

Basically, for some channel that is the primary on a sequence of events, you&#39;re guaranteed that a CHAN_START happens before a CHAN_END; a CONF_START happens before a CONF_END; that a CHAN_END is the last event; etc. However, for two channels, you aren&#39;t guaranteed that channel 1&#39;s CONF_START will happen before or after channel 2&#39;s CONF_START.

(3) In your event descriptions, provide the guaranteed orderings. For example, when a linkedid is retired, can I expect AST_CEL_LINKEDID_END to occur after that channel&#39;s AST_CEL_CHAN_END?

(4) I think you need a better explanation of the bridge transitions in Interaction Records. If you go from a two-party to a multi-party, you *may* still get a AST_CEL_BRIDGE_END if the multi-party transitions back to a two-party and the Primary leaves the bridge when it is a two-party again. This is why I think we might want an analogous event for AST_CEL_BRIDGE_TO_CONF - if I&#39;m watching the events for a channel, it&#39;d be nice to know what event I can expect to get when the Primary leaves the bridge.

(5) This is weird:

{quote}
An AST_CEL_CONF_ENTER record is generated when a channel enters a multi-participant conference. The entering channel is the Primary for this event. An AST_CEL_CONF_ENTER record is not generated if the bridge is a two-participant bridge and the channel is the first, second, or third party to enter the bridge. See below for an example.
{quote}

If the bridge is going from 2-party to 3-party, I&#39;d expect the third person to not raise a 2-party bridge event. I understand that this reflects the Stasis messages and the order in which they come, but it&#39;s funky behavior from the perspective of someone trying to use CEL.

(6) How true is the 2-party/multi-party messages if you start with ConfBridge? Does a ConfBridge bridge start by raising 2-party messages and switch to multi-party messages as participants enter, or does it always raise multi-party messages?

(7) I&#39;m not sure I understand this:

{quote}
App-App Attended Transfers
Attended transfers involving only channels that are running applications are not currently possible.
{quote}

When would you ever do an attended transfer when none of the channels are in a bridge?

(8) You need to document the standard fields in a CEL event message.

(9) Structure your examples differently. I would use a two column approach:

* Channel takes some action       | * AST_CEL_EVENT_FOO
* Channel takes some other action | * AST_CEL_EVENT_BAR

(10) &quot;Two-Participant Bridge Inverted Exit&quot;  What is an &quot;inverted exit&quot;? That isn&#39;t a standard term that everyone would be familiar with.

(11) Multi-participant Conference Nominal

Here we have channels entering a bridge, and yet we never get any 2-party bridge events. That seems odd, based on your previous description of the events.

If a &quot;conference&quot;, that is, a multi-party bridge created by ConfBridge, does not ever raise 2-party bridge events, that needs to be documented. You should also document that MeetMe is no longer covered by CEL.

</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">(1) Even though the bridging system can transition back to a 2-party bridge, CEL continues to track bridges that have made the transition to a conference as a conference until they are destroyed because there is information conveyed in the bridge start and bridge end messages that can not be discerned from multiparty conferences. This is noted in the &quot;Bridge to Conference&quot; section with &quot;All further changes in this bridge will be conveyed via AST_CEL_CONF_ENTER and AST_CEL_CONF_EXIT.&quot;, but I&#39;ll make it more clear.

(2) Addressed.
(3) Addressed.
(4) See (1).
(5) If the third channel to join the 2-party bridge does not generate the BRIDGE_TO_CONF record, there is not currently a mechanism to allow a CEL user to track the transition as the bridge ID is not provided in the bridge start and bridge end records. An alternative would be to make the BRIDGE_TO_CONF record a strictly 2-party record with no mention of the third channel and then generate a CONF_ENTER record for the third channel.

(6) ConfBridge currently uses a multimix-only non-smart bridge, so all records generated by ConfBridge activities will be conference records (no 2-party records).

(7) It is possible for an external attended transfer to attempt to bridge the far sides of two channels which are not bridged. It is not currently possible for this to succeed.

(8) Addressed.
(9) In progress.
(10) Addressed.
(11) Bridges that can never be 2-party bridges do not generate 2-party records. Added mention of MeetMe not being covered.</pre>
<br />










<p>- opticron</p>


<br />
<p>On July 19th, 2013, 4:12 p.m. CDT, opticron wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/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 opticron.</div>


<p style="color: grey;"><i>Updated July 19, 2013, 4:12 p.m.</i></p>







<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-21567">ASTERISK-21567</a>


</div>



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


<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;">Like the CDR engine, the CEL engine has gone through quite a bit of rework due to the bridging changes in Asterisk 12 and its refactoring on top of the Stasis message bus.

Due to the Stasis refactoring, the CEL engine is now significantly more self-contained in Asterisk 12 than it was in Asterisk 11. All events except for user defined events (even these are delivered via Stasis) are now generated from the same Stasis messages that many other parts of Asterisk consume to monitor the state of channels, bridge, ongoing dial attempts, and other events.

Due to changes in the bridging system, AST_CEL_BRIDGE_UPDATE (masquerade related) has been removed and equivalent events are now indicated with conference change records, bridge change records, bridge to conference transition records, and local channel optimization records.

See the wiki article on this subject for more details:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+12+CEL+Specification</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </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;">The reworked CEL engine has many new unit tests located under /main/cel on the CLI.</pre>
  </td>
 </tr>
</table>


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

</ul>

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







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








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