Blind/Assisted Transfer

I’ve asked this before, but no answer. Hopefully this time, someone would help. I am having issue where when I initiate the transfer sequence by pressing the “#1” or “*2”, asterisk server would only collect the first digit I dial and proceed to jump to the context.

I don’t see any place in the features.conf where you can set max digit collect. So why it stop collecting digits only after the 1st digit?

This must be something simple I am overlooking, but I can not find answer anywhere.

Again, Thank you for whoever help me on this.


You are probably not getting an answer because you aren’t providing enough infomration to allow anyone to work out what you are doing wrong.

Well, not sure what information you need, but everything is pretty much default in the features.conf file. In the extensions.conf file I only have 1 line:
exten => _X!,n,Dial(SIP/OSIPOB/12135551212,60,tT)

the “12135551212” just a fake number I put in for this question purpose.

So is fairly simple, any call hit this context will get sent to ‘2135551212’.

And once the call connect, I initiate the transfer by dialing either “*2” or “#1”, I would get:

  1. a lady voice prompt, “please enter the number blah blah”
  2. I hit a digit.
  3. Call gets sent to from-sip context as soon as it gets the first digit.

I would expect asterisk server get more then 1 digit and then have a timer that it runs out before it sent the call to another context (or maybe by pressing the # sign to end).

Let me know if you guys (or anyone would like to help me) need more information.


Here are some thoughts…

-Be careful of the # symbol. This will work as the feature access code, but it is a special character when collecting digits that means “I am done dialing digits”. That is hard-coded in the executable (features.c)
-Some of the features support progressive dialing, so they calculate contexts as you dial digits (rather than wait for a specific number or a timeout). I would need to dig around some code to figure out if this is your exact case.

you also might want to define TRANSFER_CONTEXT to make sure all transfers start from a known context.

! does that. That pattern means that a one digit number is complete. You must use ., or have enough Xs to match the full number, if you don’t want that behaviour.

David55, you are great! It works! Wow, still don’t understand why ! would do this, because according to doc, it says that ! match zero or more and “.” match 1 or more, so I would think _X! means asterisk server is looking for just 1 digit (like you said) because of the X, but _X. would mean that is looking for 2 digits or more, yet it does not chop me off at 2 digits and let me enter all digits. But _X! would chop you off at 1 digits? (and if _X! chop you off at 1 digit, I would think _X. chop you off at 2 digit, but it doesn’t)

anyhow, it works, and I think you very much!


The fuller documentation says zero or more AND match immediately.