[asterisk-users] What don't I get about SIP?

John Marvin jm-asterisk at themarvins.org
Sat Sep 9 01:31:16 MST 2006


Mike wrote:
> Here it is:
> 
> 
>  <dialplan dialplan.impossibleMatchHandling="1"
> dialplan.removeEndOfDial="1">
>       <digitmap dialplan.digitmap="[7]xx|[9]xxxxxxxxxxT|[9][1]xxxxxxxxxxT"
> dialplan.digitmap.timeOut="3"/> 
> 
> When I dial 845, I get fast busy.  When I dial 9-555-555-5555, it dials
> without the need to press send.  All good result.

Actually, as soon as you hit 8 you will get the fast busy.

Is that your full dialplan? What about an emergency (911) or other N11 
calls? What about direct dial international calls (011...)?

> 
> When I dial 9-555-5 and wait, nothing happens....

So, it looks like what you want is a global dialing timeout in the 
phone, which the Polycom phones don't appear to have once you break 
dialtone. But you may be able to kluge the digit timeout to give you 
that feature if you don't need it for what it is meant for. Right now 
you are using it to timeout when a digit other than 1 is pressed after 
the 9. That isn't really necessary (unless 91 followed by 9 digits is 
actually a valid number for whatever you are doing with it). Also, you 
are using the brackets unecessarily, since you only have one digit 
within them. An equivalent dialplan that doesn't use the digit timeout 
feature would be:

<digitmap dialplan.digitmap="7xx|9[2-9]xxxxxxxxx|91xxxxxxxxxx"

The digit timeout feature is typically used for direct dial 
international calls and calling the operator. If you don't need either 
of those then you could do something like this:

<digitmap dialplan.digitmap='7xx|9[2-9]xxxxxxxxx|91xxxxxxxxxx|[79]x.T"
dialplan.digitmap.timeOut="15"/>

which would timeout and send whatever sequence you had pressed after 15 
seconds if you hadn't already matched one of the other patterns.

Note that asterisk may possibly respond with error code 484 if the 
sequence pressed isn't complete, which would make the phone continue to 
ask for more digits. So, the other part of the solution is to add:

exten => _X.,1,Congestion()

to extensions.conf in the context you are using for your polycom phone(s).

That will match anything that doesn't match one of your valid extensions 
as long as it is two digits or more. So you still will get the behaviour 
you don't like if someone just presses 7 or 9 and nothing else. But it 
will give you most of what you want, assuming I understand what you are 
looking for in the first place (you could try x.T in the digitmap and _. 
in extensions.conf, but _. is likely to cause other problems).

Note: When the Polycom gets the congestion response from Asterisk it 
plays the congestion tone for only about 3-4 seconds, and then hangs up, 
which is different behaviour from when you press an 8 for instance. If 
you want the behaviours to be similar you could do something like this:

exten => _X.,1,Answer()
exten => _X.,2,Playtones(congestion)
exten => _X.,3,Wait(30)
exten => _X.,4,Hangup()

John


More information about the asterisk-users mailing list