From 478474bcb1e4f388e59bec25920f75aaaad93260 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Wed, 28 Apr 2004 04:33:16 +0000 Subject: [PATCH] Merge bug 1483 -- advanced voicemail options git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2792 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_voicemail.c | 791 ++++++++++++++++++++++++++++++-- configs/voicemail.conf.sample | 16 +- say.c | 15 +- sounds.txt | 50 ++ sounds/vm-advopts.gsm | Bin 0 -> 3828 bytes sounds/vm-calldiffnum.gsm | Bin 0 -> 5115 bytes sounds/vm-dialout.gsm | Bin 0 -> 3267 bytes sounds/vm-enter-num-to-call.gsm | Bin 0 -> 3399 bytes sounds/vm-from-extension.gsm | Bin 0 -> 1650 bytes sounds/vm-from-phonenumber.gsm | Bin 0 -> 1650 bytes sounds/vm-from.gsm | Bin 0 -> 759 bytes sounds/vm-nobox.gsm | Bin 0 -> 6864 bytes sounds/vm-nonumber.gsm | Bin 0 -> 4257 bytes sounds/vm-num-i-have.gsm | Bin 0 -> 2607 bytes sounds/vm-reachoper.gsm | Bin 0 -> 4950 bytes sounds/vm-review.gsm | Bin 0 -> 14487 bytes sounds/vm-star-cancel.gsm | Bin 0 -> 3102 bytes sounds/vm-starmain.gsm | Bin 0 -> 4620 bytes sounds/vm-then-pound.gsm | Bin 0 -> 2178 bytes sounds/vm-tocallback.gsm | Bin 0 -> 6204 bytes sounds/vm-tocallnum.gsm | Bin 0 -> 4554 bytes sounds/vm-tocancelmsg.gsm | Bin 0 -> 5445 bytes sounds/vm-toenternumber.gsm | Bin 0 -> 4389 bytes sounds/vm-tohearenv.gsm | Bin 0 -> 5346 bytes sounds/vm-tomakecall.gsm | Bin 0 -> 5247 bytes sounds/vm-tooshort.gsm | Bin 0 -> 2904 bytes sounds/vm-toreply.gsm | Bin 0 -> 4422 bytes sounds/vm-torerecord.gsm | Bin 0 -> 5379 bytes sounds/vm-unknown-caller.gsm | Bin 0 -> 2277 bytes 29 files changed, 815 insertions(+), 57 deletions(-) create mode 100755 sounds/vm-advopts.gsm create mode 100755 sounds/vm-calldiffnum.gsm create mode 100755 sounds/vm-dialout.gsm create mode 100755 sounds/vm-enter-num-to-call.gsm create mode 100755 sounds/vm-from-extension.gsm create mode 100755 sounds/vm-from-phonenumber.gsm create mode 100755 sounds/vm-from.gsm create mode 100755 sounds/vm-nobox.gsm create mode 100755 sounds/vm-nonumber.gsm create mode 100755 sounds/vm-num-i-have.gsm create mode 100755 sounds/vm-reachoper.gsm create mode 100755 sounds/vm-review.gsm create mode 100755 sounds/vm-star-cancel.gsm create mode 100755 sounds/vm-starmain.gsm create mode 100755 sounds/vm-then-pound.gsm create mode 100755 sounds/vm-tocallback.gsm create mode 100755 sounds/vm-tocallnum.gsm create mode 100755 sounds/vm-tocancelmsg.gsm create mode 100755 sounds/vm-toenternumber.gsm create mode 100755 sounds/vm-tohearenv.gsm create mode 100755 sounds/vm-tomakecall.gsm create mode 100755 sounds/vm-tooshort.gsm create mode 100755 sounds/vm-toreply.gsm create mode 100755 sounds/vm-torerecord.gsm create mode 100755 sounds/vm-unknown-caller.gsm diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index c5db096e9f..8007587943 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -84,7 +84,11 @@ static inline void sql_close(void) { } #define eol "\r\n" #define MAX_DATETIME_FORMAT 512 +#define MAX_NUM_CID_CONTEXTS 10 + #define DIGITS_DIR AST_SOUNDS "/digits/" + + struct baseio { int iocp; int iolen; @@ -104,8 +108,13 @@ struct ast_vm_user { char serveremail[80]; char mailcmd[160]; /* Configurable mail command */ char zonetag[80]; + char callback[80]; + char dialout[80]; int attach; int alloced; + int saycid; + int review; + int operator; struct ast_vm_user *next; }; @@ -132,6 +141,11 @@ struct vm_state { int starting; int repeats; }; +static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int msg, int option); +static int dialout(struct ast_channel *chan, struct ast_vm_user *vmu, char *num, char *outgoing_context); +static int play_record_review(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime, char *fmt, int outsidecaller, struct ast_vm_user *vmu, int *duration); + + static char *tdesc = "Comedian Mail (Voicemail System)"; @@ -209,6 +223,15 @@ static int maxgreet; static int skipms; static int maxlogins; +static int reviewvm; +static int calloper; +static int saycidinfo; +static char dialcontext[80]; +static char callcontext[80]; + +static char cidinternalcontexts[MAX_NUM_CID_CONTEXTS][64]; + + static char *emailbody = NULL; static int pbxskip = 0; static char fromstring[100]; @@ -225,6 +248,16 @@ static void apply_options(struct ast_vm_user *vmu, char *options) char *stringp = ast_strdupa(options); char *s; char *var, *value; + if (reviewvm) + vmu->review = 1; + if (calloper) + vmu->operator = 1; + if (saycidinfo) + vmu->saycid = 1; + if (callcontext) + strncpy(vmu->callback, callcontext, sizeof(vmu->callback) -1); + if (dialcontext) + strncpy(vmu->dialout, dialcontext, sizeof(vmu->dialout) -1); while((s = strsep(&stringp, "|"))) { value = s; if ((var = strsep(&value, "=")) && value) { @@ -237,6 +270,26 @@ static void apply_options(struct ast_vm_user *vmu, char *options) strncpy(vmu->serveremail, value, sizeof(vmu->serveremail) - 1); } else if (!strcasecmp(var, "tz")) { strncpy(vmu->zonetag, value, sizeof(vmu->zonetag) - 1); + } else if (!strcasecmp(var, "saycid")){ + if(ast_true(value)) + vmu->saycid = 1; + else + vmu->saycid = 0; + } else if (!strcasecmp(var, "review")){ + if(ast_true(value)) + vmu->review = 1; + else + vmu->review = 0; + } else if (!strcasecmp(var, "operator")){ + if(ast_true(value)) + vmu->operator = 1; + else + vmu->operator = 0; + } else if (!strcasecmp(var, "callback")) { + strncpy(vmu->callback, value, sizeof(vmu->callback) -1); + } else if (!strcasecmp(var, "dialout")) { + strncpy(vmu->dialout, value, sizeof(vmu->dialout) -1); + } } } @@ -780,7 +833,7 @@ static int sendmail(char *srcemail, struct ast_vm_user *vmu, int msgnum, char *m fprintf(p, "Message-ID: \n", msgnum, mailbox, getpid(), host); fprintf(p, "MIME-Version: 1.0\n"); if (attach_user_voicemail) { - // Something unique. + /* Something unique. */ snprintf(bound, sizeof(bound), "Boundary=%d%s%d", msgnum, mailbox, getpid()); fprintf(p, "Content-Type: MULTIPART/MIXED; BOUNDARY=\"%s\"\n\n\n", bound); @@ -1020,7 +1073,7 @@ static int play_and_prepend(struct ast_channel *chan, char *playfile, char *reco } } - sildet = ast_dsp_new(); //Create the silence detector + sildet = ast_dsp_new(); /* Create the silence detector */ if (!sildet) { ast_log(LOG_WARNING, "Unable to create silence detector :(\n"); return -1; @@ -1190,12 +1243,12 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor int totalsilence = 0; int dspsilence = 0; int gotsilence = 0; /* did we timeout for silence? */ - int rfmt=0; - + int rfmt=0; + ast_log(LOG_DEBUG,"play_and_record: %s, %s, '%s'\n", playfile ? playfile : "", recordfile, fmt); snprintf(comment,sizeof(comment),"Playing %s, Recording to: %s on %s\n", playfile ? playfile : "", recordfile, chan->name); - if (playfile) { + if (playfile) { d = play_and_wait(chan, playfile); if (d > -1) d = ast_streamfile(chan, "beep",chan->language); @@ -1204,14 +1257,14 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor if (d < 0) return -1; } - + fmts = ast_strdupa(fmt); - + stringp=fmts; strsep(&stringp, "|"); - ast_log(LOG_DEBUG,"Recording Formats: sfmts=%s\n", fmts); + ast_log(LOG_DEBUG,"Recording Formats: sfmts=%s\n", fmts); sfmt[0] = ast_strdupa(fmts); - + while((fmt = strsep(&stringp, "|"))) { if (fmtcnt > MAX_OTHER_FORMATS - 1) { ast_log(LOG_WARNING, "Please increase MAX_OTHER_FORMATS in app_voicemail.c\n"); @@ -1225,19 +1278,19 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor for (x=0;x 0) { rfmt = chan->readformat; res = ast_set_read_format(chan, AST_FORMAT_SLINEAR); @@ -1246,7 +1299,7 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor return -1; } } - + if (x == fmtcnt) { /* Loop forever, writing the packets we read to the writer(s), until we read a # or get a hangup */ @@ -1262,7 +1315,7 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor res = -1; } } - + if (res < 0) { f = NULL; break; @@ -1275,7 +1328,7 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor for (x=0;x 0) { dspsilence = 0; @@ -1284,7 +1337,7 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor totalsilence = dspsilence; else totalsilence = 0; - + if (totalsilence > maxsilence) { /* Ended happily with silence */ ast_frfree(f); @@ -1304,7 +1357,7 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor ast_writestream(others[0], f); } else if (f->frametype == AST_FRAME_DTMF) { if (f->subclass == '#') { - if (option_verbose > 2) + if (option_verbose > 2) ast_verbose( VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass); res = '#'; outmsg = 2; @@ -1312,6 +1365,15 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor break; } } + if (f->subclass == '0') { + /* Check for a '0' during message recording also, in case caller wants operator */ + if (option_verbose > 2) + ast_verbose(VERBOSE_PREFIX_3 "User cancelled by pressing %c\n", f->subclass); + res = '0'; + outmsg = 0; + ast_frfree(f); + break; + } if (maxtime) { time(&end); if (maxtime < (end - start)) { @@ -1325,13 +1387,13 @@ static int play_and_record(struct ast_channel *chan, char *playfile, char *recor ast_frfree(f); } if (!f) { - if (option_verbose > 2) + if (option_verbose > 2) ast_verbose( VERBOSE_PREFIX_3 "User hung up\n"); res = -1; outmsg=1; } } else { - ast_log(LOG_WARNING, "Error creating writestream '%s', format '%s'\n", recordfile, sfmt[x]); + ast_log(LOG_WARNING, "Error creating writestream '%s', format '%s'\n", recordfile, sfmt[x]); } for (x=0;x 1) { - /* Let them know it worked */ - ast_streamfile(chan, "vm-msgsaved", chan->language); + /* Let them know recording is stopped */ + ast_streamfile(chan, "auth-thankyou", chan->language); ast_waitstream(chan, ""); } - } + } - return res; } @@ -1384,6 +1445,7 @@ static void run_externnotify(char *context, char *extension, int numvoicemails) } } + static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int busy, int unavail) { char comment[256]; @@ -1392,6 +1454,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int int res = 0; int msgnum; int fd; + int duration = 0; char date[256]; char dir[256]; char fn[256]; @@ -1405,7 +1468,8 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int char tmp[256] = ""; struct ast_vm_user *vmu; struct ast_vm_user svm; - + + strncpy(tmp, ext, sizeof(tmp) - 1); ext = tmp; context = strchr(tmp, '@'); @@ -1432,12 +1496,12 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int 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)) - ecodes = "#0"; + ecodes = "#0*"; /* Play the beginning intro if desired */ if (strlen(prefile)) { if (ast_fileexists(prefile, NULL, NULL) > 0) { if (ast_streamfile(chan, prefile, chan->language) > -1) - res = ast_waitstream(chan, "#0"); + res = ast_waitstream(chan, "#0*"); } else { ast_log(LOG_DEBUG, "%s doesn't exist, doing what we can\n", prefile); res = invent_message(chan, vmu->context, ext, busy, ecodes); @@ -1462,8 +1526,19 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int res = 0; } } + /* Check for a '*' here in case the caller wants to escape from voicemail to something + other than the operator -- an automated attendant or mailbox login for example */ + if (res == '*') { + strncpy(chan->exten, "a", sizeof(chan->exten) - 1); + if (strlen(chan->macrocontext)) + strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1); + chan->priority = 0; + free_user(vmu); + return 0; + } /* Check for a '0' here */ if (res == '0') { + transfer: strncpy(chan->exten, "o", sizeof(chan->exten) - 1); if (strlen(chan->macrocontext)) strncpy(chan->context, chan->macrocontext, sizeof(chan->context) - 1); @@ -1508,6 +1583,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int "[message]\n" "origmailbox=%s\n" "context=%s\n" +"macrocontext=%s\n" "exten=%s\n" "priority=%d\n" "callerchan=%s\n" @@ -1516,6 +1592,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int "origtime=%ld\n", ext, chan->context, + chan->macrocontext, chan->exten, chan->priority, chan->name, @@ -1524,7 +1601,9 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int fclose(txt); } else ast_log(LOG_WARNING, "Error opening text file for output\n"); - res = play_and_record(chan, NULL, fn, vmmaxmessage, fmt); + res = play_record_review(chan, NULL, fn, vmmaxmessage, fmt, 1, vmu, &duration); + if (res == '0') + goto transfer; if (res > 0) res = 0; fd = open(txtfile, O_APPEND | O_WRONLY); @@ -1532,7 +1611,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int txt = fdopen(fd, "a"); if (txt) { time(&end); - fprintf(txt, "duration=%ld\n", (long)(end-start)); + fprintf(txt, "duration=%ld\n", (long)(duration)); fclose(txt); } else close(fd); @@ -1551,7 +1630,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int attach_user_voicemail = vmu->attach; if (strlen(vmu->serveremail)) myserveremail = vmu->serveremail; - sendmail(myserveremail, vmu, msgnum, ext, chan->callerid, fn, fmt, end - start, attach_user_voicemail); + sendmail(myserveremail, vmu, msgnum, ext, chan->callerid, fn, fmt, end - start, attach_user_voicemail); } if (strlen(vmu->pager)) { char *myserveremail = serveremail; @@ -2418,31 +2497,18 @@ static int wait_file(struct ast_channel *chan, struct vm_state *vms, char *file) return res; } -static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms) +static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *vmu, char *origtime, char *filename) { int res = 0; - char filename[256], *origtime; struct vm_zone *the_zone = NULL; - struct ast_config *msg_cfg; time_t t; long tin; - make_file(vms->fn2, sizeof(vms->fn2), vms->curdir, vms->curmsg); - snprintf(filename,sizeof(filename), "%s.txt", vms->fn2); - msg_cfg = ast_load(filename); - if (!msg_cfg) { - ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename); - return 0; - } - - if (!(origtime = ast_variable_retrieve(msg_cfg, "message", "origtime"))) - return 0; if (sscanf(origtime,"%ld",&tin) < 1) { ast_log(LOG_WARNING, "Couldn't find origtime in %s\n", filename); return 0; } t = tin; - ast_destroy(msg_cfg); /* Does this user have a timezone specified? */ if (strlen(vmu->zonetag)) { @@ -2485,9 +2551,78 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v return res; } + + +static int play_message_callerid(struct ast_channel *chan, struct vm_state *vms, char *cid, char *context, int callback) +{ + int res = 0; + int i; + char *callerid, *name; + char prefile[256]=""; + + + /* If voicemail cid is not enabled, or we didn't get cid or context from the attribute file, leave now. */ + /* BB: Still need to change this so that if this function is called by the message envelope (and someone is explicitly requesting to hear the CID), it does not check to see if CID is enabled in the config file */ + if((cid == NULL)||(context == NULL)) + return res; + + /* Strip off caller ID number from name */ + ast_log(LOG_DEBUG, "VM-CID: composite caller ID received: %s, context: %s\n", cid, context); + ast_callerid_parse(cid, &name, &callerid); + if((callerid != NULL)&&(!res)&&(strlen(callerid))){ + /* Check for internal contexts and only */ + /* say extension when the call didn't come from an internal context in the list */ + for(i = 0 ; i < MAX_NUM_CID_CONTEXTS ; i++){ + ast_log(LOG_DEBUG, "VM-CID: comparing internalcontext: %s\n", cidinternalcontexts[i]); + if((strcmp(cidinternalcontexts[i], context) == 0)) + break; + } + if(i != MAX_NUM_CID_CONTEXTS){ /* internal context? */ + if(!res) { + snprintf(prefile, sizeof(prefile), "voicemail/%s/%s/greet", context, callerid); + if (strlen(prefile)) { + /* See if we can find a recorded name for this person instead of their extension number */ + if (ast_fileexists(prefile, NULL, NULL) > 0) { + ast_verbose(VERBOSE_PREFIX_3 "Playing envelope info: CID number '%s' matches mailbox number, playing recorded name\n", callerid); + if (!callback) + res = wait_file2(chan, vms, "vm-from"); + res = ast_streamfile(chan, prefile, chan->language) > -1; + res = ast_waitstream(chan, ""); + } else { + ast_verbose(VERBOSE_PREFIX_3 "Playing envelope info: message from '%s'\n", callerid); + /* BB: Say "from extension" as one saying to sound smoother */ + if (!callback) + res = wait_file2(chan, vms, "vm-from-extension"); + res = ast_say_digit_str(chan, callerid, "", chan->language); + } + } + } + } + + else if (!res){ + ast_log(LOG_DEBUG, "VM-CID: Numeric caller id: (%s)\n",callerid); + /* BB: Since this is all nicely figured out, why not say "from phone number" in this case" */ + if (!callback) + res = wait_file2(chan, vms, "vm-from-phonenumber"); + res = ast_say_digit_str(chan, callerid, AST_DIGIT_ANY, chan->language); + } + } + else{ + /* Number unknown */ + ast_log(LOG_DEBUG, "VM-CID: From an unknown number"); + if(!res) + /* BB: Say "from an unknown caller" as one phrase - it is already recorded by "the voice" anyhow */ + res = wait_file2(chan, vms, "vm-unknown-caller"); + } + return res; +} + static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int msg) { int res = 0; + char filename[256],*origtime, *cid, *context; + struct ast_config *msg_cfg; + vms->starting = 0; make_file(vms->fn, sizeof(vms->fn), vms->curdir, msg); adsi_message(chan, vms->curbox, msg, vms->lastmsg, vms->deleted[msg], vms->fn); @@ -2503,8 +2638,32 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc } } + /* Retrieve info from VM attribute file */ + + make_file(vms->fn2, sizeof(vms->fn2), vms->curdir, vms->curmsg); + snprintf(filename,sizeof(filename), "%s.txt", vms->fn2); + msg_cfg = ast_load(filename); + if (!msg_cfg) { + ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename); + return 0; + } + + if (!(origtime = ast_variable_retrieve(msg_cfg, "message", "origtime"))) + return 0; + + cid = ast_variable_retrieve(msg_cfg, "message", "callerid"); + + context = ast_variable_retrieve(msg_cfg, "message", "context"); + if(!strncasecmp("macro",context,5)) /* Macro names in contexts are useless for our needs */ + context = ast_variable_retrieve(msg_cfg, "message","macrocontext"); + if (!res) - res = play_message_datetime(chan,vmu,vms); + res = play_message_datetime(chan, vmu, origtime, filename); + + if ((!res)&&(vmu->saycid)) + res = play_message_callerid(chan, vms, cid, context, 0); + + ast_destroy(msg_cfg); if (!res) { make_file(vms->fn, sizeof(vms->fn), vms->curdir, msg); @@ -2622,6 +2781,8 @@ static int vm_instructions(struct ast_channel *chan, struct vm_state *vms) } else { if (vms->curmsg) res = play_and_wait(chan, "vm-prev"); + if (!res) + res = play_and_wait(chan, "vm-advopts"); if (!res) res = play_and_wait(chan, "vm-repeat"); if (!res && (vms->curmsg != vms->lastmsg)) @@ -2676,15 +2837,15 @@ static int vm_options(struct ast_channel *chan, struct ast_vm_user *vmu, struct switch (cmd) { case '1': snprintf(prefile,sizeof(prefile),"voicemail/%s/%s/unavail",vmu->context, vms->username); - cmd = play_and_record(chan,"vm-rec-unv",prefile, maxgreet, fmtc); + cmd = play_record_review(chan,"vm-rec-unv",prefile, maxgreet, fmtc, 0, vmu, 0); break; case '2': snprintf(prefile,sizeof(prefile),"voicemail/%s/%s/busy",vmu->context, vms->username); - cmd = play_and_record(chan,"vm-rec-busy",prefile, maxgreet, fmtc); + cmd = play_record_review(chan,"vm-rec-busy",prefile, maxgreet, fmtc, 0, vmu, 0); break; case '3': snprintf(prefile,sizeof(prefile),"voicemail/%s/%s/greet",vmu->context, vms->username); - cmd = play_and_record(chan,"vm-rec-name",prefile, maxgreet, fmtc); + cmd = play_record_review(chan,"vm-rec-name",prefile, maxgreet, fmtc, 0, vmu, 0); break; case '4': newpassword[1] = '\0'; @@ -2751,6 +2912,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) int logretries = 0; struct ast_vm_user *vmu = NULL, vmus; char *context=NULL; + int silentexit = 0; LOCAL_USER_ADD(u); memset(&vms, 0, sizeof(vms)); @@ -2922,6 +3084,90 @@ static int vm_execmain(struct ast_channel *chan, void *data) cmd = play_and_wait(chan, "vm-messages"); vms.starting = 1; break; + case '3': /* Advanced options */ + cmd = 0; + vms.repeats = 0; + while((cmd > -1) && (cmd != 't') && (cmd != '#')) { + switch(cmd) { + case '1': /* Reply */ + if(vms.lastmsg > -1) + cmd = advanced_options(chan, vmu, &vms, vms.curmsg, 1); + else + cmd = play_and_wait(chan, "vm-sorry"); + cmd = 't'; + break; + case '2': /* Callback */ + ast_verbose( VERBOSE_PREFIX_3 "Callback Requested\n"); + if (strlen(vmu->callback) && vms.lastmsg > -1) { + cmd = advanced_options(chan, vmu, &vms, vms.curmsg, 2); + if (cmd == 9) { + silentexit = 1; + goto out; + } + } + else + cmd = play_and_wait(chan, "vm-sorry"); + cmd = 't'; + break; + case '3': /* Envelope */ + if(vms.lastmsg > -1) + cmd = advanced_options(chan, vmu, &vms, vms.curmsg, 3); + else + cmd = play_and_wait(chan, "vm-sorry"); + cmd = 't'; + break; + case '4': /* Dialout */ + if (strlen(vmu->dialout)) { + cmd = dialout(chan, vmu, NULL, vmu->dialout); + if (cmd == 9) { + silentexit = 1; + goto out; + } + } + else + cmd = play_and_wait(chan, "vm-sorry"); + cmd = 't'; + break; + + case '*': /* Return to main menu */ + cmd = 't'; + break; + + default: + cmd = 0; + if (!vms.starting) { + cmd = play_and_wait(chan, "vm-toreply"); + } + if (strlen(vmu->callback) && !vms.starting && !cmd) { + cmd = play_and_wait(chan, "vm-tocallback"); + } + + if (!cmd && !vms.starting) { + cmd = play_and_wait(chan, "vm-tohearenv"); + } + if (strlen(vmu->dialout) && !cmd) { + cmd = play_and_wait(chan, "vm-tomakecall"); + } + if (!cmd) + cmd = play_and_wait(chan, "vm-starmain"); + if (!cmd) + cmd = ast_waitfordigit(chan,6000); + if (!cmd) + vms.repeats++; + if (vms.repeats > 3) + cmd = 't'; + } + } + if (cmd == 't') { + cmd = 0; + vms.repeats = 0; + } + break; + + + + + case '4': if (vms.curmsg) { vms.curmsg--; @@ -3017,7 +3263,10 @@ out: ast_stopstream(chan); adsi_goodbye(chan); if(valid) { - res = play_and_wait(chan, "vm-goodbye"); + if (silentexit) + res = play_and_wait(chan, "vm-dialout"); + else + res = play_and_wait(chan, "vm-goodbye"); if (res > 0) res = 0; } @@ -3286,13 +3535,18 @@ static int load_config(void) struct ast_variable *var; char *notifystr = NULL; char *astattach; + char *astsaycid; + char *astcallop; + char *astreview; char *silencestr; char *thresholdstr; char *fmt; char *astemail; char *astmailcmd = SENDMAIL; - char *s; - + char *s,*q,*stringp; + char *dialoutcxt = NULL; + char *callbackcxt = NULL; + int x; cfg = ast_load(VOICEMAIL_CONFIG); @@ -3401,6 +3655,54 @@ static int load_config(void) } } + if ((s = ast_variable_retrieve(cfg, "general", "cidinternalcontexts"))){ + ast_log(LOG_DEBUG,"VM_CID Internal context string: %s\n",s); + stringp = ast_strdupa(s); + for (x = 0 ; x < MAX_NUM_CID_CONTEXTS ; x++){ + if ((stringp)&&(strlen(stringp))){ + q = strsep(&stringp,","); + while ((*q == ' ')||(*q == '\t')) /* Eat white space between contexts */ + q++; + strcpy(cidinternalcontexts[x],q); + ast_log(LOG_DEBUG,"VM_CID Internal context %d: %s\n", x, cidinternalcontexts[x]); + } else { + cidinternalcontexts[x][0] = '\0'; + } + } + } + reviewvm = 0; + if (!(astreview = ast_variable_retrieve(cfg, "general", "review"))){ + ast_log(LOG_DEBUG,"VM Review Option disabled globally\n"); + astreview = "no"; + } + reviewvm = ast_true(astreview); + + calloper = 0; + if (!(astcallop = ast_variable_retrieve(cfg, "general", "operator"))){ + ast_log(LOG_DEBUG,"VM Operator break disabled globally\n"); astcallop = "no"; + } + calloper = ast_true(astcallop); + + saycidinfo = 0; + if (!(astsaycid = ast_variable_retrieve(cfg, "general", "saycid"))) { + ast_log(LOG_DEBUG,"VM CID Info before msg disabled globally\n"); + astsaycid = "no"; + } + saycidinfo = ast_true(astsaycid); + + if ((dialoutcxt = ast_variable_retrieve(cfg, "general", "dialout"))) { + strncpy(dialcontext, dialoutcxt, sizeof(dialcontext) - 1); + ast_log(LOG_DEBUG, "found dialout context: %s\n", dialcontext); + } else { + dialcontext[0] = '\0'; + } + + if ((callbackcxt = ast_variable_retrieve(cfg, "general", "callback"))) { + strncpy(callcontext, callbackcxt, sizeof(callcontext) -1); + ast_log(LOG_DEBUG, "found callback context: %s\n", callcontext); + } else { + callcontext[0] = '\0'; + } #ifdef USEMYSQLVM if (!(s=ast_variable_retrieve(cfg, "general", "dbuser"))) { strcpy(dbuser, "test"); @@ -3582,6 +3884,387 @@ char *description(void) return tdesc; } +static int dialout(struct ast_channel *chan, struct ast_vm_user *vmu, char *num, char *outgoing_context) +{ + int cmd = 0; + char destination[80] = ""; + int retries = 0; + + if (!num) { + ast_verbose( VERBOSE_PREFIX_3 "Destination number will be entered manually\n"); + while (retries < 3 && cmd != 't') { + destination[1] = '\0'; + destination[0] = cmd = play_and_wait(chan,"vm-enter-num-to-call"); + if (!cmd) + destination[0] = cmd = play_and_wait(chan, "vm-then-pound"); + if (!cmd) + destination[0] = cmd = play_and_wait(chan, "vm-star-cancel"); + if (!cmd) { + cmd = ast_waitfordigit(chan, 6000); + if (cmd) + destination[0] = cmd; + } + if (!cmd) { + retries++; + } else { + + if (cmd < 0) + return 0; + if (cmd == '*') { + ast_verbose( VERBOSE_PREFIX_3 "User hit '*' to cancel outgoing call\n"); + return 0; + } + if ((cmd = ast_readstring(chan,destination + strlen(destination),sizeof(destination)-1,6000,10000,"#")) < 0) + retries++; + else + cmd = 't'; + } + } + if (retries >= 3) { + return 0; + } + + } else { + ast_verbose( VERBOSE_PREFIX_3 "Destination number is CID number '%s'\n", num); + strncpy(destination, num, sizeof(destination) -1); + } + + if (strlen(destination)) { + if (destination[strlen(destination) -1 ] == '*') + return 0; + ast_verbose( VERBOSE_PREFIX_3 "Placing outgoing call to extension '%s' in context '%s' from context '%s'\n", destination, outgoing_context, chan->context); + strncpy(chan->exten, destination, sizeof(chan->exten) - 1); + strncpy(chan->context, outgoing_context, sizeof(chan->context) - 1); + chan->priority = 0; + return 9; + } + return 0; +} + +static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int msg, int option) +{ + int res = 0; + char filename[256],*origtime, *cid, *context, *name, *num; + struct ast_config *msg_cfg; + int retries = 0; + + vms->starting = 0; + make_file(vms->fn, sizeof(vms->fn), vms->curdir, msg); + + /* Retrieve info from VM attribute file */ + + make_file(vms->fn2, sizeof(vms->fn2), vms->curdir, vms->curmsg); + snprintf(filename,sizeof(filename), "%s.txt", vms->fn2); + msg_cfg = ast_load(filename); + if (!msg_cfg) { + ast_log(LOG_WARNING, "No message attribute file?!! (%s)\n", filename); + return 0; + } + + if (!(origtime = ast_variable_retrieve(msg_cfg, "message", "origtime"))) + return 0; + + cid = ast_variable_retrieve(msg_cfg, "message", "callerid"); + + context = ast_variable_retrieve(msg_cfg, "message", "context"); + if(!strncasecmp("macro",context,5)) /* Macro names in contexts are useless for our needs */ + context = ast_variable_retrieve(msg_cfg, "message","macrocontext"); + + if (option == 3) { + + if (!res) + res = play_message_datetime(chan, vmu, origtime, filename); + if (!res) + res = play_message_callerid(chan, vms, cid, context, 0); + } else if (option == 2) { /* Call back */ + + if (strlen(cid)) { + ast_callerid_parse(cid, &name, &num); + while ((res > -1) && (res != 't')) { + switch(res) { + case '1': + if (num) { + /* Dial the CID number */ + res = dialout(chan, vmu, num, vmu->callback); + if (res) + return 9; + } else { + res = '2'; + } + break; + + case '2': + /* Want to enter a different number, can only do this if there's a dialout context for this user */ + if (strlen(vmu->dialout)) { + res = dialout(chan, vmu, NULL, vmu->dialout); + if (res) + return 9; + } else { + ast_verbose( VERBOSE_PREFIX_3 "Caller can not specify callback number - no dialout context available\n"); + res = play_and_wait(chan, "vm-sorry"); + } + return res; + case '*': + res = 't'; + break; + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '0': + + res = play_and_wait(chan, "vm-sorry"); + retries++; + break; + default: + if (num) { + ast_verbose( VERBOSE_PREFIX_3 "Confirm CID number '%s' is number to use for callback\n", num); + res = play_and_wait(chan, "vm-num-i-have"); + if (!res) + res = play_message_callerid(chan, vms, num, vmu->context, 1); + if (!res) + res = play_and_wait(chan, "vm-tocallnum"); + /* Only prompt for a caller-specified number if there is a dialout context specified */ + if (strlen(vmu->dialout)) { + if (!res) + res = play_and_wait(chan, "vm-calldiffnum"); + } + } else { + res = play_and_wait(chan, "vm-nonumber"); + if (strlen(vmu->dialout)) { + if (!res) + res = play_and_wait(chan, "vm-toenternumber"); + } + } + if (!res) + res = play_and_wait(chan, "vm-star-cancel"); + if (!res) + res = ast_waitfordigit(chan, 6000); + if (!res) + retries++; + if (retries > 3) + res = 't'; + break; + + } + if (res == 't') + res = 0; + else if (res == '*') + res = -1; + } + } + + } + else if (option == 1) { /* Reply */ + /* Send reply directly to sender */ + if (strlen(cid)) { + ast_callerid_parse(cid, &name, &num); + if (!num) { + ast_verbose(VERBOSE_PREFIX_3 "No CID number available, no reply sent\n"); + if (!res) + res = play_and_wait(chan, "vm-nonumber"); + return res; + } else { + if (find_user(NULL, vmu->context, num)) { + ast_verbose(VERBOSE_PREFIX_3 "Leaving voicemail for '%s' in context '%s'\n", num, vmu->context); + leave_voicemail(chan, num, 1, 0, 1); + res = 't'; + return res; + } + else { + ast_verbose( VERBOSE_PREFIX_3 "No mailbox number '%s' in context '%s', no reply sent\n", num, vmu->context); + /* Sender has no mailbox, can't reply */ + play_and_wait(chan, "vm-nobox"); + res = 't'; + return res; + } + } + res = 0; + } + } + + ast_destroy(msg_cfg); + + if (!res) { + make_file(vms->fn, sizeof(vms->fn), vms->curdir, msg); + vms->heard[msg] = 1; + res = wait_file(chan, vms, vms->fn); + } + return res; +} + + + + + + + + +static int play_record_review(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime, char *fmt, int outsidecaller, struct ast_vm_user *vmu, int *duration) +{ + /* Record message & let caller review or re-record it, or set options if applicable */ + int res = 0; + int cmd = 0; + int max_attempts = 3; + int attempts = 0; + int recorded = 0; + time_t start = 0; + time_t end = 0; + int message_exists = 0; + /* Note that urgent and private are for flagging messages as such in the future */ + + cmd = '3'; /* Want to start by recording */ + + while((cmd >= 0) && (cmd != 't')) { + switch (cmd) { + case '1': + if (!message_exists) { + /* In this case, 1 is to record a message */ + cmd = '3'; + break; + } else { + /* Otherwise 1 is to save the existing message */ + ast_verbose(VERBOSE_PREFIX_3 "Saving message as is\n"); + ast_streamfile(chan, "vm-msgsaved", chan->language); + ast_waitstream(chan, ""); + cmd = 't'; + return res; + } + case '2': + /* Review */ + ast_verbose(VERBOSE_PREFIX_3 "Reviewing the message\n"); + ast_streamfile(chan, recordfile, chan->language); + cmd = ast_waitstream(chan, AST_DIGIT_ANY); + break; + case '3': + message_exists = 0; + /* Record */ + ast_verbose(VERBOSE_PREFIX_3 "Re-recording the message\n"); + if (recorded && outsidecaller) { + cmd = play_and_wait(chan, INTRO); + cmd = play_and_wait(chan, "beep"); + } + recorded = 1; + /* After an attempt has been made to record message, we have to take care of INTRO and beep for incoming messages, but not for greetings */ + /* twisted says: don't touch the pointer if it's null! */ + if (duration) *duration = 0; + time(&start); + cmd = play_and_record(chan, playfile, recordfile, maxtime, fmt); + time(&end); + /* twisted says: don't touch the pointer if it's null! */ + if (duration) *duration = end - start; + if (cmd == -1) + /* User has hung up, no options to give */ + return res; + if (cmd == '0') { + /* Erase the message if 0 pushed during playback */ + play_and_wait(chan, "vm-deleted"); + ast_filedelete(recordfile, NULL); + } else if (cmd == '*') { + break; + } +#if 0 + else if (vmu->review && ((int)&end - (int)&start < 5)) { + /* Message is too short */ + ast_verbose(VERBOSE_PREFIX_3 "Message too short\n"); + cmd = play_and_wait(chan, "vm-tooshort"); + cmd = ast_filedelete(recordfile, NULL); + break; + } + else if (vmu->review && (cmd == 2 && duration < (maxsilence + 3))) { + /* Message is all silence */ + ast_verbose(VERBOSE_PREFIX_3 "Nothing recorded\n"); + cmd = ast_filedelete(recordfile, NULL); + cmd = play_and_wait(chan, "vm-nothingrecorded"); + if (!cmd) + cmd = play_and_wait(chan, "vm-speakup"); + break; + } +#endif + else { + /* If all is well, a message exists */ + message_exists = 1; + cmd = 0; + } + break; + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '*': + case '#': + cmd = play_and_wait(chan, "vm-sorry"); + break; +#if 0 +/* XXX Commented out for the moment because of the dangers of deleting + a message while recording (can put the message numbers out of sync) */ + case '*': + /* Cancel recording, delete message, offer to take another message*/ + cmd = play_and_wait(chan, "vm-deleted"); + cmd = ast_filedelete(recordfile, NULL); + if (outsidecaller) { + res = vm_exec(chan, NULL); + return res; + } + else + return 1; +#endif + case '0': + if (outsidecaller && vmu->operator) { + if (message_exists) + play_and_wait(chan, "vm-msgsaved"); + return cmd; + } else + cmd = play_and_wait(chan, "vm-sorry"); + break; + default: + /* If the caller is an ouside caller, and the review option is enabled, + allow them to review the message, but let the owner of the box review + their OGM's */ + if (outsidecaller && !vmu->review) + return cmd; + if (message_exists) { + cmd = play_and_wait(chan, "vm-review"); + } + else { + cmd = play_and_wait(chan, "vm-torerecord"); + if (!cmd) + cmd = ast_waitfordigit(chan, 600); + } + + if (!cmd && outsidecaller && vmu->operator) { + cmd = play_and_wait(chan, "vm-reachoper"); + if (!cmd) + cmd = ast_waitfordigit(chan, 600); + } +#if 0 + if (!cmd) + cmd = play_and_wait(chan, "vm-tocancelmsg"); +#endif + if (!cmd) + cmd = ast_waitfordigit(chan, 6000); + if (!cmd) { + attempts++; + } + if (attempts > max_attempts) { + cmd = 't'; + } + } + } + if (outsidecaller) + play_and_wait(chan, "vm-goodbye"); + if (cmd == 't') + cmd = 0; + return cmd; + } + + + int usecount(void) { int res; @@ -3593,3 +4276,9 @@ char *key() { return ASTERISK_GPL_KEY; } + + + + + + diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample index 3a97fbd54c..37648accb5 100755 --- a/configs/voicemail.conf.sample +++ b/configs/voicemail.conf.sample @@ -86,12 +86,26 @@ central24=America/Chicago|'vm-received' q 'digits/at' H 'digits/hundred' M 'hour ; if the e-mail is specified, a message will be sent when a message is ; 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. +; +; 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) +; + + [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 +;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator= +yes ;4110 => 3443,Rob Flynn,rflynn@blueridge.net ; diff --git a/say.c b/say.c index 2ca660500d..07b5844e9c 100755 --- a/say.c +++ b/say.c @@ -34,6 +34,7 @@ int ast_say_digit_str(struct ast_channel *chan, char *fn2, char *ints, char *lan int num = 0; int res = 0; while(fn2[num] && !res) { + fn[0] = '\0'; switch (fn2[num]) { case ('*'): snprintf(fn, sizeof(fn), "digits/star"); @@ -42,12 +43,16 @@ int ast_say_digit_str(struct ast_channel *chan, char *fn2, char *ints, char *lan snprintf(fn, sizeof(fn), "digits/pound"); break; default: - snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + if((fn2[num] >= '0') && (fn2[num] <= '9')){ /* Must be in {0-9} */ + snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + } } - res = ast_streamfile(chan, fn, lang); - if (!res) - res = ast_waitstream(chan, ints); - ast_stopstream(chan); + if(strlen(fn)){ /* if length == 0, then skip this digit as it is invalid */ + res = ast_streamfile(chan, fn, lang); + if (!res) + res = ast_waitstream(chan, ints); + ast_stopstream(chan); + } num++; } return res; diff --git a/sounds.txt b/sounds.txt index 1bbfbef059..c056fca430 100755 --- a/sounds.txt +++ b/sounds.txt @@ -426,3 +426,53 @@ message without prepending %vm-mailboxfull.gsm%sorry but the users mail box can't accept more messages + +%vm-tocancelmsg.gsm%press star to cancel this message + +%vm-from.gsm%from + +%vm-from-extension.gsm%from extension + +%vm-from-phonenumber.gsm%from phone number + +%vm-unknown-caller.gsm%from an unknown caller + +%vm-advopts.gsm%press 3 for advanced options + +%vm-toreply.gsm%press 1 to send a reply + +%vm-tocallback.gsm%press 2 to call the person who sent this message + +%vm-tohearenv.gsm%press 3 to hear the message envelope + +%vm-tomakecall.gsm%press 4 to place an outgoing call + +%vm-starmain.gsm%press star to return to the main menu + +%vm-dialout.gsm%please wait while i connect your call + +%vm-enter-num-to-call.gsm%please enter the number you wish to call + +%vm-then-pound.gsm%then press pound + +%vm-star-cancel.gsm%press star to cancel + +%vm-num-i-have.gsm%the number i have is + +%vm-tocallnum.gsm%press 1 to call this number + +%vm-calldiffnum.gsm%press 2 to enter a different number + +%vm-nonumber.gsm%i'm afraid i don't know who sent this message + +%vm-toenternumber.gsm%press 1 to enter a number + +%vm-nobox.gsm%you cannot reply to this message because the sender does not have a mailbox + +%vm-review.gsm%press 1 to accept this recording press 2 to listen to it press 3 to rerecord your message + +%vm-torerecord.gsm%press 3 to rerecord your message + +%vm-reachoper.gsm%press 0 to reach an operator + +%vm-tooshort.gsm%your message is too short diff --git a/sounds/vm-advopts.gsm b/sounds/vm-advopts.gsm new file mode 100755 index 0000000000000000000000000000000000000000..4305ed49de5e0228805564876c0583b3ae3cdc59 GIT binary patch literal 3828 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-dialout.gsm b/sounds/vm-dialout.gsm new file mode 100755 index 0000000000000000000000000000000000000000..406215e2f5402edb5dfddbffa656d615b70d8c5a GIT binary patch literal 3267 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 BV4(m2 literal 0 HcmV?d00001 diff --git a/sounds/vm-enter-num-to-call.gsm b/sounds/vm-enter-num-to-call.gsm new file mode 100755 index 0000000000000000000000000000000000000000..30292703f53eb36dea70910303e5166bdfd2513d GIT binary patch literal 3399 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-from-extension.gsm b/sounds/vm-from-extension.gsm new file mode 100755 index 0000000000000000000000000000000000000000..1666b015a5b8fb702a18a029d688a9a7f1022614 GIT binary patch literal 1650 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 pNhFdQEEs+2uTDo*g=`@UbdiuCJf66CLv*k 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-num-i-have.gsm b/sounds/vm-num-i-have.gsm new file mode 100755 index 0000000000000000000000000000000000000000..9ba87bc6a323e626481024d6b40676aa633d6783 GIT binary patch literal 2607 zcmV+~3efe}-D%j7P#{Shk;x-gpf?I4^r@z)w18O5&m@|@MIhKzl=7g0Q!MtJ7MUxhZS?9|DHYXXOea%W3`!&-a_p;&VN5yYpm z6IRY^<5XuHpUlYGgUIdcjz;4TJ0#~0sMxOA zE!1gpno^YSBr}#fQ{PI_Ym#Jvkx)k@b~cyMY^l`DK~2=`Sz|+n&G{@W)bxc(uT!W? zD#FY(Xp+|$e2iKomd4`KDoXNHdW2^++`%Bm18OTt+neknvN3l!+TbCl^@u#D(krwo zBjACV8mQkL=psDg?5CTm!dBq2TGOC`mmIP%>(TGDCNpk*Px?$4cIU96I9n`?a4@TPzy1=z`s7Q9xYJ88P*U3qQ zan_VyO4(RlOG;jgzMY9W=3xi~oO`C5(&=>9Vq(W$i&@T0lV>{IHjdn5NT~;kIR|A( z#Uy9PB-AQQ*BE7_qNJ7pXPGDHi9X2#o2X8uYF69NMZp;H+N{*+Owyohr}XSnE~L{% z#K`_iq-_MPY>lDi*+kfYw@VS!=vB@cZRr;yl0hq_#n+S%HK1`Q!Q-`>9&<`L8)L@n z)a#BK2;=I=v9enTcP#bgZUb(2$YUXLnx}beqa<jf(Hq_DM+~TW5Et0(()ajdz(&GxIELJ&W{9r9_nRbF17{=(lLKI}}u>&`xVrbEig9 zj&1WZ)f`mn1XE`=!|6(Mrv}v&JC5Y0g~eDy;t3hNYIWW)4nG={LIzngW^#$Tw_%uBM{ROh!&n0l4j zsX^8Yu7)JI@9QGF2!bQi-BVu7B_fhO&ADm^TiH{a+B0g^imfQ~k{L$sxT@Jy1~sE$ zYx>zIi%qL5*Ep!SX4&+c-V0vL&fSTcBVO$&<<7w6Q7#z`uPW$Rtr#OyeVy5HdeO;N zu83R9ITWVq30dwZ{j$tO1x9sjSxs1M4i((kW?B`*uE^`82qe$Os*hGAz~ffSXWfb* zh^WlD%+CM47+bI{bCCZ8*jGi#k@WnC?w7wH5ijyOq_=ZAFN zQaqg0XIvFq-7KBh}l>0~Zn0cLCJt zZ55M+rDknYxTu9hyJm<}7so?Q!$wu*g(SdudP_>wE1Vfq#pPpbk+?d8L)^Qpmfgcd zys;81EP({9hH6_o)9i$uQNzU^q;*#YgC)sbk|AS-!m4nTmpaMBni{5A6w_>D=~9Pf zqHBH263az97j9&*i$jUhoVY2D#dx%7q^#1Xaw6l{;*Ds{iJIgh8QP5vEABz97iBoL z@F6p8tq`oy;-w;7x}mo1m4@W(;PNilkdn5b$FVyoo0_1gg{=Ku(q3&QCFw-VOh6gz{@W3v~EJ6X?Sxmqpe?`H#x zT#dA2%Odexyy*1TV+;F?(4!LHF5OyfB6k=G)mCvs)Ss0m;@LxIEUuf~)*d_agXH3X z)$Z5gqR7{VOp|#6%>vogEZAovtBQA`MH2; zWLrydw7S=!Lo0&N;^=LPeW^pvYdm-^-TBPOICnD!dexk(E6S*D0 zqImDfvJilypCpb)B!0ry;!NJ8*JVOuL++xfntQnleIh`0)x8scLAx4gv+RRnMPqLE z+SMOZXA6H}L>@Mk%6h`a>~SXt#sXJcmN`3rVZ|an*%j5BQ`by^L31pQ2HB$Gduh$a z?0n%gnrB&(n&DRMg|MO3T~gcAdciB3t@h=3;KR)R6Nus>f@LLB=7DCKbGG54!B_58MP0W+ zwkuI2+}UreT2s)0C@Rvu+?t{JtlDX1X2C}^i9T820VeB3lH=KHi_%hPfp(j+cI&vo z$s1zS(cZ!~)Jg=?w80@#vAb*8F1$`$bYUAM)@OIn0qHC5R-$a7NJ)w$>rj9~r=Ou3 z*X^=X3B;hvVrj^v<{(7VsKnx|09fa(IbyN^J6kS9lhvA97}3-KTI`ZZB;Eiw8;(gM R;s7}#jkeqFfJrNDw%dmpHIx7V literal 0 HcmV?d00001 diff --git a/sounds/vm-reachoper.gsm b/sounds/vm-reachoper.gsm new file mode 100755 index 0000000000000000000000000000000000000000..208daa5919e4b1324134b7be7f5d676036066e01 GIT binary patch literal 4950 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-star-cancel.gsm b/sounds/vm-star-cancel.gsm new file mode 100755 index 0000000000000000000000000000000000000000..0b7cfd603f895924d4e54d3c9b037f7ce103c740 GIT binary patch literal 3102 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-then-pound.gsm b/sounds/vm-then-pound.gsm new file mode 100755 index 0000000000000000000000000000000000000000..2261fb6b316247be94b829617984659c53110050 GIT binary patch literal 2178 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-toenternumber.gsm b/sounds/vm-toenternumber.gsm new file mode 100755 index 0000000000000000000000000000000000000000..44f3e5f1f9b9f87aca3f182bcf164aa42a80cb42 GIT binary patch literal 4389 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 SZ9Z**0m?DJ{~zmrkN*QAtJ>QD literal 0 HcmV?d00001 diff --git a/sounds/vm-tohearenv.gsm b/sounds/vm-tohearenv.gsm new file mode 100755 index 0000000000000000000000000000000000000000..5ddef223dc6d3d1fff9614666548a73cabe0bdd1 GIT binary patch literal 5346 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 K+?>t-|M@?qb&#$A literal 0 HcmV?d00001 diff --git a/sounds/vm-tomakecall.gsm b/sounds/vm-tomakecall.gsm new file mode 100755 index 0000000000000000000000000000000000000000..5449e9a7a2db676f5f00ff6135866ae74f60cb7d GIT binary patch literal 5247 zcmXAtc{m%0*2ZIVjh4{K zCd679jjc-%TP$t%4JC=Cp}Nl2J9oaX_ql(a=RD7O&wuBAe(zE0JCt>yKu=v3OoIb@ z0f-(}mB2ti^|XG+=VJ%cDVa@Za+;5)j*Ns%8+m~1c$y?5xQ2)XL;yViS#XWYMxPS9 z;Nz*U@dDofdO*m5;P9kCtGXF**2lHkLlBj%a7CBr69}pCfLtcQ^h6Ip4G;;gL1-p@ z;JPeiyt1`E1tj3Z^?6=^7@9jI3!!;P@??_XR5|dY3f8J*Gg@M3q*IG|a!nk~9#kh} z{y>8<8Un#ReE;nlJH3)gO^JU@a(~V%RgT3saNXjW1B+xj-~->jgTJ|&g*QZt=Nrc2iOp4 zNGvyPQTa=;%3_#i2hOr^FXl&{=z&F$_(3dUJ+qk)dr#hTSn2Sq+;Ssn1~N3`9`+ix zC^GX7cRUHtiiX^PZ~v(kN|YH(7)<+IIjedGnzZeW7EMn~R|3!9GwDj5>3j5+;G=Ms zW#L0B{oCX2KCi3U{Px4Hd+mS4eO*A1agb`)(o4gK181&3n|2jcJx7J5 z31)wyt92J9b=NsovULB}71C1(`7IKByV|Di?G(6ipUu?pO{%`e^B1xgK%VZ;roGs5 zTdK&@wRD-D={v&+`|MO9`HUv4Y~OF$eKv~Jh{R)WIG<*qES6D1+tb_tbR?(z&&qaI zC!TaQX8@#tqT}kiJ8-=C-B&Edd<8!IRQ@=Pim)AZt+%?&u-RxKK3aE^dep1r?HidQm)Uox_ zpG38|4*lA=>)&xsI^(`MLJIrZWSK0>{h;hQ{wYSe=J9uKOlRsEulZk*$J5s$0U_A; z>jK`X$oseD(ddI2sk-mcX9W{;i{?r2 z4Yku;YsO<%IzA3@jHR2E-R2%?3u34oPX;q zXQ0**UZu)WwVr&XVsLfHGcNY_wcX=YBHeJIOndS?g0f6}lDtuqxOCxU0Qh}0#?P^zgKc!T{SwNqU``a zWqHMC!G^`Jhpqdon3mG-zJ^xqzQV9ey!Ldro$!m7CQl)tvfpJE;w$|1?J8sN8MQxV zj-}K;V3mm{9M%KcG(VsFiw3#&N}N}_<*oo3X1<r|5HZ(m=*iBS9{NW-+*L>m zC3Z45;W$hxOGpsCy#)8XbhE``7Cs%}zmtMn4|4Zq*yH#9L8u-ukuh*%Z}EE~yw()A z)usJt-vYgwz0R#goFGo5_u{9=Wj3fN#=Q+L`^}cg<+Vw5=E#dh=5MZOvEx-+uhX%S z0GYwfoIz}DmpWe9t`%6-6P~H`QzNo)55N@xjB0z0CAW8@rTYlDd_O*03UM-#-_U%@jG{{hikX zqFTauieeqT1rOu?6u^nC=Nuo@@4JzGOs4qSp%GgGwHMEabBnP0^ziGhq_G@064dk) zI3ST+6{GmtUb%Hc+h={j<579B{__&3)lXo1ld2qAlOQ>^4yKj&7+2`Z#t3htZZDS6 z2Q10Kr#E+ncLv=Ok&4W9O}!zC%Lj{11*4S11c$}z$%;!=djYrTQfO8}d@()5iPo=E zd}BOmad}nvJR@SOeAUh@Yqo{O7jsh_!iBT}z#mhq3RmyOW99ttLMV5$oHUQ-vb!dM z9SH;#L`WKns21Sln>jD*DrwGUH3JbHMz&TT*(B5m2_YlF|0@vXSNPhX(Encd|Ja0} z)Z_jOA_#qfkr%k`BY_a&cdY7zu11tM0VB5lMjAxHqpMjxxs6HLh2LuYEzV)t$FXv zb4DTK>buQeNfJ_W{6foPTFNUt>TEbpX|^2Qz5%N3;~C22jP)!3=Mr>v=h6B-$|Lbp zj`eFL0c3TQMiA=sOMvUrrGR%eo=P!oK5nz2{nAz)ui~!Y$#F_}gLb?-I`@xHcT#%X z$bs>q)JG?hQ!#rjcyW>r;B9H&QuVfv%wNOb;61;pf3J9>2#L}l#> zJW@HXwyU&1E}`Y9p{;(=`@%eS8W^XST@y4)tB|?}rq=@%uAgbXk}(r<#|jZqpBFeE8(`ln zj0%WMy1Y>VyY;}Tz3dgxp|?vK zpYQ~=vbOg#Irjsrywb@E|Ilw8-pbt>yS$ztk1=Ovf{)Pg8FwYb~nv+enX z5@I zM9mO(jMF6cf7-N1$99vv;1{&(a6YD;^0bmVA=EaHFWg8Ba_^q7aSx#l00mX zrkAu9qgn@-JmIv^cAB0Sq@g4B${S*&uN_cAB)%2yF@ z3%UK_lmoGlzW!mUQ(UTF9lZJX^EJ&1=;~j!B6M}?GVWN&dNuqtr7ZiBq$enAtjea` zk<4+Z!blCmyPnTjLk$#q{Q^^!(siI)?8sH?o|T;KK6esb4azke99xnWvAzi3n?u&! zOvqNmiEa9q7)tt0mzmh2<#C>`or{fDk4(LyHbv%Q+=*xHy7Zq%RN1{B zj~?a%BJjR&;QgUH={xr}Juu${ZAY+`R6mKE zSl4YSlsa2AkR(1H?pYKq=`DY0QHg2L9Oz&&R#how3KkhvFM z1$;S~+?%jnZd+g8vnDo-d~xHYe-AZt18mT59Rd%(ZDtxI#?x;$nfRjz9~#6xjT!;f zS8>Qn1zFd_?i!FTR8WVwf6exV@9@v*9#_Qu;pqbEuBO;^33_wX$0>gV({j$7`|J;_ zfzEL2Q#FfwF<&2O*>yMto( z#-M1lazmIgUB{WV3M;-_*f(M&u`aWpMUD0B4JYcD0cI0K^%e@U2aq2NX!X0n%#UVB zH5Z6CQ2qkvydg%UzpMQ7fSgFbQvz|oHIDDJ_+RjDsb#c_aX08tecowVuk|yDc7nkj zzgAxjFy%3@!{noCu`1ENYM7CxnCFRj{C_&)+nk2!Ce9DPHNQyjC+8OYBC^xVIxf;w z=Yb&~__QaE6o%&U%G(E5ZHlqLM<-E%CL(+3aW&Rwz-s7Q6D)92d$Jdmk~CzB_voAf z+NSR`h(r#vs>Vyez(JKjIO`)=91=1w`3!ctc;8MVsle4^P*KKs3kL5a)_-LCr=)&n zwl@}UWMWjk**c#ztqzs1i&7s#F$=UINH%Nssn0C41|do3PgshP;ANU?7iP*)oPOnq zqY#*;AsCi#^A9xKL@{6UXDsnEIZUG&Q(YG&Pse=Jq>C$wBfMx9&vVWWsFMpJ6DHE`75_{;5@(yWK`0^!BH5O_4 zy7VtJC2#z7c^mj`K9-QiY9?J=D)Df|H|)|j%Ie8~ zwa8o=#X(VP{GgLVo_)4k*z7ak4eYB3nmqL(scj45RR6s+JHMqdl>Obk;v3$qwhSl2 zjSo~Crvl*-`_1<0x79c2rMU&ryUp$H9i@lXr~xCHc9C8B$!`IlM0ec*FRa>fE=pm+ z&{}P4jOe&GaQ8XJY%$Mo&uzwMUlsU{E;44E z5vl%trnq4R8mrlHstDMH%FUT?54q#(C9h4o(|E2I z!iMBa-s6)S*L*jy)pSSdxJyU3``m`F#x1RMwgnuRUUAS$^6uk+frUKTy8l8L=Brzz z$2)I)z2jRepsl;E8aSU^lDHvT8#(7DKo!G z8qrU0_5?4RmasYg3nIHeWtx7fH_8^5PHV5n zL@!DC^T!F=gOUecEn(aASSk_GbcH`A&l}!eCUvY5TsIPpdX@`@93&@WRWU>w`<`&R zbDK2WTn4qdMN%9OXQ&H(c<(PXCP@0j8jtav4Ln4^)1=$Wg~-kV+K5So z04L#v#U5K<*?dnzqucH?`Nel^gpn!7h0 z$>URTeM5i(lERG8mMD3b-Dtt1sW5fOLziiX%kE@YHP8TNY25njq!`_6Ia=~A|A@sk z{xPxZS;h@u45M3sEnXSG%_}=oeLP}Ish>+6i)vLheD71|k5XRK;&I(k8Y#`>P!AHI zPx54)AFz}<(VxX`8^x`0qtV+*o?@aG;4&$OO7y@O_;4mM&`O4#J$$6c2WdqZ0>4f| Wg0s8;%SN#ue}j-6AQC`8LjE5bPn1dk literal 0 HcmV?d00001 diff --git a/sounds/vm-tooshort.gsm b/sounds/vm-tooshort.gsm new file mode 100755 index 0000000000000000000000000000000000000000..4038c2bed8b6b7f04346008b8ffad539c5ec1bfa GIT binary patch literal 2904 zcmV-e3#atg8+sT~Pyjh3a!Dh405=6WfFmt#*)3ThCl^LrCD888Ss7VCM1k!|WLkh)$(A)OwLr@fac1RQply6X zn5)y)MQ+_=!D%G1kP2ZzdJT=*OowE*Y;s39W}-eTcQ)kKoD?$EX#u-gfugNkA=jj~ zGy&A1DdciXSI@%2YW^hU*PM(vFb*45!X zr+Zn-xLl4%G+A!QrH#g4tu6(dwZ&0aO<`iSS18ryMGM?l31PW#c(Ja?h3tXf9Il9@ zmy(-nu?VPx?zZ*Qsbv>pu_wz(9mw5RXE@_4s}->bMr3KOqgyA<4RwLr)GJkAVY8^Y z8**00TPN<+a>$Td#U0&(CnrfAY6edGtv?*T>zOJhs6V1Ak6S@*$cH{8I>w| z8qn>fnkZW#K;>E~Y*`^W5t6oTS)jZta+eoZVQEb(n-bKZQzoKW#7Qh<0h%@GPuJFizCsvTh?ZD=D~j`ci_S`t-7i~Q*&BJvj~x0 zSqq)*OhnX{SkTqzY$8H)2(0bxG1YG-+LRqjp``{<*0vDrq2{|pl2qW;>qKqCX{ElT zZFr^6CQBLeR?C+u`6P|H++# zUQ zY+L45cf!InB7RvJz`_}~h}4$Xqf?UGZ(`38YsI0mqC7RRx(ux1Jti(O;p&0V+m$-1 z*lAo68f{`ItB(@`e_^?yi9IE%!br+bKh&b(X`T%^H`uFlPFlBNBGYjtdcdMbR+R?a z@S)k=jV8>R!HO=mU*IRjG8SLU$9FfrpmBZ;{m4NQjrk%3H zSA|@Y(SkiureifxRQppTR<4FZxT?l>uBp}^(;&6#!?1{%lexDLSq1fbGPvbig;7mv zH(Xz4pli`PRMX#u^25CZ8Hfk^&0$2RtE7&7XJ=1Lu|`*CBn?Wj)l}3Ujx&VKC7^qi zMBQt{%T1-Bvu|TlmrgVn=!Bo~Ri~!Y;C8b_aYM#Nb4POHVobhiH5r;C_jD@D(&t1* zBDJ{O(&2`41L+~jN~#Wga>A?IYRd`e!mji(*4uL7%3BawF47@|?a7)!X4G~_n$Dn; zqmssUW>DJ~G3*ko)~i+5n#wu#A|fuTDh0m(0O zLFSS~6y;TD$t03S`q&*b7EDkjs2q;S>{=oyS~0u2(n8qukRl9kLcd~7%Hq{pRO`%R zL$V^9Nn2+ET6s{#Y0TqWJ4}@vX98&4&%~J1Uv2Xfy#ofXhE;rHLR5!Zm#k%Br3n&V z)$t|iB5e@m)1PH`i)5o>_L-)EaRpCuQ^wL{;t+e-&n3pfw9!#sp3|XCdzr?;Kv-ZIVEDie&VW45!BpU=3&TSq}xoSAV{>eMI_kc zLy{zFAXwaLO52>ExgCbJBw*l1+;T+PxL`KYNVwtIDP&^`Z{)`$lfxlc#LgrxT>@By zhh=V89GF4IzNtSR+O^F}hP0x;T!qJb@j{ALgF}OLCL1GVXVY9GSA3#5UfE|EQ&*zn zYcB(^KH zq@)xVdZjng-;ZlSTBD>zO6{z&!z9SbcP*}i#~Ncj6|Dle>qzI+)81`s*;k^-q>cdY zSK`ZSu(=;sp{Fcux+GUZS#6R)Nzg2`>1N#b<7ppTO^2Ebx{-K}+VjjtQc%MM z12)AY>VsONZu=yUB+JuJT~%bow;W#k9Rf-EoQ3TwZ0>_Y3 zWy#@|_FUQZz<~h`A{noZi%eyjxb5nAcgA!Qmt?FXoBWY z2KL)TO?1xa+ap5~+TM!ETaomu(&UuiOHjw?+JW^drswF|f#qVUMcU(#JgZq`&5~^n z+0v=2n}SxwR=bU&Z?J?8)T&02T_fYFekT-L0x0t5Jfza7%S*zz#31E$OIx`@7>Zq} ztGh!tB2jZF zsh8!tq}M4!N~q^TyGv|0Jg(z<^i~+soTNmW{#urCBFh_9l6u#yLdt1?!gQ{O!tm^b zItzAJD}ux7({3W4e?rls(wh|6ZyQSCbi*o$tHmsvB24IEv>NP!UD~*5BXpvq=^^G2PgJIUf)-VdLF3qG16OKTfyuN~5+0htcQ&s%8;0Su)A89I>>%YcHnSkvZCXX+ zk^sJLZZzc500gN;!u7NuNhEepBilOY@kV1mbm2Pz$Y6`$con8S=C|c05p?wNaWT4NhFcj-Ns-$B$3G*(4a>gZpNJS Cjl-h= literal 0 HcmV?d00001 diff --git a/sounds/vm-toreply.gsm b/sounds/vm-toreply.gsm new file mode 100755 index 0000000000000000000000000000000000000000..e770846b6e686b28d6985cd39e1d4d4bef1b4de2 GIT binary patch literal 4422 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 literal 0 HcmV?d00001 diff --git a/sounds/vm-torerecord.gsm b/sounds/vm-torerecord.gsm new file mode 100755 index 0000000000000000000000000000000000000000..e48397e4483bbd9255a5ef7a0b9d441b01727367 GIT binary patch literal 5379 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 z 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