From e584c9dab7d82c98eedae409de7e00a3a077be6f Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Fri, 19 Nov 2004 05:47:21 +0000 Subject: [PATCH] Add option to use directory for forward/compose (bug #2025) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4294 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_voicemail.c | 95 +++++++++++++++++++++++++++++++--- configs/voicemail.conf.sample | 2 + sounds.txt | 2 + sounds/vm-forward.gsm | Bin 0 -> 7260 bytes 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100755 sounds/vm-forward.gsm diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 5e6ea023c4..4035f45699 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -290,11 +290,11 @@ static char pagerfromstring[100]; static char emailtitle[100]; static char charset[32] = "ISO-8859-1"; +static int directory_forward; static char adsifdn[4] = "\x00\x00\x00\x0F"; static char adsisec[4] = "\x9B\xDB\xF7\xAC"; static int adsiver = 1; - STANDARD_LOCAL_USER; LOCAL_USER_DECL; @@ -2218,7 +2218,7 @@ static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, static int forward_message(struct ast_channel *chan, char *context, char *dir, int curmsg, struct ast_vm_user *sender, char *fmt,int flag) { - char username[70]; + char username[70]=""; char sys[256]; char todir[256]; int todircount=0; @@ -2234,12 +2234,88 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i char *stringp, *s; int saved_messages = 0, found = 0; int valid_extensions = 0; + while (!res && !valid_extensions) { - res = ast_streamfile(chan, "vm-extension", chan->language); /* "extension" */ - if (res) - break; - if ((res = ast_readstring(chan, username, sizeof(username) - 1, 2000, 10000, "#") < 0)) - break; + + int use_directory = 0; + if( directory_forward ) { + int done = 0; + int retries = 0; + cmd=0; + while((cmd >= 0) && !done ){ + if (cmd) + retries = 0; + switch (cmd) { + case '1': + use_directory = 0; + done = 1; + break; + case '2': + use_directory = 1; + done=1; + break; + case '*': + cmd = 't'; + done = 1; + break; + default: + /* Press 1 to enter an extension press 2 to use the directory */ + cmd = ast_play_and_wait(chan,"vm-forward"); + if (!cmd) + cmd = ast_waitfordigit(chan,3000); + if (!cmd) + retries++; + if (retries > 3) + { + cmd = 't'; + done = 1; + } + + } + } + if( cmd<0 || cmd=='t' ) + break; + } + + if( use_directory ) { + /* use app_directory */ + + char old_context[sizeof(chan->context)]; + char old_exten[sizeof(chan->exten)]; + int old_priority; + struct ast_app* app; + + + app = pbx_findapp("Directory"); + if (app) { + /* make mackup copies */ + memcpy(old_context, chan->context, sizeof(chan->context)); + memcpy(old_exten, chan->exten, sizeof(chan->exten)); + old_priority = chan->priority; + + /* call the the Directory, changes the channel */ + res = pbx_exec(chan, app, ((context)?context:chan->context), 1); + + strncpy(username, chan->exten, sizeof(username)-1); + + /* restore the old context, exten, and priority */ + memcpy(chan->context, old_context, sizeof(chan->context)); + memcpy(chan->exten, old_exten, sizeof(chan->exten)); + chan->priority = old_priority; + + } else { + ast_log(LOG_WARNING, "Could not find the Directory application, disabling directory_forward\n"); + directory_forward = 0; + } + } else { + /* Ask for an extension */ + res = ast_streamfile(chan, "vm-extension", chan->language); /* "extension" */ + if (res) + break; + if ((res = ast_readstring(chan, username, sizeof(username) - 1, 2000, 10000, "#") < 0)) + break; + } + /* start all over if no username */ if (ast_strlen_zero(username)) continue; @@ -4150,6 +4226,7 @@ static int load_config(void) char *astsaydurationinfo; char *astsaydurationminfo; char *silencestr; + char *astdirfwd; char *thresholdstr; char *fmt; char *astemail; @@ -4382,6 +4459,10 @@ static int load_config(void) exitcontext[0] = '\0'; } + directory_forward = 0; + if (!(astdirfwd = ast_variable_retrieve(cfg, "general", "usedirectory"))) + astdirfwd = "no"; + directory_forward = ast_true(astdirfwd); cat = ast_category_browse(cfg, NULL); while (cat) { diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample index 2713a79ede..8503a88170 100755 --- a/configs/voicemail.conf.sample +++ b/configs/voicemail.conf.sample @@ -46,6 +46,8 @@ maxlogins=3 ;pbxskip=yes ; Change the From: string ;fromstring=The Asterisk PBX +; Permit finding entries for forward/compose from the directory +;usedirectory=yes ; ;Change the From: string for pager messages ;pagerfromstring=The Asterisk PBX diff --git a/sounds.txt b/sounds.txt index b6fcb7781f..ff4adba4cc 100755 --- a/sounds.txt +++ b/sounds.txt @@ -98,6 +98,8 @@ %transfer.gsm%Please hold while I try that extension. +%vm-forward.gsm%Press 1 to enter an extension, press 2 to use the directory + %vm-Cust1.gsm%folder 5 %vm-Cust2.gsm%folder 6 diff --git a/sounds/vm-forward.gsm b/sounds/vm-forward.gsm new file mode 100755 index 0000000000000000000000000000000000000000..af5367eb69abc2cdae1db6042547e1975b3bbad5 GIT binary patch literal 7260 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