[Asterisk-cvs] asterisk/apps app_voicemail.c,1.81,1.82
jeremy at lists.digium.com
jeremy at lists.digium.com
Thu Apr 29 22:01:14 CDT 2004
Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv19662
Modified Files:
app_voicemail.c
Log Message:
rollback bug#77..the right fix immanent
Index: app_voicemail.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- app_voicemail.c 30 Apr 2004 01:18:26 -0000 1.81
+++ app_voicemail.c 30 Apr 2004 02:08:12 -0000 1.82
@@ -1078,7 +1078,7 @@
return -1;
}
ast_dsp_set_threshold(sildet, silencethreshold);
-
+
if (maxsilence > 0) {
rfmt = chan->readformat;
res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
@@ -1149,7 +1149,7 @@
/* stop recording with any digit */
if (option_verbose > 2)
ast_verbose( VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass);
- res = 't';
+ res = f->subclass;
outmsg = 2;
ast_frfree(f);
break;
@@ -1221,7 +1221,7 @@
if (outmsg) {
if (outmsg > 1) {
/* Let them know it worked */
- ast_streamfile(chan, "auth-thankyou", chan->language);
+ ast_streamfile(chan, "vm-msgsaved", chan->language);
ast_waitstream(chan, "");
}
}
@@ -1289,7 +1289,7 @@
return -1;
}
ast_dsp_set_threshold(sildet, silencethreshold);
-
+
if (maxsilence > 0) {
rfmt = chan->readformat;
res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
@@ -1705,7 +1705,7 @@
static int say_and_wait(struct ast_channel *chan, int num)
{
int d;
- d = ast_say_number(chan, num, AST_DIGIT_ANY, chan->language);
+ d = ast_say_number(chan, num, AST_DIGIT_ANY, chan->language, (char *) NULL);
return d;
}
@@ -2269,7 +2269,7 @@
if (d)
return d;
for (x = start; x< 5; x++) {
- if ((d = ast_say_number(chan, x, AST_DIGIT_ANY, chan->language)))
+ if ((d = ast_say_number(chan, x, AST_DIGIT_ANY, chan->language, (char *) NULL)))
return d;
d = play_and_wait(chan, "vm-for");
if (d)
@@ -2308,7 +2308,7 @@
int cmd = 0;
int retries = 0;
- while((cmd >= 0) && (cmd != 't') && (cmd != '*')) {
+ while((cmd >= 0) && (cmd != 't') && (cmd != '#')) {
if (cmd)
retries = 0;
switch (cmd) {
@@ -2323,14 +2323,12 @@
case '2':
cmd = 't';
break;
- case '*':
- cmd = '*';
+ case '#':
+ cmd = '#';
break;
default:
cmd = play_and_wait(chan,"vm-forwardoptions");
if (!cmd)
- cmd = play_and_wait(chan,"vm-starmain");
- if (!cmd)
cmd = ast_waitfordigit(chan,6000);
if (!cmd)
retries++;
@@ -2400,83 +2398,79 @@
return res;
vmtmp = extensions;
cmd = vm_forwardoptions(chan, sender, dir, curmsg, vmfmts, context);
- if (!cmd) {
- while(!res && vmtmp) {
- /* if (play_and_wait(chan, "vm-savedto"))
- break;
- */
- snprintf(todir, sizeof(todir), "%s/voicemail/%s/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
- snprintf(sys, sizeof(sys), "mkdir -p %s\n", todir);
- ast_log(LOG_DEBUG, sys);
- ast_safe_system(sys);
-
- todircount = count_messages(todir);
- strncpy(tmp, fmt, sizeof(tmp) - 1);
- stringp = tmp;
- while((s = strsep(&stringp, "|"))) {
- /* XXX This is a hack -- we should use build_filename or similar XXX */
- if (!strcasecmp(s, "wav49"))
- s = "WAV";
- snprintf(sys, sizeof(sys), "cp %s/msg%04d.%s %s/msg%04d.%s\n", dir, curmsg, s, todir, todircount, s);
- ast_log(LOG_DEBUG, sys);
- ast_safe_system(sys);
- }
- snprintf(sys, sizeof(sys), "cp %s/msg%04d.txt %s/msg%04d.txt\n", dir, curmsg, todir, todircount);
+
+ while(!res && vmtmp) {
+ /* if (play_and_wait(chan, "vm-savedto"))
+ break;
+ */
+ snprintf(todir, sizeof(todir), "%s/voicemail/%s/%s/INBOX", (char *)ast_config_AST_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
+ snprintf(sys, sizeof(sys), "mkdir -p %s\n", todir);
+ ast_log(LOG_DEBUG, sys);
+ ast_safe_system(sys);
+
+ todircount = count_messages(todir);
+ strncpy(tmp, fmt, sizeof(tmp) - 1);
+ stringp = tmp;
+ while((s = strsep(&stringp, "|"))) {
+ /* XXX This is a hack -- we should use build_filename or similar XXX */
+ if (!strcasecmp(s, "wav49"))
+ s = "WAV";
+ snprintf(sys, sizeof(sys), "cp %s/msg%04d.%s %s/msg%04d.%s\n", dir, curmsg, s, todir, todircount, s);
ast_log(LOG_DEBUG, sys);
ast_safe_system(sys);
- snprintf(fn, sizeof(fn), "%s/msg%04d", todir,todircount);
-
- /* load the information on the source message so we can send an e-mail like a new message */
- snprintf(miffile, sizeof(miffile), "%s/msg%04d.txt", dir, curmsg);
- if ((mif=ast_load(miffile))) {
-
- /* set callerid and duration variables */
- snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid"));
- s = ast_variable_retrieve(mif, NULL, "duration");
- if (s)
- duration = atol(s);
- else
- duration = 0;
- if (strlen(vmtmp->email)) {
- int attach_user_voicemail = attach_voicemail;
- char *myserveremail = serveremail;
- if (vmtmp->attach > -1)
- attach_user_voicemail = vmtmp->attach;
- if (strlen(vmtmp->serveremail))
- myserveremail = vmtmp->serveremail;
- sendmail(myserveremail, vmtmp, todircount, vmtmp->mailbox, callerid, fn, tmp, duration, attach_user_voicemail);
- }
-
- if (strlen(vmtmp->pager)) {
- char *myserveremail = serveremail;
- if (strlen(vmtmp->serveremail))
- myserveremail = vmtmp->serveremail;
- sendpage(myserveremail, vmtmp->pager, todircount, vmtmp->mailbox, callerid, duration, vmtmp);
- }
-
- ast_destroy(mif); /* or here */
- }
- /* Leave voicemail for someone */
- manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
- run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
-
- saved_messages++;
- vmfree = vmtmp;
- vmtmp = vmtmp->next;
- free_user(vmfree);
}
- if (saved_messages > 0) {
- /* give confirmatopm that the message was saved */
- /* commented out since we can't forward batches yet
- if (saved_messages == 1)
- res = play_and_wait(chan, "vm-message");
+ snprintf(sys, sizeof(sys), "cp %s/msg%04d.txt %s/msg%04d.txt\n", dir, curmsg, todir, todircount);
+ ast_log(LOG_DEBUG, sys);
+ ast_safe_system(sys);
+ snprintf(fn, sizeof(fn), "%s/msg%04d", todir,todircount);
+
+ /* load the information on the source message so we can send an e-mail like a new message */
+ snprintf(miffile, sizeof(miffile), "%s/msg%04d.txt", dir, curmsg);
+ if ((mif=ast_load(miffile))) {
+
+ /* set callerid and duration variables */
+ snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid"));
+ s = ast_variable_retrieve(mif, NULL, "duration");
+ if (s)
+ duration = atol(s);
else
- res = play_and_wait(chan, "vm-messages");
- if (!res)
- res = play_and_wait(chan, "vm-saved"); */
- if (!res)
- res = play_and_wait(chan, "vm-msgsaved");
+ duration = 0;
+ if (strlen(vmtmp->email)) {
+ int attach_user_voicemail = attach_voicemail;
+ char *myserveremail = serveremail;
+ if (vmtmp->attach > -1)
+ attach_user_voicemail = vmtmp->attach;
+ if (strlen(vmtmp->serveremail))
+ myserveremail = vmtmp->serveremail;
+ sendmail(myserveremail, vmtmp, todircount, vmtmp->mailbox, callerid, fn, tmp, duration, attach_user_voicemail);
+ }
+
+ if (strlen(vmtmp->pager)) {
+ char *myserveremail = serveremail;
+ if (strlen(vmtmp->serveremail))
+ myserveremail = vmtmp->serveremail;
+ sendpage(myserveremail, vmtmp->pager, todircount, vmtmp->mailbox, callerid, duration, vmtmp);
+ }
+
+ ast_destroy(mif); /* or here */
}
+ /* Leave voicemail for someone */
+ manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
+ run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
+
+ saved_messages++;
+ vmfree = vmtmp;
+ vmtmp = vmtmp->next;
+ free_user(vmfree);
+ }
+ if (saved_messages > 0) {
+ /* give confirmatopm that the message was saved */
+ if (saved_messages == 1)
+ res = play_and_wait(chan, "vm-message");
+ else
+ res = play_and_wait(chan, "vm-messages");
+ if (!res)
+ res = play_and_wait(chan, "vm-saved");
}
return res ? res : cmd;
}
@@ -2639,7 +2633,7 @@
res = wait_file2(chan, vms, "vm-message");
if (msg && (msg != vms->lastmsg)) {
if (!res)
- res = ast_say_number(chan, msg + 1, AST_DIGIT_ANY, chan->language);
+ res = ast_say_number(chan, msg + 1, AST_DIGIT_ANY, chan->language, (char *) NULL);
}
}
More information about the svn-commits
mailing list