I'm trying to use early-dial. Here, all hardware PBX have it. You dial numbers and, as soon as you have a matching dialplan entry, you get throught. I my Grandstream I enabled early-dial. And when I put exten=91,1,Milliwatt in my dialplan then it works as expected. Also, when I call other SIP or IAX phones it works. Hurray! But how can I get it working with external lines? In my test setup, I have a chan_capi (0.3.4a) based setup. Now we have the nice wiki and I found, at the end of http://www.voip-info.org/tiki-index.php?page=Asterisk+CAPI+readme that I could use exten=0,1,Dial,CAPI/829545:b When I do this and dial a 0, I hear the outside dialtone. Great. But when I now dial a normal number, it doesn't work. I have to dial an additional number, say 6. After this number, I still hear a dialtone. When I now continue dialling, the dial tone vanishes (as expected). So, to reach the local number 914115, I have to dial 0-6-914115. With a hardware PBX I have to dial 0-914115 And ideas? [general] nationalprefix=0 internationalprefix=00 rxgain=0.8 txgain=0.8 [interfaces] msn=829454 context=in-pstn incomingmsn=* controller=1 softdtmf=1 devices=2
Ok, this seems to be a bug in channel_sip.
When I do put all debug message AND I dial 0-0914115, then I only see:
$ grep DTMF /var/log/asterisk/messages
Jul 16 13:13:19 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:19 VERBOSE[6150]: * DTMF received: '9'
Jul 16 13:13:20 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:20 VERBOSE[6150]: * DTMF received: '1'
Jul 16 13:13:20 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:20 VERBOSE[6150]: * DTMF received: '4'
Jul 16 13:13:21 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:21 VERBOSE[6150]: * DTMF received: '1'
Jul 16 13:13:21 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:21 VERBOSE[6150]: * DTMF received: '1'
Jul 16 13:13:21 VERBOSE[6150]: Receiving DTMF!
Jul 16 13:13:21 VERBOSE[6150]: * DTMF received: '5'
So on "DTMF receiver: '0' is missing!
When I change phone & sip.conf to dtmfmode=audio, dial the same number and
grep again, then I see:
$ grep DTMF /var/log/asterisk/messages
Jul 16 15:26:20 VERBOSE[1024]: -- CAPI[contr1] supports DTMF
Jul 16 15:26:36 DEBUG[9225]: Detected DTMF '0'
Jul 16 15:26:38 DEBUG[9225]: Detected DTMF '9'
Jul 16 15:26:39 DEBUG[9225]: Detected DTMF '1'
Jul 16 15:26:40 DEBUG[9225]: Detected DTMF '5'
Jul 16 15:26:40 DEBUG[9225]: Detected DTMF '1'
Jul 16 15:26:41 DEBUG[9225]: Detected DTMF '1'
Jul 16 15:26:42 DEBUG[9225]: Detected DTMF '5'
Both "Receiving DTMF" and "Detected DTMF" are from
channel_sip.c.
Receiving DTMF:
handle_request() near line 7276
Detected DTMF:
sip_rtp_read() near line 2202
Now, the code around the handle_request looks like:
} else if (!strcasecmp(cmd, "INFO")) {
if (!ignore) {
if (debug)
ast_verbose("Receiving DTMF!\n");
receive_info(p, req);
} else { /* if ignoring, transmit response */
transmit_response(p, "200 OK", req);
}
So I guess something set ignore to TRUE.