søn, 14,.01.2007 kl. 21.05 +0000, skrev Kevin Walsh:
> I would like to recommend the following patch to app_voicemail.c.
> 
> The patch defines a VMBOXEXISTSSTATUS channel variable, which will be
> set to SUCCESS or FAILED, depending upon whether the specified mailbox
> exists.
> 
> This replaces the previous functionality which would cause a jump to
> n+101 if the existence check failed.  A 'j' (jump) switch is provided
> for people who want to keep the previous behaviour.
> 
> Also, just as with Dial(), if "priorityjumping" is set to "yes" in the
> [general] section of extensions.conf then the previous behaviour will
> be enforced globally.
> 
> 
> Index: apps/app_voicemail.c
> ===================================================================
> --- apps/app_voicemail.c      (revision 2452)
> +++ apps/app_voicemail.c      (working copy)
> @@ -331,8 +331,15 @@
>  "Check if vmbox exists";
>  
>  static char *descrip_vm_box_exists =
> -"  MailboxExists([EMAIL PROTECTED]): Conditionally branches to priority 
> n+101\n"
> -"if the specified voice mailbox exists.\n";
> +"  MailboxExists([EMAIL PROTECTED]|options]): Check to see if the 
> specified\n"
> +"mailbox exists. If no voicemail context is specified, the 'default' 
> context\n"
> +"will be used.\n"
> +"  This application will set the following channel variable upon 
> completion:\n"
> +"    VMBOXEXISTSSTATUS - This will contain the status of the execution of 
> the\n"
> +"                        MailboxExists application. Possible values 
> include:\n"
> +"                        SUCCESS | FAILED\n\n"
> +"  Options:\n"
> +"    j - Jump to priority n+101 if the mailbox is found.\n";
>  
>  static char *synopsis_vmauthenticate =
>  "Authenticate off voicemail passwords";
> @@ -5537,7 +5544,13 @@
>       struct localuser *u;
>       struct opbx_vm_user svm;
>       char *context, *box;
> +     int priority_jump = 0;
>  
> +     OPBX_DECLARE_APP_ARGS(args,
> +             OPBX_APP_ARG(mbox);
> +             OPBX_APP_ARG(options);
> +     );
> +
>       if (opbx_strlen_zero(data)) {
>               opbx_log(LOG_ERROR, "MailboxExists requires an argument: 
> ([EMAIL PROTECTED])\n");
>               return -1;
> @@ -5552,15 +5565,23 @@
>               return -1;
>       }
>  
> +     OPBX_STANDARD_APP_ARGS(args, box);
> +
> +     if (args.options && strchr(args.options, 'j'))
> +             priority_jump = 1;
> +
>       if ((context = strchr(box, '@'))) {
>               *context = '\0';
>               context++;
>       }
>  
>       if (find_user(&svm, context, box)) {
> -             if (opbx_goto_if_exists(chan, chan->context, chan->exten, 
> chan->priority + 101)) 
> -                     opbx_log(LOG_WARNING, "VM box [EMAIL PROTECTED] exists, 
> but extension %s, priority %d doesn't exist\n", box, context, chan->exten, 
> chan->priority + 101);
> -     }
> +             pbx_builtin_setvar_helper(chan, "VMBOXEXISTSSTATUS", "SUCCESS");
> +             if (priority_jump || option_priority_jumping)
> +                     if (opbx_goto_if_exists(chan, chan->context, 
> chan->exten, chan->priority + 101)) 
> +                             opbx_log(LOG_WARNING, "VM box [EMAIL PROTECTED] 
> exists, but extension %s, priority %d doesn't exist\n", box, context, 
> chan->exten, chan->priority + 101);
> +     } else
> +             pbx_builtin_setvar_helper(chan, "VMBOXEXISTSSTATUS", "FAILED");
>       LOCAL_USER_REMOVE(u);
>       return 0;
>  }
> 

Sorry for the delay. Commited. Thank you.

_______________________________________________
Openpbx-dev mailing list
[email protected]
http://lists.openpbx.org/mailman/listinfo/openpbx-dev

Reply via email to