[commit] r8655 - in freeswitch/trunk/src: . mod/applications/mod_voicemail
Author: mikej Date: Sun May 25 22:51:34 2008 New Revision: 8655 Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c freeswitch/trunk/src/switch_utils.c Log: merge MODAPP-88: Fix Email with no Attachement; Allow Email & Local VM Storage; Add Notify Only Email; Extra, note about missing prompts. Added param "vm-email-only" to make voicemail sent by email only (previously default behavior Added param "vm-mailto-notify" to allow sending an second email to an mobile or other device for notification only Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c (original) +++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c Sun May 25 22:51:34 2008 @@ -952,8 +952,10 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "failed to delete file [%s]\n", file_path); } if (switch_channel_ready(channel)) { + /* TODO Rel 1.0 : Add Playback of Prompt <message is too short, please rerecord your message>, then go back at record_file */ goto record_file; } else { + status = SWITCH_STATUS_BREAK; goto end; } } else { @@ -1741,7 +1743,9 @@ switch_file_handle_t fh = { 0 }; switch_input_args_t args = { 0 }; char *email_vm = NULL; + char *email_vm_notify = NULL; int send_mail = 0; + int send_mail_only = 0; cc_t cc = { 0 }; char *read_flags = NORMAL_FLAG_STRING; int priority = 3; @@ -1804,8 +1808,12 @@ if (!strcasecmp(var, "vm-mailto")) { email_vm = switch_core_session_strdup(session, val); + } else if (!strcasecmp(var, "vm-mailto-notify")) { + email_vm_notify = switch_core_session_strdup(session, val); } else if (!strcasecmp(var, "email-addr")) { email_addr = val; + } else if (!strcasecmp(var, "vm-email-only")) { + send_mail_only = switch_true(val); } else if (!strcasecmp(var, "vm-email-all-messages")) { send_mail = switch_true(val); } else if (!strcasecmp(var, "vm-delete-file")) { @@ -1944,7 +1952,7 @@ } } - if (!send_mail && switch_file_exists(file_path, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { + if (!send_mail_only && switch_file_exists(file_path, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { char *usql; switch_event_t *event; char *mwi_id = NULL; @@ -1979,7 +1987,7 @@ end: - if (send_mail && !switch_strlen_zero(email_vm)) { + if (send_mail && !switch_strlen_zero(email_vm) && switch_file_exists(file_path, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) { switch_event_t *event; char *from; char *body; @@ -2080,10 +2088,13 @@ } else { switch_simple_email(email_vm, from, header_string, body, NULL); } + if (!switch_strlen_zero(email_vm_notify)) { + switch_simple_email(email_vm_notify, from, header_string, body, NULL); + } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s\n", email_vm); switch_safe_free(body); - if (email_delete) { + if (email_delete && send_mail_only) { if (unlink(file_path) != 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "failed to delete file [%s]\n", file_path); } Modified: freeswitch/trunk/src/switch_utils.c ============================================================================== --- freeswitch/trunk/src/switch_utils.c (original) +++ freeswitch/trunk/src/switch_utils.c Sun May 25 22:51:34 2008 @@ -373,11 +373,10 @@ if ((ifd = open(file, O_RDONLY)) < 1) { return SWITCH_FALSE; } - - switch_snprintf(buf, B64BUFFLEN, "MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"%s\"\n", bound); - if (!write_buf(fd, buf)) { - return SWITCH_FALSE; - } + } + switch_snprintf(buf, B64BUFFLEN, "MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"%s\"\n", bound); + if (!write_buf(fd, buf)) { + return SWITCH_FALSE; } if (headers && !write_buf(fd, headers)) @@ -386,15 +385,13 @@ if (!write_buf(fd, "\n\n")) return SWITCH_FALSE; - if (file) { - if (body && switch_stristr("content-type", body)) { - switch_snprintf(buf, B64BUFFLEN, "--%s\n", bound); - } else { - switch_snprintf(buf, B64BUFFLEN, "--%s\nContent-Type: text/plain\n\n", bound); - } - if (!write_buf(fd, buf)) - return SWITCH_FALSE; - } + if (body && switch_stristr("content-type", body)) { + switch_snprintf(buf, B64BUFFLEN, "--%s\n", bound); + } else { + switch_snprintf(buf, B64BUFFLEN, "--%s\nContent-Type: text/plain\n\n", bound); + } + if (!write_buf(fd, buf)) + return SWITCH_FALSE; if (body) { if (!write_buf(fd, body)) { @@ -456,11 +453,9 @@ } - if (file) { - switch_snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound); - if (!write_buf(fd, buf)) - return SWITCH_FALSE; - } + switch_snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound); + if (!write_buf(fd, buf)) + return SWITCH_FALSE; } if (fd) { @@ -478,7 +473,6 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "failed to delete file [%s]\n", filename); } - if (file) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed file [%s] to [%s]\n", filename, to); } else {
participants (1)
-
Freeswitch SVN