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










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On March 16th, 2015, 8:57 a.m. CDT, <b>Matt Jordan</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<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/4488/diff/1/?file=72117#file72117line36" style="color: black; font-weight: bold; text-decoration: underline;">/branches/13/configs/basic-pbx/extensions.conf</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

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



 
 

 <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">36</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">[Pre-Internal]</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">37</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">; Here we capture internal calls to do anything we need to do before sending</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">38</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">; them onto all the possible internal locations. Such as disabling CDR on</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">39</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">; internal to internal calls.</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">40</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">exten = _X.,1,NoOp()</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">41</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> same = n,Set(CDR_PROP(disable)=1)</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">42</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> same = n,Goto(Internal,${EXTEN},1)</pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Does this really need to be a separate context?

I'm all for having contexts break up logical groupings of subroutines, but the dialplan here feels like it is getting a bit out of control. Subroutines can already be named via an actual extension name - when you have 'catch alls' in the various contexts, that feels like a sign that things aren't being set up at the right granularity.

For example, this could just be in your [Internal] context:

[Internal]

exten = internal_setup,1,NoOp()
 same = n,Set(CDR_PROP(disable)=1)
 same = n,Return()


Instead of invoking this with an explicit Goto, use GoSub. That way it can be called from anywhere, and doesn't require a lot of Gotos to jump around. Generally, you should always prefer Goto over GoSub, unless you *really* want them to leave the context they are in.</pre>
 </blockquote>



 <p>On March 16th, 2015, 9:37 a.m. CDT, <b>Jonathan Rose</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;">Hmmm, the reason he did this was because he didn't want to add setup code to every extension in the [Internal] context. Using a gosub works here, but it will still require invoking the gosub on every extension and what he wanted to do was just automatically call this stuff on everything that goes into the Internal context.

Plus this way the CDR disabling stuff gets ran when an internal context calls into an extension that is just included by Internal.</pre>
 </blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Hm. That's a fair point.

I'd rename this slightly then: have the Pre-Internal be "Internal" - since it should be applied to all "internal" extensions - and place the actual internal extensions into some other context.</pre>
<br />




<p>- Matt</p>


<br />
<p>On March 13th, 2015, 9:32 a.m. CDT, rnewton 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.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By rnewton.</div>


<p style="color: grey;"><i>Updated March 13, 2015, 9:32 a.m.</i></p>









<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;">Howdy, here is another patch for the Super Awesome Company configuration. We are still in phase 1. The general requirements are posted on the wiki: https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company

The specific requirements this patch meets are below:

pjsip.conf

 * SIP ITSP configuration example and have place holders for the required authentication bits.
 ** Assume that Asterisk does not have a public IP address, and sits behind a NAT with its desk phones.
 * Have outbound registration to the SIP trunk, and an endpoint that represents the SIP trunk.
 * Inbound calls received from the SIP trunk should go into their own context.

extensions.conf

 * Match the outbound dial request so that it can only dial US area codes.
 ** Don't let people dial 900 numbers, international numbers, or any other numbers that could result in a charge
 * Inbound calls from the SIP trunk should hit a basic Auto Attendant that prompts them for the extension to dial, after greeting them to SAC.
 * If an inbound call matches a DID that maps to a specific extension/device, dial that extension/device directly.

Billing

 * Make sure CDRs output all calls that are from/to the SIP trunk. These should be logged to a CSV.
 * For intra-office calls, kill the CDRs.

Additional Requirements Noted:

 * For outbound calls, each SAC employee’s 10-digit DID number is provided as their Caller ID.
 * Voicemail may be accessed remotely by employees who dial 256-555-1234. When employees dial voicemail remotely, they must input both their mailbox number and their pin code.
 * 7, 10 and 10+1 digit dialing for local and long distance calls.
 * Internal dialing of otherwise inbound features, 
 ** 1100 to reach the main IVR.
 * The IVR options possible without getting into Phase 2.</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;">Setup with a Digium Cloud Services trunk and a few internal phones.
Internal to Internal calls.
Calls Internal to voicemail and other features.
External to internal DID calls.
External to internal feature calls.

Basically tried to call as many ways as I could through all the various features. Everything seemed to work.</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;">

 <li>/branches/13/configs/basic-pbx/pjsip.conf <span style="color: grey">(432866)</span></li>

 <li>/branches/13/configs/basic-pbx/modules.conf <span style="color: grey">(432866)</span></li>

 <li>/branches/13/configs/basic-pbx/logger.conf <span style="color: grey">(432866)</span></li>

 <li>/branches/13/configs/basic-pbx/extensions.conf <span style="color: grey">(432866)</span></li>

</ul>

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







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








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