Make playback of envelope a configurable option (bug #1683)
authorMark Spencer <markster@digium.com>
Thu, 20 May 2004 07:58:15 +0000 (07:58 +0000)
committerMark Spencer <markster@digium.com>
Thu, 20 May 2004 07:58:15 +0000 (07:58 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3027 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c
configs/voicemail.conf.sample

index 44b49f2..2dc608e 100755 (executable)
@@ -115,6 +115,7 @@ struct ast_vm_user {
        int saycid;
        int review;
        int operator;
        int saycid;
        int review;
        int operator;
+       int envelope;
        struct ast_vm_user *next;
 };
 
        struct ast_vm_user *next;
 };
 
@@ -227,6 +228,7 @@ static int maxlogins;
 static int reviewvm;
 static int calloper;
 static int saycidinfo;
 static int reviewvm;
 static int calloper;
 static int saycidinfo;
+static int hearenv;
 static char dialcontext[80];
 static char callcontext[80];
 
 static char dialcontext[80];
 static char callcontext[80];
 
@@ -254,6 +256,8 @@ static void populate_defaults(struct ast_vm_user *vmu)
                vmu->operator = 1;
        if (saycidinfo)
                vmu->saycid = 1;
                vmu->operator = 1;
        if (saycidinfo)
                vmu->saycid = 1;
+       if (hearenv)
+               vmu->envelope = 1;
        if (callcontext)
                strncpy(vmu->callback, callcontext, sizeof(vmu->callback) -1);
        if (dialcontext)
        if (callcontext)
                strncpy(vmu->callback, callcontext, sizeof(vmu->callback) -1);
        if (dialcontext)
@@ -294,6 +298,11 @@ static void apply_options(struct ast_vm_user *vmu, char *options)
                                        vmu->operator = 1;
                                else
                                        vmu->operator = 0;
                                        vmu->operator = 1;
                                else
                                        vmu->operator = 0;
+                       } else if (!strcasecmp(var, "envelope")){
+                               if(ast_true(value))
+                                       vmu->envelope = 1;
+                               else
+                                       vmu->envelope = 0;
                        } else if (!strcasecmp(var, "callback")) {
                                strncpy(vmu->callback, value, sizeof(vmu->callback) -1);
                        } else if (!strcasecmp(var, "dialout")) {
                        } else if (!strcasecmp(var, "callback")) {
                                strncpy(vmu->callback, value, sizeof(vmu->callback) -1);
                        } else if (!strcasecmp(var, "dialout")) {
@@ -2706,7 +2715,7 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc
        if(!strncasecmp("macro",context,5)) /* Macro names in contexts are useless for our needs */
                context = ast_variable_retrieve(msg_cfg, "message","macrocontext");
 
        if(!strncasecmp("macro",context,5)) /* Macro names in contexts are useless for our needs */
                context = ast_variable_retrieve(msg_cfg, "message","macrocontext");
 
-       if (!res)
+       if ((!res)&&(vmu->envelope))
                res = play_message_datetime(chan, vmu, origtime, filename);
 
        if ((!res)&&(vmu->saycid))
                res = play_message_datetime(chan, vmu, origtime, filename);
 
        if ((!res)&&(vmu->saycid))
@@ -3588,6 +3597,7 @@ static int load_config(void)
        char *astsaycid;
        char *astcallop;
        char *astreview;
        char *astsaycid;
        char *astcallop;
        char *astreview;
+       char *asthearenv;
        char *silencestr;
        char *thresholdstr;
        char *fmt;
        char *silencestr;
        char *thresholdstr;
        char *fmt;
@@ -3739,6 +3749,13 @@ static int load_config(void)
                        astsaycid = "no";
                } 
                saycidinfo = ast_true(astsaycid);
                        astsaycid = "no";
                } 
                saycidinfo = ast_true(astsaycid);
+
+               hearenv = 1;
+               if (!(asthearenv = ast_variable_retrieve(cfg, "general", "envelope"))) {
+                       ast_log(LOG_DEBUG,"ENVELOPE before msg enabled globally\n");
+                       asthearenv = "yes";
+               }
+               hearenv = ast_true(asthearenv); 
                
                if ((dialoutcxt = ast_variable_retrieve(cfg, "general", "dialout"))) {
                         strncpy(dialcontext, dialoutcxt, sizeof(dialcontext) - 1);
                
                if ((dialoutcxt = ast_variable_retrieve(cfg, "general", "dialout"))) {
                         strncpy(dialcontext, dialoutcxt, sizeof(dialcontext) - 1);
index 3e83c7d..8a26a65 100755 (executable)
@@ -90,24 +90,30 @@ central24=America/Chicago|'vm-received' q 'digits/at' H 'digits/hundred' M 'hour
 ; received, to the given mailbox. If pager is specified, a message will be sent there as well.
 ;
 ; Advanced options example is extension 4069
 ; received, to the given mailbox. If pager is specified, a message will be sent there as well.
 ;
 ; Advanced options example is extension 4069
-; NOTE: All options can be expressed globally in the general section, and overriden in the per-mailbox settings.
+; NOTE: All options can be expressed globally in the general section, and overriden in the per-mailbox 
+; settings.
 ; 
 ; 
-; tz=central (timezone from zonemessages above)
-; attach=yes (attach the voicemail to the notification email *NOT* the pager email)
-; saycid=yes (say the caller id information before the message. If not described, or set to no, it will be in the envelope)
-; dialout=fromvm (context to dial out from [option 4 from the advanced menu]; if not listed, dialing out will not be permitted)
-; callback=fromvm (context to call back from; if not listed, calling the sender back will not be permitted) 
-; review=yes (allow sender to review/rerecord their message before saving it)
-; operator=yes (allow sender to hit 0 after leaving a voicemail to reach an operator)
-; 
-
+; tz=central           ; Timezone from zonemessages above
+; attach=yes           ; Attach the voicemail to the notification email *NOT* the pager email
+; saycid=yes           ; Say the caller id information before the message. If not described, 
+                       ;     or set to no, it will be in the envelope
+; dialout=fromvm       ; Context to dial out from [option 4 from the advanced menu]
+                       ;     if not listed, dialing out will not be permitted
+; callback=fromvm      ; Context to call back from  
+                       ;     if not listed, calling the sender back will not be permitted
+; review=yes           ; Allow sender to review/rerecord their message before saving it [OFF by default
+; operator=yes                 ; Allow sender to hit 0 before/after/during  leaving a voicemail to 
+                       ;     reach an operator  [OFF by default]
+; envelope=no          ; Turn on/off envelope playback before message playback. [ON by default] 
+                       ;     This does NOT affect option 3,3 from the advanced options menu
+                       
 
 [default]
 1234 => 4242,Example Mailbox,root@localhost
 ;4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|serveremail=myaddy@digium.com|tz=central
 ;4300 => 3456,Ben Rigas,ben@american-computer.net
 ;4310 => 5432,Sales,sales@marko.net
 
 [default]
 1234 => 4242,Example Mailbox,root@localhost
 ;4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|serveremail=myaddy@digium.com|tz=central
 ;4300 => 3456,Ben Rigas,ben@american-computer.net
 ;4310 => 5432,Sales,sales@marko.net
-;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes 
+;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes
 ;4110 => 3443,Rob Flynn,rflynn@blueridge.net
 
 ;
 ;4110 => 3443,Rob Flynn,rflynn@blueridge.net
 
 ;