From 0794168428fdcfe2e2472bde0310af80b7b6dba3 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Fri, 5 May 2006 21:22:50 +0000 Subject: add support for having the user reminded that their temporary greeting is still set (issue #6120, khaefner) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25057 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_voicemail.c | 37 +++++++++++++++++++++++++++++-------- configs/voicemail.conf.sample | 2 +- sounds.txt | 2 ++ sounds/vm-tempgreetactive.gsm | Bin 0 -> 4950 bytes 4 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 sounds/vm-tempgreetactive.gsm diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 946f6e3b5..ac652e185 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -120,7 +120,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #define VM_DELETE (1 << 12) #define VM_ALLOCED (1 << 13) #define VM_SEARCH (1 << 14) - +#define VM_TEMPGREETWARN (1 << 15) /*!< Remind user tempgreeting is set */ #define ERROR_LOCK_PATH -100 enum { @@ -467,7 +467,9 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v } else if (!strcasecmp(var,"sendvoicemail")){ ast_set2_flag(vmu, ast_true(value), VM_SVMAIL); } else if (!strcasecmp(var, "review")){ - ast_set2_flag(vmu, ast_true(value), VM_REVIEW); + ast_set2_flag(vmu, ast_true(value), VM_REVIEW); + } else if (!strcasecmp(var, "tempgreetwarn")){ + ast_set2_flag(vmu, ast_true(value), VM_TEMPGREETWARN); } else if (!strcasecmp(var, "operator")){ ast_set2_flag(vmu, ast_true(value), VM_OPERATOR); } else if (!strcasecmp(var, "envelope")){ @@ -4058,10 +4060,19 @@ static int vm_intro_gr(struct ast_channel *chan, struct vm_state *vms) } /* Default English syntax */ -static int vm_intro_en(struct ast_channel *chan,struct vm_state *vms) -{ - /* Introduce messages they have */ +static int vm_intro_en(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms) + { int res; + char prefile[256]=""; + + /* Notify the user that the temp greeting is set and give them the option to remove it */ + snprintf(prefile, sizeof(prefile), "%s%s/%s/temp", VM_SPOOL_DIR, vmu->context, vms->username); + if (ast_test_flag(vmu, VM_TEMPGREETWARN)) { + if (ast_fileexists(prefile, NULL, NULL) > 0) + res = ast_play_and_wait(chan, "vm-tempgreetactive"); + } + + /* Introduce messages they have */ res = ast_play_and_wait(chan, "vm-youhave"); if (!res) { if (vms->newmessages) { @@ -4616,7 +4627,7 @@ static int vm_intro_ru(struct ast_channel *chan,struct vm_state *vms) } -static int vm_intro(struct ast_channel *chan,struct vm_state *vms) +static int vm_intro(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms) { /* Play voicemail intro - syntax is different for different languages */ if (!strcasecmp(chan->language, "de")) { /* GERMAN syntax */ @@ -4642,7 +4653,7 @@ static int vm_intro(struct ast_channel *chan,struct vm_state *vms) } else if (!strcasecmp(chan->language, "ru")) { /* RUSSIAN syntax */ return vm_intro_ru(chan, vms); } else { /* Default to ENGLISH */ - return vm_intro_en(chan, vms); + return vm_intro_en(chan, vmu, vms); } } @@ -5343,7 +5354,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) if (play_auto) { cmd = '1'; } else { - cmd = vm_intro(chan, &vms); + cmd = vm_intro(chan, vmu, &vms); } vms.repeats = 0; @@ -5998,6 +6009,7 @@ static int load_config(void) char *send_voicemail; char *astcallop; char *astreview; + char *asttempgreetwarn; char *astskipcmd; char *asthearenv; char *astsaydurationinfo; @@ -6209,6 +6221,15 @@ static int load_config(void) } ast_set2_flag((&globalflags), ast_true(astreview), VM_REVIEW); + /*Temperary greeting reminder */ + if (!(asttempgreetwarn = ast_variable_retrieve(cfg, "general", "tempgreetwarn"))) { + ast_log(LOG_DEBUG, "VM Temperary Greeting Reminder Option disabled globally\n"); + asttempgreetwarn = "no"; + } else { + ast_log(LOG_DEBUG, "VM Temperary Greeting Reminder Option enabled globally\n"); + } + ast_set2_flag((&globalflags), ast_true(asttempgreetwarn), VM_TEMPGREETWARN); + if (!(astcallop = ast_variable_retrieve(cfg, "general", "operator"))){ ast_log(LOG_DEBUG,"VM Operator break disabled globally\n"); astcallop = "no"; diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample index 3c74e706b..61e5588b8 100644 --- a/configs/voicemail.conf.sample +++ b/configs/voicemail.conf.sample @@ -201,7 +201,7 @@ sendvoicemail=yes ; Context to Send voicemail from [option 5 from the advanced m ; greetings. The default is "no". ; hidefromdir=yes ; Hide this mailbox from the directory produced by app_directory ; The default is "no". - +;tempgreetwarn=yes ; Remind the user that their temporary greeting is set [default] ; Define maximum number of messages per folder for partcular context. diff --git a/sounds.txt b/sounds.txt index c323ffbe6..26cf89b3c 100644 --- a/sounds.txt +++ b/sounds.txt @@ -220,6 +220,8 @@ %vm-sorry.gsm%I'm sorry I did not understand your response. +%vm-tempgreetactive.gsm%Your temporary greeting is currently active + %vm-tempgreeting.gsm%press 1 to record your temporary greeting %vm-tempgreeting2.gsm%press 1 to record your temporary greeting, or press 2 to erase your temporary greeting diff --git a/sounds/vm-tempgreetactive.gsm b/sounds/vm-tempgreetactive.gsm new file mode 100644 index 000000000..469473e7d Binary files /dev/null and b/sounds/vm-tempgreetactive.gsm differ -- cgit v1.2.3