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










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 16th, 2015, 10:59 p.m. UTC, <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/4379/diff/2/?file=71363#file71363line1" style="color: black; font-weight: bold; text-decoration: underline;">/branches/13/configs/examples/awesome/asterisk.conf</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </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">1</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">[directories](!)</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;">This isn't a template</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;">Yup. Oddly it is this way in the asterisk.conf.sample as well, and I'm not sure why.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 16th, 2015, 10:59 p.m. UTC, <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/4379/diff/2/?file=71363#file71363line2" style="color: black; font-weight: bold; text-decoration: underline;">/branches/13/configs/examples/awesome/asterisk.conf</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </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">2</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">astetcdir => /etc/asterisk</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;">So, this is where things get fun.

In extensions.conf, we've noted that under the hood, there is no semantic difference between '=' and '=>', even if previously, the nomenclature was to use '=>'.

The same is true here, as well as in modules.conf and elsewhere.

I'd prefer us to be consistent: either we should continue to use the existing nomenclature, where non-key/value pair settings use '=>' ("objects", as they used to be called) - or we should use '=' everywhere.</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;">Replaced all '=>' with '='.

I also made the spacing around '=' uniform across the files. Most settings used 'option = setting' rather than 'option=setting', so I changed them all to the former which also made things more readable.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 16th, 2015, 10:59 p.m. UTC, <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/4379/diff/2/?file=71364#file71364line40" style="color: black; font-weight: bold; text-decoration: underline;">/branches/13/configs/examples/awesome/extensions.conf</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </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">40</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">exten = dial_internal_exten,1,Verbose(1, "Entering internal dialing gosub - extension ${CALLERID(num)} is dialing ${ARG1}.")</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,Gotoif($[${DEVICE_STATE(PJSIP/${ARG1})} = BUSY]?dialed-BUSY,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,Dial(PJSIP/${ARG1}${INTERNAL_DIAL_OPT})</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">43</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">   same = n,Verbose(1, "DIALSTATUS is ${DIALSTATUS}")</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">44</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">   same = n,Goto(dialed-${DIALSTATUS},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;">I think the lining scheme in the extensions.conf is a little odd.

In some places, you clearly are lining things up based on the priority. Here, however, we're not - and we're a little off of the '=' sign as well.

Personally, I prefer lining things up based on the '=' or '=>', as that is consistent throughout the file, and the first line in any extension should almost always be an 'entry point'. That keeps things lined up:

exten => my_long_extension,1,NoOp()
 same => n,foo()
 same => n,bar()

exten => a_short_one,1,NoOp()
 same => n,invoke_something()
 same => n,do_something_else()

That being said, I'm also fine if we line things up based on priority - but I'd go for a consistent scheme and stick with it. (I do think lining things up on priority leads to a lot of leading white space, but that's just my laziness kicking in.)</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;">I prefer lining up on the priority, but I'm usually writing very short dialplans for testing issues.

I played with both and I agree with you here. I think lining up on the '=' will be better as this dialplan grows.</pre>
<br />




<p>- rnewton</p>


<br />
<p>On February 13th, 2015, 12:46 a.m. UTC, 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 Feb. 13, 2015, 12:46 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;">One of things discussed at the last AstriDevCon was better documentation (for everything!), but in particular, we mentioned needing some example configurations that pertain to a real-world scenario. That is, as opposed to the current "sample" files which are sort of all over the place at this point.

This patch proposes a basic and minimal configuration of Asterisk to satisfy the requirements for the first phase of Super Awesome Company's implementation of Asterisk.

I will submit four separate patches for the first phase, so that we don't have to review the entire thing all at once. This review is for the first patch.

Who is Super Awesome Company? See https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company

For the first patch, I am attempting to satisfy the below requirements. The patch does not include a new make target, as I believe Matt Jordan offered to handle that.

SAC requires:

    * PJSIP connectivity for all employee desk phones.
    * The ability for employees to call one another inside of the office.
    * Voicemail boxes for each of the employees.

"Basic" configuration

We want SAC to have a clean system. That means:

    * No 'autoload' in modules.conf. Explicitly load a basic configuration. If SAC doesn't need the module, don't load it.
    * Every module loaded should have a configuration file that is appropriate for it. This includes all the 'core' things that need configuration.

pjsip.conf

    * A PJSIP configuration for their desk phones. Assume every endpoint that is a phone has:
        * A voicemail mailbox that they can subscribe to
        * A hint for their device
        * Note that the PJSIP configuration should adhere to best practices. That means MAC addresses for device names, etc.

extensions.conf

    * A safe dialplan for intra-company communication. This should be templated out so that it is trivial to add additional devices (use pattern matching/pattern matching hints, etc.)
    * Receiving a Busy/Unavailable should result in going to VoiceMail
    * A user should be able to dial something and get to their VoiceMailMain without having to enter in their extension number 
    * Note that mapping of MAC address endpoints to extension numbers should be done in some fashion that is easily extensible.

voicemail.conf

    * Set up mailboxes for every person in SAC. Assign 'default' pins. Create reasonable basic settings.
    * Do not set up e-mail or pager addresses.


REVIEW?

Please, if possible look at this from a few angles:

 * Use the configuration, configure a couple phones and call between them. Leave voicemails and retrieve them.
 * Have I created any security issues?
 * Is my dialplan easy to understand?
 * Could anything be done more efficiently without making it over-complicated?
 * Have I over-complicated anything?
 * Are there any critical settings I'm missing from any of the files?

A couple, more specific questions:

 * We have sample configs in /configs/samples; what directory do we want these configurations in? (I used /configs/examples for now, but I don't really like it)
 * We have the make target "make samples" for the current samples; what do we want for these new configs?</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 Asterisk with configuration, connected up three phones using the first three users. Made calls between them all, left voicemails and retrieved them with all users. Verified MWI working with all phones.</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/examples/awesome/voicemail.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/pjsip.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/musiconhold.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/modules.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/logger.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/indications.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/extensions.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/asterisk.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/13/configs/examples/awesome/README <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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







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








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