<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 17, 2017 at 3:40 PM, Kirill Katsnelson <span dir="ltr"><<a href="mailto:kkm@smartaction.com" target="_blank">kkm@smartaction.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5">On 170117 1232, Richard Mudgett wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
On Tue, Jan 17, 2017 at 2:03 PM, Kirill Katsnelson <<a href="mailto:kkm@smartaction.com" target="_blank">kkm@smartaction.com</a>><br>
wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
A change from 1.8 to 13 broke us in some other aspect, and I am trying to<br>
figure out whether this is a bug or things work as expected. In short, the<br>
'-' character is converted to nothing in extension "numbers"<br>
<br>
Here's a snippet that demonstrates the problem:<br>
<br>
extension.ael:<br>
<br>
context test {<br>
  foobar =>  Hangup();<br>
  foo-bar => Play(foo-bar);<br>
}<br>
<br>
*CLI> ael reload<br>
[2017-01-17 11:45:47.688] WARNING[57864]: pbx.c:6987 add_priority: Unable<br>
to register extension 'foo-bar' priority 1 in 'test', already in use by<br>
aliased extension 'foobar'<br>
*CLI> dialplan show test<br>
[ Context 'test' created by 'pbx_ael' ]<br>
  'foobar' =>       1. Hangup()                                   [pbx_ael]<br>
<br>
-= 1 extension (1 priority) in 1 context. =-<br>
<br>
"dialplan debug" shows the '-' is not in the trie trace at all.<br>
<br>
In 1.8, ael reloads completes without a warning, and<br>
<br>
*CLI> dialplan show test<br>
[ Context 'test' created by 'pbx_ael' ]<br>
  'foo-bar' =>      1. Play(foo-bar)                              [pbx_ael]<br>
  'foobar' =>       1. Hangup()                                   [pbx_ael]<br>
<br>
-= 2 extensions (2 priorities) in 1 context. =-<br>
<br>
Was the change intentional? Will you accept a patch that reintroduces the<br>
old behavior (with an option perhaps?). The '-' is so deeply embedded into<br>
all our Asterisk infrastructure (autogenerated files, AMI controllers etc.)<br>
that it is not realistic at this point to attempt to change the separator<br>
character.<br>
<br>
</blockquote>
<br>
The '-' dash has always been eye-candy and means nothing when matching<br>
extensions.<br>
Otherwise you would not be able to dial something like 18005551212 if you<br>
had this as an exten:<br>
<br>
exten = 1-800-555-1212,1,NoOp()<br>
same = n,Playback(tt-weasels)<br>
same = n,Hangup()<br>
<br>
Inconsistencies in the treatment of '-' were intentionally removed so<br>
extensions will always match.<br>
</blockquote>
<br></div></div>
Thanks, interesting. It worked for us somehow, but possibly for a wrong reason then!<br>
<br>
I see where the change is coming from: <a href="https://github.com/asterisk/asterisk/commit/7f0bfe536fdf3856dfbaf7303f5af28dad88e78e" rel="noreferrer" target="_blank">https://github.com/asterisk/as<wbr>terisk/commit/7f0bfe536fdf3856<wbr>dfbaf7303f5af28dad88e78e</a>; ASTERISK-19205 really highlights a lot of past inconsistencies. So it's a good thing it was fixed, only a bad thing is that broke our code...<br>
<br>
Is it documented anywhere what characters are considered legal in an extension name, and what are reserved? Perhaps we should bite the bullet and replace the separating symbol with something else; wondering what characters would be safe then.</blockquote><div><br></div><div>I don't think there is an explicit list of what characters are reserved.<br><br>You could use '_' underbar instead of '-' dash except as the first character where<br>it indicates the extension is a pattern [1].  It depends upon if your extensions<br></div><div>normally are numeric or alpha-numeric.<br></div><div><br></div><div>exten = foo_bar,1,NoOp()<br></div><div>exten = bar_none,1,NoOp()<br><br></div><div>Beware of alpha-numeric extension names in a pattern:<br><br></div><div>exten =_bar_none,1,NoOp()<br><br></div><div>The above extension does not match what you may think because<br></div><div>of the two n's in the extension.  The 'n' represents a character set<br></div><div>of '2' through '9'.  See [1].  If you really want the n's in the extension<br></div><div>you have to do this:<br><br></div><div>exten = _bar_[n]o[n]e,1,NoOp()<br></div><div><br></div><div>Richard<br></div></div><br>[1] <a href="https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching">https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching</a><br>[2] <a href="https://wiki.asterisk.org/wiki/display/AST/Contexts%2C+Extensions%2C+and+Priorities">https://wiki.asterisk.org/wiki/display/AST/Contexts%2C+Extensions%2C+and+Priorities</a><br></div></div>