I've been doing some debugging on this and I think it's a code problem.
I'm by no means an expert on Asterisk or how it is written or implemented, but the following patch to app_voicemail.c fixes the issue. With this code change, Asterisk correctly transfers to the 'a' and 'o' extensions as I'd expect them to.
As I said, I'm not an expert, so I would strongly recommend against committing this as-is... someone please interpret why this works and fix the root problem (or help me understand why this works so I can fix the root problem).
Index: app_voicemail.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v
retrieving revision 1.119
diff -C3 -r1.119 app_voicemail.c
*** app_voicemail.c 26 Jun 2004 16:06:19 -0000 1.119
--- app_voicemail.c 28 Jun 2004 17:58:17 -0000
***************
*** 1727,1735 ****
make_dir(dir, sizeof(dir), vmu->context, ext, "INBOX");
if (mkdir(dir, 0700) && (errno != EEXIST))
ast_log(LOG_WARNING, "mkdir '%s' failed: %s\n", dir, strerror(errno));
! if (ast_exists_extension(chan, strlen(chan->macrocontext) ? chan->macrocontext : chan->context, "o", 1, chan->callerid))
strcat(ecodes, "0");
! if (ast_exists_extension(chan, strlen(chan->macrocontext) ? chan->macrocontext : chan->context, "a", 1, chan->callerid))
strcat(ecodes, "*");
/* Play the beginning intro if desired */
if (!ast_strlen_zero(prefile)) {
--- 1727,1735 ----
make_dir(dir, sizeof(dir), vmu->context, ext, "INBOX");
if (mkdir(dir, 0700) && (errno != EEXIST))
ast_log(LOG_WARNING, "mkdir '%s' failed: %s\n", dir, strerror(errno));
! if (ast_exists_extension(chan, chan->context, "o", 1, chan->callerid))
strcat(ecodes, "0");
! if (ast_exists_extension(chan, chan->context, "a", 1, chan->callerid))
strcat(ecodes, "*");
/* Play the beginning intro if desired */
if (!ast_strlen_zero(prefile)) {
***************
*** 1768,1775 ****
strncpy(chan->exten, "a", sizeof(chan->exten) - 1);
if (!ast_strlen_zero(vmu->exit)) {
strncpy(chan->context, vmu->exit, sizeof(chan->context) - 1);
- } else if (!ast_strlen_zero(chan->macrocontext)) {
- strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1);
}
chan->priority = 0;
free_user(vmu);
--- 1768,1773 ----
On Jun 26, 2004, at 8:52 PM, Chad Scott wrote:
I've been banging my head on a brick wall for about an hour now trying to understand why the following doesn't work (which is even provided as an example in the distribution!).
The goal is to create a voicemail-only extension not associated with a phone. I'd rather not have an extension dedicated to VoicemailMain(), so I would like the user to be able to hit '*' during the introductory message and be prompted for a password.
For whatever reason, this doesn't work as expected. The first section, macro-stdexten, is what is provided in the distribution. It defines exten => a,1,VoicemailMain(${ARG1}), which should match the return extension from Voicemail() if the user presses '*'. Neither this nor my "vmonly" macro do this properly. The '*' key instead does nothing.
Am I not understanding macros properly?
Thanks, Chad
[macro-stdexten];
;
; Standard extension macro:
; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
; ${ARG2} - Device(s) to ring
;
exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum
exten => s,2,Goto(s-${DIALSTATUS}) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${ARG1}) ; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(b${ARG1}) ; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
exten => s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain
[macro-vmonly] exten => s,1,Voicemail(${ARG1}) exten => s,2,Hangup
exten => a,1,VoicemailMain(${ARG1})
_______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
_______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
