Freeswitch-svn
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
October 2007
- 9 participants
- 344 discussions
12 Oct '07
Author: mikej
Date: Fri Oct 12 18:08:52 2007
New Revision: 5856
Modified:
freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
Log:
fix build
Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile (original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile Fri Oct 12 18:08:52 2007
@@ -1,3 +1,3 @@
BASE=../../../..
-include /usr/src/freeswitch.trunk/build/modmake.rules
+include $(BASE)/build/modmake.rules
LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
1
0
[commit] r5855 - in freeswitch/trunk: conf src src/mod/applications/mod_voicemail src/mod/endpoints/mod_sofia
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: anthm
Date: Fri Oct 12 18:08:30 2007
New Revision: 5855
Modified:
freeswitch/trunk/conf/voicemail.conf.xml
freeswitch/trunk/conf/voicemail_en_tts.xml
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
freeswitch/trunk/src/switch_ivr_play_say.c
Log:
add urgentness
Modified: freeswitch/trunk/conf/voicemail.conf.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail.conf.xml (original)
+++ freeswitch/trunk/conf/voicemail.conf.xml Fri Oct 12 18:08:30 2007
@@ -23,6 +23,10 @@
<param name="delete-file-key" value="7"/>
<param name="undelete-file-key" value="8"/>
<param name="email-key" value="4"/>
+ <param name="pause-key" value="0"/>
+ <param name="restart-key" value="1"/>
+ <param name="ff-key" value="6"/>
+ <param name="rew-key" value="4"/>
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
</profile>
</profiles>
Modified: freeswitch/trunk/conf/voicemail_en_tts.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail_en_tts.xml (original)
+++ freeswitch/trunk/conf/voicemail_en_tts.xml Fri Oct 12 18:08:30 2007
@@ -47,23 +47,14 @@
</input>
</macro>
- <macro name="voicemail_new_message_count">
- <input pattern="(.*)">
+ <macro name="voicemail_message_count">
+ <input pattern="^([^:]+):([^:]+):{0,1}(.*)">
<match>
- <action function="speak-text" data="you have $1 new messages in folder ${voicemail_current_folder}"/>
+ <action function="speak-text" data="you have $1 $2 $3 messages in folder ${voicemail_current_folder}"/>
</match>
</input>
</macro>
- <macro name="voicemail_saved_message_count">
- <input pattern="(.*)">
- <match>
- <action function="speak-text" data="you have $1 saved messages in folder ${voicemail_current_folder}"/>
- </match>
- </input>
- </macro>
-
-
<macro name="voicemail_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
@@ -102,6 +93,15 @@
</input>
</macro>
+ <macro name="voicemail_record_urgent_check">
+ <input pattern="^([0-9#*]):([0-9#*])$">
+ <match>
+ <action function="speak-text"
+ data="press $1 to mark this message urgent or press $2 to continue"/>
+ </match>
+ </input>
+ </macro>
+
<macro name="voicemail_listen_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
@@ -202,7 +202,7 @@
<macro name="voicemail_say_date">
<input pattern="^(.*)$">
<match>
- <action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %m %p)"/>
+ <action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %M %p)"/>
</match>
</input>
</macro>
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 Fri Oct 12 18:08:30 2007
@@ -72,6 +72,11 @@
char delete_file_key[2];
char undelete_file_key[2];
char email_key[2];
+ char pause_key[2];
+ char restart_key[2];
+ char ff_key[2];
+ char rew_key[2];
+ char urgent_key[2];
char file_ext[10];
char *tone_spec;
uint32_t digit_timeout;
@@ -200,7 +205,8 @@
" cid_number VARCHAR(255),\n"
" in_folder VARCHAR(255),\n"
" file_path VARCHAR(255),\n"
- " flags VARCHAR(255)\n"
+ " flags VARCHAR(255),\n"
+ " read_flags VARCHAR(255)\n"
");\n";
@@ -264,6 +270,11 @@
char *delete_file_key = "7";
char *undelete_file_key = "8";
char *email_key = "4";
+ char *pause_key = "0";
+ char *restart_key = "1";
+ char *ff_key = "6";
+ char *rew_key = "4";
+ char *urgent_key = "*";
char *tone_spec = "%(1000, 0, 640)";
char *file_ext = "wav";
@@ -303,6 +314,16 @@
undelete_file_key = val;
} else if (!strcasecmp(var, "email-key") && !switch_strlen_zero(val)) {
email_key = val;
+ } else if (!strcasecmp(var, "pause-key") && !switch_strlen_zero(val)) {
+ pause_key = val;
+ } else if (!strcasecmp(var, "restart-key") && !switch_strlen_zero(val)) {
+ restart_key = val;
+ } else if (!strcasecmp(var, "ff-key") && !switch_strlen_zero(val)) {
+ ff_key = val;
+ } else if (!strcasecmp(var, "rew-key") && !switch_strlen_zero(val)) {
+ rew_key = val;
+ } else if (!strcasecmp(var, "urgent-key") && !switch_strlen_zero(val)) {
+ urgent_key = val;
} else if (!strcasecmp(var, "file-extension")) {
file_ext = val;
} else if (!strcasecmp(var, "tone-spec")) {
@@ -410,6 +431,12 @@
*profile->delete_file_key = *delete_file_key;
*profile->undelete_file_key = *undelete_file_key;
*profile->email_key = *email_key;
+ *profile->pause_key = *pause_key;
+ *profile->restart_key = *restart_key;
+ *profile->ff_key = *ff_key;
+ *profile->rew_key = *rew_key;
+ *profile->urgent_key = *urgent_key;
+
profile->tone_spec = switch_core_strdup(globals.pool, tone_spec);
switch_copy_string(profile->file_ext, file_ext, sizeof(profile->file_ext));
switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, globals.pool);
@@ -451,6 +478,13 @@
}
+struct call_control {
+ vm_profile_t *profile;
+ switch_file_handle_t *fh;
+ char buf[4];
+};
+typedef struct call_control cc_t;
+
static switch_status_t control_playback(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen)
{
@@ -459,48 +493,48 @@
case SWITCH_INPUT_TYPE_DTMF:
{
char *dtmf = (char *) input;
- switch_file_handle_t *fh = (switch_file_handle_t *) buf;
+ cc_t *cc = (cc_t *) buf;
+ switch_file_handle_t *fh = cc->fh;
uint32_t pos = 0;
-
- switch(*dtmf) {
- case '0':
- {
- if (switch_test_flag(fh, SWITCH_FILE_PAUSE)) {
- switch_clear_flag(fh, SWITCH_FILE_PAUSE);
- } else {
- switch_set_flag(fh, SWITCH_FILE_PAUSE);
- }
- return SWITCH_STATUS_SUCCESS;
- }
- break;
- case '1':
- {
- unsigned int pos = 0;
- fh->speed = 0;
- switch_core_file_seek(fh, &pos, 0, SEEK_SET);
- return SWITCH_STATUS_SUCCESS;
- }
- break;
- case '6':
- {
- int samps = 24000;
- switch_core_file_seek(fh, &pos, samps, SEEK_CUR);
- return SWITCH_STATUS_SUCCESS;
- }
- break;
- case '4':
- {
- int samps = 24000;
- switch_core_file_seek(fh, &pos, fh->pos - samps, SEEK_SET);
- return SWITCH_STATUS_SUCCESS;
- }
- break;
- case '#':
+
+ if (*dtmf == *cc->profile->delete_file_key || *dtmf == *cc->profile->save_file_key) {
+ *cc->buf = *dtmf;
return SWITCH_STATUS_BREAK;
-
- default:
+ }
+ if (!fh) {
return SWITCH_STATUS_SUCCESS;
}
+ if (*dtmf == *cc->profile->pause_key) {
+ if (switch_test_flag(fh, SWITCH_FILE_PAUSE)) {
+ switch_clear_flag(fh, SWITCH_FILE_PAUSE);
+ } else {
+ switch_set_flag(fh, SWITCH_FILE_PAUSE);
+ }
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (*dtmf == *cc->profile->restart_key) {
+ unsigned int pos = 0;
+ fh->speed = 0;
+ switch_core_file_seek(fh, &pos, 0, SEEK_SET);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (*dtmf == *cc->profile->ff_key) {
+ int samps = 24000;
+ switch_core_file_seek(fh, &pos, samps, SEEK_CUR);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (*dtmf == *cc->profile->rew_key) {
+ int samps = 24000;
+ switch_core_file_seek(fh, &pos, fh->pos - samps, SEEK_SET);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
+ if (*dtmf == *cc->profile->terminator_key) {
+ return SWITCH_STATUS_BREAK;
+ }
}
break;
default:
@@ -554,6 +588,7 @@
#define VM_RECORD_NAME_MACRO "voicemail_record_name"
#define VM_LISTEN_FILE_CHECK_MACRO "voicemail_listen_file_check"
#define VM_RECORD_FILE_CHECK_MACRO "voicemail_record_file_check"
+#define VM_RECORD_URGENT_CHECK_MACRO "voicemail_record_urgent_check"
#define VM_MENU_MACRO "voicemail_menu"
#define VM_CONFIG_MENU_MACRO "voicemail_config_menu"
#define VM_ENTER_ID_MACRO "voicemail_enter_id"
@@ -562,8 +597,8 @@
#define VM_ABORT_MACRO "voicemail_abort"
#define VM_HELLO_MACRO "voicemail_hello"
#define VM_GOODBYE_MACRO "voicemail_goodbye"
-#define VM_NEW_MESSAGE_COUNT_MACRO "voicemail_new_message_count"
-#define VM_SAVED_MESSAGE_COUNT_MACRO "voicemail_saved_message_count"
+#define VM_MESSAGE_COUNT_MACRO "voicemail_message_count"
+
static switch_status_t vm_macro_get(switch_core_session_t *session,
@@ -585,7 +620,7 @@
assert(channel != NULL);
if (buf && buflen) {
- *buf = '\0';
+ memset(buf, 0, buflen);
args.input_callback = cancel_on_dtmf;
args.buf = buf;
args.buflen = sizeof(buf);
@@ -660,6 +695,7 @@
switch_input_args_t args = { 0 };
char term;
char input[10] = "" , key_buf[80] = "";
+ cc_t cc = { 0 };
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
@@ -696,14 +732,24 @@
play_file:
memset(&fh, 0, sizeof(fh));
args.input_callback = control_playback;
- args.buf = &fh;
+ memset(&cc, 0, sizeof(cc));
+ cc.profile = profile;
+ cc.fh = &fh;
+ args.buf = &cc;
switch_ivr_play_file(session, &fh, file_path, &args);
while(switch_channel_ready(channel)) {
- status = vm_macro_get(session, VM_RECORD_FILE_CHECK_MACRO,
- key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
-
+ if (*cc.buf) {
+ *input = *cc.buf;
+ *(input+1) = '\0';
+ status = SWITCH_STATUS_SUCCESS;
+ *cc.buf = '\0';
+ } else {
+ status = vm_macro_get(session, VM_RECORD_FILE_CHECK_MACRO,
+ key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
+ }
+
if (!strcmp(input, profile->listen_file_key)) {
goto play_file;
} else if (!strcmp(input, profile->record_file_key)) {
@@ -732,6 +778,7 @@
char in_folder[255];
char file_path[255];
char flags[255];
+ char read_flags[255];
char *email;
int index;
int want;
@@ -757,6 +804,7 @@
switch_copy_string(cbt->in_folder, argv[7], 255);
switch_copy_string(cbt->file_path, argv[8], 255);
switch_copy_string(cbt->flags, argv[9], 255);
+ switch_copy_string(cbt->read_flags, argv[10], 255);
return -1;
@@ -771,6 +819,7 @@
char term;
char input[10] = "" , key_buf[80] = "";
switch_file_handle_t fh = { 0 };
+ cc_t cc = { 0 };
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
@@ -787,20 +836,37 @@
profile->email_key);
- snprintf(input, sizeof(input), "%s:%d", cbt->type == MSG_NEW ? "new" : "saved", cbt->index);
- TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_MESSAGE_NUMBER_MACRO, input, NULL, NULL));
- TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_DATE_MACRO, cbt->created_epoch, NULL, NULL));
+ snprintf(input, sizeof(input), "%s:%d", cbt->type == MSG_NEW ? "new" : "saved", cbt->want+1);
+ memset(&cc, 0, sizeof(cc));
+ cc.profile = profile;
+ args.buf = &cc;
+ args.input_callback = control_playback;
+ TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_MESSAGE_NUMBER_MACRO, input, NULL, &args));
+ if (!*cc.buf) {
+ TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_DATE_MACRO, cbt->created_epoch, NULL, &args));
+ }
play_file:
- memset(&fh, 0, sizeof(fh));
- args.input_callback = control_playback;
- args.buf = &fh;
- TRY_CODE(switch_ivr_play_file(session, NULL, cbt->file_path, &args));
-
+ if (!*cc.buf) {
+ memset(&fh, 0, sizeof(fh));
+ args.input_callback = control_playback;
+ memset(&cc, 0, sizeof(cc));
+ cc.profile = profile;
+ cc.fh = &fh;
+ args.buf = &cc;
+ TRY_CODE(switch_ivr_play_file(session, NULL, cbt->file_path, &args));
+ }
+
if (switch_channel_ready(channel)) {
- status = vm_macro_get(session, VM_LISTEN_FILE_CHECK_MACRO,
- key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
-
+ if (*cc.buf) {
+ *input = *cc.buf;
+ *(input+1) = '\0';
+ status = SWITCH_STATUS_SUCCESS;
+ *cc.buf = '\0';
+ } else {
+ status = vm_macro_get(session, VM_LISTEN_FILE_CHECK_MACRO,
+ key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
+ }
if (!strcmp(input, profile->listen_file_key)) {
goto play_file;
} else if (!strcmp(input, profile->delete_file_key) || !strcmp(input, profile->email_key)) {
@@ -810,11 +876,16 @@
if (!strcmp(input, profile->email_key) && !switch_strlen_zero(cbt->email)) {
switch_event_t *event;
char *from = switch_core_session_sprintf(session, "%s@%s", cbt->user, cbt->domain);
- char *headers = switch_core_session_sprintf(session, "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s",
- cbt->user, cbt->domain, cbt->cid_name, cbt->cid_number);
-
+ char *headers;
char *body;
-
+ int priority = 3;
+
+ if (!strcasecmp(cbt->read_flags, "urgent")) {
+ priority = 1;
+ }
+ headers = switch_core_session_sprintf(session,
+ "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s\nX-Priority: %d",
+ cbt->user, cbt->domain, cbt->cid_name, cbt->cid_number, priority);
if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Message-Type", "forwarded-voicemail");
@@ -847,7 +918,8 @@
return status;
}
-static void message_count(vm_profile_t *profile, char *myid, char *domain_name, char *myfolder, int *total_new_messages, int *total_saved_messages)
+static void message_count(vm_profile_t *profile, char *myid, char *domain_name, char *myfolder,
+ int *total_new_messages, int *total_saved_messages, int *total_new_urgent_messages, int *total_saved_urgent_messages)
{
char msg_count[80] = "";
callback_t cbt = { 0 };
@@ -866,12 +938,30 @@
*total_new_messages = atoi(msg_count);
snprintf(sql, sizeof(sql),
+ "select count(*) from voicemail_data where user='%s' and domain='%s' and in_folder='%s' and read_epoch=0 and read_flags='urgent'",
+ myid,
+ domain_name,
+ myfolder);
+ vm_execute_sql_callback(profile, profile->mutex, sql, sql2str_callback, &cbt);
+ *total_new_urgent_messages = atoi(msg_count);
+
+ snprintf(sql, sizeof(sql),
"select count(*) from voicemail_data where user='%s' and domain='%s' and in_folder='%s' and read_epoch!=0",
myid,
domain_name,
myfolder);
vm_execute_sql_callback(profile, profile->mutex, sql, sql2str_callback, &cbt);
*total_saved_messages = atoi(msg_count);
+
+
+ snprintf(sql, sizeof(sql),
+ "select count(*) from voicemail_data where user='%s' and domain='%s' and in_folder='%s' and read_epoch!=0 and read_flags='urgent'",
+ myid,
+ domain_name,
+ myfolder);
+ vm_execute_sql_callback(profile, profile->mutex, sql, sql2str_callback, &cbt);
+ *total_saved_urgent_messages = atoi(msg_count);
+
}
@@ -891,6 +981,8 @@
char *dir_path = NULL, *file_path = NULL;
int total_new_messages = 0;
int total_saved_messages = 0;
+ int total_new_urgent_messages = 0;
+ int total_saved_urgent_messages = 0;
int heard_auto_saved = 0, heard_auto_new = 0;
char *email_vm = NULL;
channel = switch_core_session_get_channel(session);
@@ -918,6 +1010,8 @@
{
total_new_messages = 0;
total_saved_messages = 0;
+ total_new_urgent_messages = 0;
+ total_saved_urgent_messages = 0;
heard_auto_saved = 0;
heard_auto_new = 0;
play_msg_type = MSG_NONE;
@@ -936,22 +1030,41 @@
{
char msg_count[80] = "";
switch_channel_set_variable(channel, "voicemail_current_folder", myfolder);
- message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages);
- snprintf(msg_count, sizeof(msg_count), "%d", total_new_messages);
- if ((status = switch_ivr_phrase_macro(session, VM_NEW_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
- goto end;
- }
+ message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages,
+ &total_new_urgent_messages, &total_saved_urgent_messages);
+ if (total_new_urgent_messages > 0) {
+ snprintf(msg_count, sizeof(msg_count), "%d:urgent:new", total_new_messages);
+ if ((status = switch_ivr_phrase_macro(session, VM_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
+ goto end;
+ }
+ }
+ if (total_new_messages > 0) {
+ snprintf(msg_count, sizeof(msg_count), "%d:new", total_new_messages);
+ if ((status = switch_ivr_phrase_macro(session, VM_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
+ goto end;
+ }
+ }
+
if (!heard_auto_new && total_new_messages > 0) {
heard_auto_new = 1;
play_msg_type = MSG_NEW;
vm_check_state = VM_CHECK_PLAY_MESSAGES;
continue;
}
+
+ if (total_saved_urgent_messages > 0) {
+ snprintf(msg_count, sizeof(msg_count), "%d:urgent:saved", total_saved_messages);
+ if ((status = switch_ivr_phrase_macro(session, VM_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
+ goto end;
+ }
+ }
- snprintf(msg_count, sizeof(msg_count), "%d", total_saved_messages);
- if ((status = switch_ivr_phrase_macro(session, VM_SAVED_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
- goto end;
+ if (total_saved_messages > 0) {
+ snprintf(msg_count, sizeof(msg_count), "%d:saved", total_saved_messages);
+ if ((status = switch_ivr_phrase_macro(session, VM_MESSAGE_COUNT_MACRO, msg_count, NULL, NULL)) != SWITCH_STATUS_SUCCESS) {
+ goto end;
+ }
}
if (!heard_auto_saved && total_saved_messages > 0) {
@@ -969,7 +1082,8 @@
listen_callback_t cbt;
char sql[256];
int cur_message, total_messages;
- message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages);
+ message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages,
+ &total_new_urgent_messages, &total_saved_urgent_messages);
memset(&cbt, 0, sizeof(cbt));
cbt.email = email_vm;
switch(play_msg_type) {
@@ -1018,6 +1132,7 @@
char key_buf[80] = "";
callback_t cbt = { 0 };
char msg_count[80] = "";
+ cc_t cc = { 0 };
cbt.buf = msg_count;
cbt.len = sizeof(msg_count);
sql = switch_mprintf("select count(*) from voicemail_prefs where user='%q' and domain = '%q'", myid, domain_name);
@@ -1060,7 +1175,10 @@
switch_file_handle_t fh = { 0 };
memset(&fh, 0, sizeof(fh));
args.input_callback = control_playback;
- args.buf = &fh;
+ memset(&cc, 0, sizeof(cc));
+ cc.profile = profile;
+ cc.fh = &fh;
+ args.buf = &cc;
status = switch_ivr_play_file(session, NULL, file_path, &args);
}
if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) {
@@ -1288,6 +1406,9 @@
switch_input_args_t args = { 0 };
char *email_vm = NULL;
int send_mail = 0;
+ cc_t cc = { 0 };
+ char *read_flags = "";
+ int priority = 3;
memset(&cbt, 0, sizeof(cbt));
if (!(profile = switch_core_hash_find(globals.profile_hash, profile_name))) {
@@ -1317,7 +1438,7 @@
int ok = 1;
char *xtra = switch_mprintf("mailbox=%s", id);
switch_xml_t x_domain, x_domain_root, x_user, x_params, x_param;
-
+
assert(xtra);
x_user = x_domain = x_domain_root = NULL;
if (switch_xml_locate_user(id, domain_name, switch_channel_get_variable(channel, "network_addr"),
@@ -1358,7 +1479,10 @@
memset(&fh, 0, sizeof(fh));
args.input_callback = control_playback;
- args.buf = &fh;
+ memset(&cc, 0, sizeof(cc));
+ cc.profile = profile;
+ cc.fh = &fh;
+ args.buf = &cc;
if (!switch_strlen_zero(cbt.greeting_path)) {
TRY_CODE(switch_ivr_play_file(session, NULL, cbt.greeting_path, NULL));
@@ -1369,29 +1493,64 @@
TRY_CODE(switch_ivr_phrase_macro(session, VM_PLAY_GREETING_MACRO, id, NULL, NULL));
}
- if(!send_mail && switch_channel_ready(channel)) {
- char *usql;
status = create_file(session, profile, VM_RECORD_MESSAGE_MACRO, file_path);
- if (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK) {
- usql = switch_mprintf("insert into voicemail_data values(%ld,0,'%q','%q','%q','%q','%q','%q','%q','')", (long)time(NULL),
- id, domain_name, uuid, caller_profile->caller_id_name, caller_profile->caller_id_number, myfolder, file_path);
+
+ if ((status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK) && switch_channel_ready(channel)) {
+ char input[10] = "", key_buf[80] = "", term = 0;
+
+ snprintf(key_buf, sizeof(key_buf), "%s:%s",
+ profile->urgent_key,
+ profile->terminator_key);
+
+ vm_macro_get(session, VM_RECORD_URGENT_CHECK_MACRO, key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
+ if (*profile->urgent_key == *input) {
+ read_flags = "urgent";
+ priority = 1;
+ }
+ }
+
+ if(!send_mail) {
+ char *usql;
+ switch_event_t *event;
+ char *mwi_id = NULL;
+ int total_new_messages = 0;
+ int total_saved_messages = 0;
+ int total_new_urgent_messages = 0;
+ int total_saved_urgent_messages = 0;
+
+ usql = switch_mprintf("insert into voicemail_data values(%ld,0,'%q','%q','%q','%q','%q','%q','%q','','%q')", (long)time(NULL),
+ id, domain_name, uuid, caller_profile->caller_id_name, caller_profile->caller_id_number, myfolder, file_path, read_flags);
vm_execute_sql(profile, usql, profile->mutex);
switch_safe_free(usql);
- } else {
- unlink(file_path);
- goto end;
- }
- }
+ message_count(profile, id, domain_name, myfolder, &total_new_messages, &total_saved_messages,
+ &total_new_urgent_messages, &total_saved_urgent_messages);
+ if (switch_event_create(&event, SWITCH_EVENT_MESSAGE_WAITING) == SWITCH_STATUS_SUCCESS) {
+ mwi_id = switch_mprintf("%s@%s", id, domain_name);
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "MWI-Messages-Waiting", "yes");
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "MWI-Message-Account", mwi_id);
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "MWI-Voice-Message", "%d/%d (%d/%d)",
+ total_new_messages, total_saved_messages, total_new_urgent_messages, total_saved_urgent_messages);
+ switch_event_fire(&event);
+ switch_safe_free(mwi_id);
+ }
+ }
+
end:
if (send_mail && !switch_strlen_zero(email_vm)) {
switch_event_t *event;
char *from = switch_core_session_sprintf(session, "%s@%s", id, domain_name);
- char *headers = switch_core_session_sprintf(session, "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s", id, domain_name,
- caller_profile->caller_id_name, caller_profile->caller_id_number);
char *body;
+ char *headers;
+
+ headers = switch_core_session_sprintf(session, "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s\nX-Priority: %d",
+ id, domain_name,
+ caller_profile->caller_id_name,
+ caller_profile->caller_id_number,
+ priority);
+
if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
@@ -1502,6 +1661,65 @@
}
}
+static void message_query_handler(switch_event_t *event)
+{
+ char *account = switch_event_get_header(event, "message-account");
+ int sent = 0;
+ switch_event_t *new_event = NULL;
+
+ if (account) {
+ switch_hash_index_t *hi;
+ int total_new_messages = 0;
+ int total_saved_messages = 0;
+ int total_new_urgent_messages = 0;
+ int total_saved_urgent_messages = 0;
+ void *val;
+ vm_profile_t *profile;
+ char *id, *domain;
+
+ if (!strncasecmp(account, "sip:", 4)) {
+ id = strdup(account + 4);
+ } else {
+ id = strdup(account);
+ }
+ assert(id);
+
+ if ((domain = strchr(id, '@'))) {
+ *domain++ = '\0';
+ for (hi = switch_hash_first(NULL, globals.profile_hash); hi; hi = switch_hash_next(hi)) {
+ switch_hash_this(hi, NULL, NULL, &val);
+ profile = (vm_profile_t *) val;
+ total_new_messages = total_saved_messages = 0;
+ message_count(profile, id, domain, "inbox", &total_new_messages, &total_saved_messages,
+ &total_new_urgent_messages, &total_saved_urgent_messages);
+ if (total_new_messages || total_saved_messages) {
+ if (switch_event_create(&new_event, SWITCH_EVENT_MESSAGE_WAITING) == SWITCH_STATUS_SUCCESS) {
+ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Messages-Waiting", "yes");
+ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Message-Account", account);
+ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Voice-Message", "%d/%d (%d/%d)",
+ total_new_messages, total_saved_messages, total_new_urgent_messages, total_saved_urgent_messages);
+ switch_event_fire(&new_event);
+ sent++;
+ }
+ }
+ }
+ }
+
+ switch_safe_free(id);
+
+ }
+
+ if (!sent) {
+ if (switch_event_create(&new_event, SWITCH_EVENT_MESSAGE_WAITING) == SWITCH_STATUS_SUCCESS) {
+ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Messages-Waiting", "no");
+ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Message-Account", account);
+ switch_event_fire(&new_event);
+ }
+ }
+
+
+}
+
SWITCH_MODULE_LOAD_FUNCTION(mod_voicemail_load)
{
switch_application_interface_t *app_interface;
@@ -1513,6 +1731,13 @@
/* connect my internal structure to the blank pointer passed to me */
*module_interface = switch_loadable_module_create_module_interface(pool, modname);
SWITCH_ADD_APP(app_interface, "voicemail", "Voicemail", VM_DESC, voicemail_function, VM_USAGE, SAF_NONE);
+
+
+ if (switch_event_bind((char *) modname, SWITCH_EVENT_MESSAGE_QUERY, SWITCH_EVENT_SUBCLASS_ANY, message_query_handler, NULL)
+ != SWITCH_STATUS_SUCCESS) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
+ return SWITCH_STATUS_GENERR;
+ }
/* indicate that the module should continue to be loaded */
return SWITCH_STATUS_NOUNLOAD;
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_presence.c Fri Oct 12 18:08:30 2007
@@ -211,7 +211,14 @@
for (hp = event->headers; hp; hp = hp->next) {
if (!strncasecmp(hp->name, "mwi-", 4)) {
- stream.write_function(&stream, "%s: %s\r\n", hp->name + 4, hp->value);
+ char *tmp = NULL;
+ char *value = hp->value;
+ if (!strcasecmp(hp->name, "mwi-message-account") && strncasecmp(hp->value, "sip:", 4)) {
+ tmp = switch_mprintf("sip:%s", hp->value);
+ value = tmp;
+ }
+ stream.write_function(&stream, "%s: %s\r\n", hp->name + 4, value);
+ switch_safe_free(tmp);
}
}
@@ -223,7 +230,6 @@
switch_safe_free(stream.data);
assert (sql != NULL);
-
sofia_glue_execute_sql_callback(profile,
SWITCH_FALSE,
profile->ireg_mutex,
@@ -603,6 +609,8 @@
contact = sofia_glue_get_url_from_contact(tmp, 0);
nua_notify(nh,
+ NUTAG_WITH_THIS(profile->nua),
+ NUTAG_NEWSUB(1),
NUTAG_URL(contact),
SIPTAG_TO_STR(full_from),
SIPTAG_FROM_STR(id),
Modified: freeswitch/trunk/src/switch_ivr_play_say.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_play_say.c (original)
+++ freeswitch/trunk/src/switch_ivr_play_say.c Fri Oct 12 18:08:30 2007
@@ -156,8 +156,10 @@
tts_engine = (char *) switch_xml_attr_soft(language, "tts_engine");
tts_voice = (char *) switch_xml_attr_soft(language, "tts_voice");
- old_sound_prefix = switch_channel_get_variable(channel, "sound_prefix");
- switch_channel_set_variable(channel, "sound_prefix", sound_path);
+ if (sound_path) {
+ old_sound_prefix = switch_channel_get_variable(channel, "sound_prefix");
+ switch_channel_set_variable(channel, "sound_prefix", sound_path);
+ }
if (!(macro = switch_xml_child(language, "macro"))) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "can't find any macro tags.\n");
@@ -269,9 +271,9 @@
}
done:
-
- switch_channel_set_variable(channel, "sound_prefix", old_sound_prefix);
-
+ if (old_sound_prefix) {
+ switch_channel_set_variable(channel, "sound_prefix", old_sound_prefix);
+ }
if (xml) {
switch_xml_free(xml);
}
1
0
Author: mikej
Date: Fri Oct 12 18:08:01 2007
New Revision: 5854
Modified:
freeswitch/trunk/src/switch_ivr_menu.c
Log:
fix build
Modified: freeswitch/trunk/src/switch_ivr_menu.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_menu.c (original)
+++ freeswitch/trunk/src/switch_ivr_menu.c Fri Oct 12 18:08:01 2007
@@ -279,7 +279,7 @@
if (need) {
menu->ptr += strlen(menu->buf);
if (strlen(menu->buf) < need) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "waiting for %u digits\n", need);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "waiting for %u digits\n", (uint32_t)need);
status = switch_ivr_collect_digits_count(session, menu->ptr, menu->inlen - strlen(menu->buf), need, "#", &terminator, menu->timeout);
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "digits '%s'\n", menu->buf);
1
0
[commit] r5853 - in freeswitch/trunk: . src src/include src/mod/applications/mod_conference src/mod/applications/mod_rss src/mod/applications/mod_voicemail
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: mikej
Date: Fri Oct 12 16:14:41 2007
New Revision: 5853
Modified:
freeswitch/trunk/Freeswitch.sln
freeswitch/trunk/src/include/switch_cpp.h
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.vcproj
freeswitch/trunk/src/switch_cpp.cpp
freeswitch/trunk/src/switch_ivr.c
freeswitch/trunk/src/switch_ivr_menu.c
Log:
fix windows build.. break other things.
Modified: freeswitch/trunk/Freeswitch.sln
==============================================================================
--- freeswitch/trunk/Freeswitch.sln (original)
+++ freeswitch/trunk/Freeswitch.sln Fri Oct 12 16:14:41 2007
@@ -3,20 +3,20 @@
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.vcproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.vcproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}"
ProjectSection(ProjectDependencies) = postProject
- {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
- {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
- {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
{50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761}
+ {8D04B550-D240-4A44-8A18-35DA3F7038D9} = {8D04B550-D240-4A44-8A18-35DA3F7038D9}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
+ {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g729", "src\mod\codecs\mod_g729\mod_g729.vcproj", "{1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0}"
@@ -26,28 +26,28 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsm", "src\mod\codecs\mod_gsm\mod_gsm.vcproj", "{4926323F-4EA8-4B7D-A3D3-65488725988F}"
ProjectSection(ProjectDependencies) = postProject
- {8FD2E297-4096-47E5-9258-C48FF1841523} = {8FD2E297-4096-47E5-9258-C48FF1841523}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {8FD2E297-4096-47E5-9258-C48FF1841523} = {8FD2E297-4096-47E5-9258-C48FF1841523}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xmpp_event", "src\mod\event_handlers\mod_xmpp_event\mod_xmpp_event.vcproj", "{F10BE67C-A8FF-4CB2-AF29-D46D2590DC59}"
ProjectSection(ProjectDependencies) = postProject
- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sndfile", "src\mod\formats\mod_sndfile\mod_sndfile.vcproj", "{AFAC0568-7548-42D5-9F6A-8D3400A1E4F6}"
ProjectSection(ProjectDependencies) = postProject
- {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {3D0370CA-BED2-4657-A475-32375CBCB6E4} = {3D0370CA-BED2-4657-A475-32375CBCB6E4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_test", "src\mod\event_handlers\mod_event_test\mod_event_test.vcproj", "{3A2A7795-C216-4FFF-B8EF-4D17A84BACCC}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g711", "src\mod\codecs\mod_g711\mod_g711.vcproj", "{B1FE4613-3F4B-4DAF-9714-2472BF8F56AE}"
@@ -57,16 +57,16 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_iax", "src\mod\endpoints\mod_iax\mod_iax.vcproj", "{3A5B9131-F20C-4A85-9447-6C1610941CEE}"
ProjectSection(ProjectDependencies) = postProject
- {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {0A18A071-125E-442F-AFF7-A3F68ABECF99}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {0A18A071-125E-442F-AFF7-A3F68ABECF99}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_l16", "src\mod\codecs\mod_l16\mod_l16.vcproj", "{5844AFE1-AA3E-4BDB-A9EF-119AEF19DF88}"
@@ -76,14 +76,14 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_speex", "src\mod\codecs\mod_speex\mod_speex.vcproj", "{5580D60E-0F77-4716-9CD4-B8E5986FA375}"
ProjectSection(ProjectDependencies) = postProject
- {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {1C469CDD-A3AF-4A94-A592-B2CF12F2D918}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_woomera", "src\mod\endpoints\mod_woomera\mod_woomera.vcproj", "{FE3540C5-3303-46E0-A69E-D92F775687F1}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Codecs", "Codecs", "{F881ADA2-2F1A-4046-9FEB-191D9422D781}"
@@ -104,8 +104,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_xml", "src\mod\dialplans\mod_dialplan_xml\mod_dialplan_xml.vcproj", "{07113B25-D3AF-4E04-BA77-4CD1171F022C}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "FreeSwitchSetup", "w32\Setup\Setup.vdproj", "{B17FFBE6-A942-4056-8346-B624FB5D995B}"
@@ -119,22 +119,22 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dialplan_directory", "src\mod\dialplans\mod_dialplan_directory\mod_dialplan_directory.vcproj", "{A27CCA23-1541-4337-81A4-F0A6413078A0}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_zeroconf", "src\mod\event_handlers\mod_zeroconf\mod_zeroconf.vcproj", "{C7705DC4-2088-493E-AF8D-65BC6D65C125}"
ProjectSection(ProjectDependencies) = postProject
- {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {49C34584-B6DA-448F-83CF-27584DC9FC90} = {49C34584-B6DA-448F-83CF-27584DC9FC90}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_multicast", "src\mod\event_handlers\mod_event_multicast\mod_event_multicast.vcproj", "{784113EF-44D9-4949-835D-7065D3C7AD08}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libteletone", "libs\libteletone\libteletone.vcproj", "{89385C74-5860-4174-9CAF-A39E7C48909C}"
@@ -143,10 +143,10 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey", "src\mod\languages\mod_spidermonkey\mod_spidermonkey.vcproj", "{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASR-TTS", "ASR-TTS", "{4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}"
@@ -168,22 +168,22 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.vcproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
ProjectSection(ProjectDependencies) = postProject
- {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {989BB874-7AF1-44CB-8E5C-CC8113D267E8}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {989BB874-7AF1-44CB-8E5C-CC8113D267E8}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
ProjectSection(ProjectDependencies) = postProject
- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.vcproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Loggers", "Loggers", "{A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}"
@@ -197,42 +197,42 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"
ProjectSection(ProjectDependencies) = postProject
- {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
- {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {356EC96D-4C9F-47B5-9083-FC328B87BA94} = {356EC96D-4C9F-47B5-9083-FC328B87BA94}
+ {A3FE0076-B366-429D-A238-D7304DA7D3C1} = {A3FE0076-B366-429D-A238-D7304DA7D3C1}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_conference", "src\mod\applications\mod_conference\mod_conference.vcproj", "{C24FB505-05D7-4319-8485-7540B44C8603}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\applications\mod_dptools\mod_dptools.vcproj", "{B5881A85-FE70-4F64-8607-2CAAE52669C6}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.vcproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cdr", "src\mod\event_handlers\mod_cdr\mod_cdr.vcproj", "{3D1EED36-A510-4EDB-B4D9-4E0F4A5EC2A8}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Libraries", "_Libraries", "{EB910B0D-F27D-4B62-B67B-DE834C99AC5B}"
@@ -245,8 +245,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}"
ProjectSection(ProjectDependencies) = postProject
- {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.vcproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"
@@ -271,8 +271,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}"
ProjectSection(ProjectDependencies) = postProject
- {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}"
@@ -290,8 +290,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mDNSResponder static library", "libs\win32\howl\libmDNSResponder.vcproj", "{49C34584-B6DA-448F-83CF-27584DC9FC90}"
ProjectSection(ProjectDependencies) = postProject
- {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
{5927104D-C14C-4AC8-925C-4AB681762E75} = {5927104D-C14C-4AC8-925C-4AB681762E75}
+ {0D826AF5-0506-4C50-BB8B-7DB019AC21AE} = {0D826AF5-0506-4C50-BB8B-7DB019AC21AE}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsndfile", "libs\win32\libsndfile\libsndfile.vcproj", "{3D0370CA-BED2-4657-A475-32375CBCB6E4}"
@@ -311,34 +311,34 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.vcproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
ProjectSection(ProjectDependencies) = postProject
- {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg726", "libs\codec\g726\libg726.vcproj", "{5A6A281A-AA50-470A-8305-202BDA1CD1BF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g726", "src\mod\codecs\mod_g726\mod_g726.vcproj", "{486369EB-F150-4B56-BCC8-77B9E18FF5F5}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{5A6A281A-AA50-470A-8305-202BDA1CD1BF} = {5A6A281A-AA50-470A-8305-202BDA1CD1BF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libg7xx", "libs\codec\g7xx\libg7xx.vcproj", "{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g722", "src\mod\codecs\mod_g722\mod_g722.vcproj", "{D42518CC-7475-454D-B392-0E132C07D761}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{D71E7338-8D9C-4FE4-A15F-D5CC60202C7C} = {D71E7338-8D9C-4FE4-A15F-D5CC60202C7C}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua_static", "libs\win32\sofia\libsofia_sip_ua_static.vcproj", "{70A49BC2-7500-41D0-B75D-EDCC5BE987A0}"
ProjectSection(ProjectDependencies) = postProject
- {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}
+ {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download PTHREAD", "libs\win32\Download PTHREAD.vcproj", "{8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A}"
@@ -350,85 +350,85 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_g723_1", "src\mod\codecs\mod_g723_1\mod_g723_1.vcproj", "{FEA1EEF7-876F-48DE-88BF-C0E3E606D758}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_native_file", "src\mod\formats\mod_native_file\mod_native_file.vcproj", "{9254C4B0-6F60-42B6-BB3A-36D63FC001C7}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeSwitch.NET", "src\dotnet\FreeSwitch.NET.csproj", "{251CAABC-16C3-4593-A491-603B908094E0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_core_db", "src\mod\languages\mod_spidermonkey_core_db\mod_spidermonkey_core_db.vcproj", "{ACFFF684-4D19-4D48-AF12-88EA1D778BDF}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_teletone", "src\mod\languages\mod_spidermonkey_teletone\mod_spidermonkey_teletone.vcproj", "{8F992C49-6C51-412F-B2A3-34EAB708EB65}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {89385C74-5860-4174-9CAF-A39E7C48909C} = {89385C74-5860-4174-9CAF-A39E7C48909C}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libudns", "libs\win32\udns\libudns.vcproj", "{4043FC6A-9A30-4577-8AD5-9B233C9575D8}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_enum", "src\mod\applications\mod_enum\mod_enum.vcproj", "{71A967D5-0E99-4CEF-A587-98836EE6F2EF}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {4043FC6A-9A30-4577-8AD5-9B233C9575D8}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {4043FC6A-9A30-4577-8AD5-9B233C9575D8}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_etpan", "src\mod\languages\mod_spidermonkey_etpan\mod_spidermonkey_etpan.vcproj", "{D6C82F86-2B05-4A7F-8CC6-D2592E66FBB9}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {BA4DED3C-E56F-4484-BFC3-9C13E461A1BE} = {BA4DED3C-E56F-4484-BFC3-9C13E461A1BE}
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ {BA4DED3C-E56F-4484-BFC3-9C13E461A1BE} = {BA4DED3C-E56F-4484-BFC3-9C13E461A1BE}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_odbc", "src\mod\languages\mod_spidermonkey_odbc\mod_spidermonkey_odbc.vcproj", "{0A6B5EA5-6E9B-4A51-931F-ED25AA87B4DF}"
ProjectSection(ProjectDependencies) = postProject
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libetpan", "libs\win32\etpan\libetpan.vcproj", "{BA4DED3C-E56F-4484-BFC3-9C13E461A1BE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_curl", "src\mod\xml_int\mod_xml_curl\mod_xml_curl.vcproj", "{AB91A099-7690-4ECF-8994-E458F4EA1ED4}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "say", "say", "{6CD61A1D-797C-470A-BE08-8C31B68BB336}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_say_en", "src\mod\say\mod_say_en\mod_say_en.vcproj", "{988CACF7-3FCB-4992-BE69-77872AE67DC8}"
ProjectSection(ProjectDependencies) = postProject
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "libs\portaudio\build\msvc\portaudio.vcproj", "{0A18A071-125E-442F-AFF7-A3F68ABECF99}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_cdr", "src\mod\xml_int\mod_xml_cdr\mod_xml_cdr.vcproj", "{08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_amr", "src\mod\codecs\mod_amr\mod_amr.vcproj", "{8DEB383C-4091-4F42-A56F-C9E46D552D79}"
@@ -582,16 +582,16 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpcore", "libs\openmrcp\mrcpcore\mrcpcore.vcproj", "{829A9309-3B94-43C0-846B-7EC9D6D35F8B}"
ProjectSection(ProjectDependencies) = postProject
- {AA91F0AC-6562-435E-814C-5C94689FEFA2} = {AA91F0AC-6562-435E-814C-5C94689FEFA2}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {AA91F0AC-6562-435E-814C-5C94689FEFA2} = {AA91F0AC-6562-435E-814C-5C94689FEFA2}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtspcore", "libs\openmrcp\rtspcore\rtspcore.vcproj", "{EB751DC4-87BD-4766-B78D-DFB64BA9F988}"
ProjectSection(ProjectDependencies) = postProject
- {829A9309-3B94-43C0-846B-7EC9D6D35F8B} = {829A9309-3B94-43C0-846B-7EC9D6D35F8B}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B} = {829A9309-3B94-43C0-846B-7EC9D6D35F8B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpmediaframe", "libs\openmrcp\module\mrcpmediaframe\mrcpmediaframe.vcproj", "{9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}"
@@ -608,8 +608,8 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\openmrcp\module\mrcpsofiasip\mrcpsofiasip.vcproj", "{819C7242-6184-46FE-BC7B-C7E25C0581EE}"
ProjectSection(ProjectDependencies) = postProject
- {829A9309-3B94-43C0-846B-7EC9D6D35F8B} = {829A9309-3B94-43C0-846B-7EC9D6D35F8B}
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
+ {829A9309-3B94-43C0-846B-7EC9D6D35F8B} = {829A9309-3B94-43C0-846B-7EC9D6D35F8B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2agent", "libs\openmrcp\module\mrcpv2agent\mrcpv2agent.vcproj", "{FB64EA08-3BC0-48AE-BE4B-74F1024B756E}"
@@ -619,27 +619,32 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libopenmrcpclient", "libs\openmrcp\platform\openmrcpclient\libopenmrcpclient.vcproj", "{A407B661-D7DC-4E30-B268-FFF3296C35E6}"
ProjectSection(ProjectDependencies) = postProject
- {FB64EA08-3BC0-48AE-BE4B-74F1024B756E} = {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}
- {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6} = {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}
- {819C7242-6184-46FE-BC7B-C7E25C0581EE} = {819C7242-6184-46FE-BC7B-C7E25C0581EE}
{CF78E84D-8456-44F2-8197-0E0E88D30A3C} = {CF78E84D-8456-44F2-8197-0E0E88D30A3C}
+ {819C7242-6184-46FE-BC7B-C7E25C0581EE} = {819C7242-6184-46FE-BC7B-C7E25C0581EE}
+ {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6} = {9EA22C31-BB7E-4C40-A698-2C6792D1E0C6}
+ {FB64EA08-3BC0-48AE-BE4B-74F1024B756E} = {FB64EA08-3BC0-48AE-BE4B-74F1024B756E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_openmrcp", "src\mod\asr_tts\mod_openmrcp\mod_openmrcp.vcproj", "{E7116F50-2B10-472F-92BD-C8667AA9C1AE}"
ProjectSection(ProjectDependencies) = postProject
- {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {A407B661-D7DC-4E30-B268-FFF3296C35E6} = {A407B661-D7DC-4E30-B268-FFF3296C35E6}
- {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
{70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {70A49BC2-7500-41D0-B75D-EDCC5BE987A0}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3}
+ {A407B661-D7DC-4E30-B268-FFF3296C35E6} = {A407B661-D7DC-4E30-B268-FFF3296C35E6}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_socket", "src\mod\languages\mod_spidermonkey_socket\mod_spidermonkey_socket.vcproj", "{028C7278-05D7-4E18-82FE-BE231B844F41}"
ProjectSection(ProjectDependencies) = postProject
+ {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
+ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
+ {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
{1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F} = {1AD3F51E-BBB6-4090-BA39-9DFAB1EF1F5F}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_voicemail", "src\mod\applications\mod_voicemail\mod_voicemail.vcproj", "{D7F1E3F2-A3F4-474C-8555-15122571AF52}"
+ ProjectSection(ProjectDependencies) = postProject
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
- {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
- {204FA0DE-305D-4414-AE2E-F195A23F390D} = {204FA0DE-305D-4414-AE2E-F195A23F390D}
EndProjectSection
EndProject
Global
@@ -1204,6 +1209,12 @@
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.ActiveCfg = Release|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|Win32.Build.0 = Release|Win32
{028C7278-05D7-4E18-82FE-BE231B844F41}.Release|x64.ActiveCfg = Release|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|Win32.Build.0 = Debug|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Debug|x64.ActiveCfg = Debug|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.ActiveCfg = Release|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|Win32.Build.0 = Release|Win32
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1240,6 +1251,7 @@
{B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{71A967D5-0E99-4CEF-A587-98836EE6F2EF} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{3850D93A-5F24-4922-BC1C-74D08C37C256} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
+ {D7F1E3F2-A3F4-474C-8555-15122571AF52} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
{07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
{A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
{1A1FF289-4FD6-4285-A422-D31DD67A4723} = {CBD81696-EFB4-4D2F-8451-1B8DAA86155A}
Modified: freeswitch/trunk/src/include/switch_cpp.h
==============================================================================
--- freeswitch/trunk/src/include/switch_cpp.h (original)
+++ freeswitch/trunk/src/include/switch_cpp.h Fri Oct 12 16:14:41 2007
@@ -182,8 +182,8 @@
* receiving dtmf digits. For that, use collectDigits.
*/
int getDigits(char *dtmf_buf,
- int buflen,
- int maxdigits,
+ switch_size_t buflen,
+ switch_size_t maxdigits,
char *terminators,
char *terminator,
int timeout);
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Fri Oct 12 16:14:41 2007
@@ -139,8 +139,8 @@
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_session_t *session,
char *buf,
- uint32_t buflen,
- uint32_t maxdigits, const char *terminators, char *terminator, uint32_t timeout);
+ switch_size_t buflen,
+ switch_size_t maxdigits, const char *terminators, char *terminator, uint32_t timeout);
/*!
\brief Engage background Speech detection on a session
Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Fri Oct 12 16:14:41 2007
@@ -4124,8 +4124,8 @@
status = switch_ivr_collect_digits_count(session,
buf,
- sizeof(pin_buf) - (unsigned int) strlen(pin_buf),
- (unsigned int) strlen(conference->pin) - (unsigned int) strlen(pin_buf), "#", &term, 10000);
+ sizeof(pin_buf) - strlen(pin_buf),
+ strlen(conference->pin) - strlen(pin_buf), "#", &term, 10000);
}
pin_valid = (status == SWITCH_STATUS_SUCCESS && strcmp(pin_buf, conference->pin) == 0);
Modified: freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_rss/mod_rss.c Fri Oct 12 16:14:41 2007
@@ -344,7 +344,7 @@
#endif
char term;
char *cp;
- int blen = sizeof(cmd) - (int) strlen(cmd);
+ switch_size_t blen = sizeof(cmd) - strlen(cmd);
cp = cmd + blen;
switch_ivr_collect_digits_count(session, cp, blen, blen, "#", &term, 5000);
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 Fri Oct 12 16:14:41 2007
@@ -35,8 +35,11 @@
#include <switch_odbc.h>
#endif
-
+#ifdef _MSC_VER /* compilers are stupid sometimes */
+#define TRY_CODE(code) for(;;) {status = code; if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { goto end; } break;}
+#else
#define TRY_CODE(code) do {status = code; if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { goto end; } break;} while(status)
+#endif
SWITCH_MODULE_LOAD_FUNCTION(mod_voicemail_load);
SWITCH_MODULE_DEFINITION(mod_voicemail, mod_voicemail_load, NULL, NULL);
Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.vcproj
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.vcproj (original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.vcproj Fri Oct 12 16:14:41 2007
@@ -3,7 +3,7 @@
ProjectType="Visual C++"
Version="8.00"
Name="mod_voicemail"
- ProjectGUID="{C24FB505-05D7-4319-8485-7540B44C8603}"
+ ProjectGUID="{D7F1E3F2-A3F4-474C-8555-15122571AF52}"
RootNamespace="mod_voicemail"
Keyword="Win32Proj"
>
Modified: freeswitch/trunk/src/switch_cpp.cpp
==============================================================================
--- freeswitch/trunk/src/switch_cpp.cpp (original)
+++ freeswitch/trunk/src/switch_cpp.cpp Fri Oct 12 16:14:41 2007
@@ -168,8 +168,8 @@
}
int CoreSession::getDigits(char *dtmf_buf,
- int buflen,
- int maxdigits,
+ switch_size_t buflen,
+ switch_size_t maxdigits,
char *terminators,
char *terminator,
int timeout)
@@ -180,8 +180,8 @@
status = switch_ivr_collect_digits_count(session,
dtmf_buf,
- (uint32_t) buflen,
- (uint32_t) maxdigits,
+ buflen,
+ maxdigits,
terminators,
terminator,
(uint32_t) timeout);
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Fri Oct 12 16:14:41 2007
@@ -602,10 +602,10 @@
SWITCH_DECLARE(switch_status_t) switch_ivr_collect_digits_count(switch_core_session_t *session,
char *buf,
- uint32_t buflen,
- uint32_t maxdigits, const char *terminators, char *terminator, uint32_t timeout)
+ switch_size_t buflen,
+ switch_size_t maxdigits, const char *terminators, char *terminator, uint32_t timeout)
{
- uint32_t i = 0, x = (uint32_t) strlen(buf);
+ switch_size_t i = 0, x = strlen(buf);
switch_channel_t *channel;
switch_status_t status = SWITCH_STATUS_FALSE;
switch_time_t started = 0;
@@ -648,7 +648,7 @@
char dtmf[128];
switch_channel_dequeue_dtmf(channel, dtmf, maxdigits);
- for (i = 0; i < (uint32_t) strlen(dtmf); i++) {
+ for (i = 0; i < strlen(dtmf); i++) {
if (!switch_strlen_zero(terminators) && strchr(terminators, dtmf[i]) && terminator != NULL) {
*terminator = dtmf[i];
Modified: freeswitch/trunk/src/switch_ivr_menu.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr_menu.c (original)
+++ freeswitch/trunk/src/switch_ivr_menu.c Fri Oct 12 16:14:41 2007
@@ -46,7 +46,7 @@
char *ptr;
int max_failures;
int timeout;
- uint32_t inlen;
+ switch_size_t inlen;
uint32_t flags;
struct switch_ivr_menu_action *actions;
struct switch_ivr_menu *next;
@@ -234,7 +234,7 @@
return status;
}
-static switch_status_t play_or_say(switch_core_session_t *session, switch_ivr_menu_t * menu, char *sound, uint32_t need)
+static switch_status_t play_or_say(switch_core_session_t *session, switch_ivr_menu_t * menu, char *sound, switch_size_t need)
{
char terminator;
uint32_t len;
@@ -252,7 +252,7 @@
len = 1;
ptr = NULL;
} else {
- len = menu->inlen;
+ len = (uint32_t) menu->inlen;
ptr = menu->ptr;
}
args.buf = ptr;
1
0
12 Oct '07
Author: anthm
Date: Fri Oct 12 15:22:50 2007
New Revision: 5852
Modified:
freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c
Log:
doh
Modified: freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c (original)
+++ freeswitch/trunk/src/mod/applications/mod_enum/mod_enum.c Fri Oct 12 15:22:50 2007
@@ -582,7 +582,7 @@
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
dest = argv[0];
root = argv[1] ? argv[1] : globals.root;
- if (enum_lookup(root, data, &results) == SWITCH_STATUS_SUCCESS) {
+ if (enum_lookup(root, dest, &results) == SWITCH_STATUS_SUCCESS) {
switch_event_header_t *hi;
if ((hi = switch_channel_variable_first(channel))) {
for (; hi; hi = hi->next) {
1
0
[commit] r5851 - in freeswitch/trunk: conf src src/include src/mod/applications/mod_voicemail src/mod/endpoints/mod_sofia
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: anthm
Date: Fri Oct 12 13:12:31 2007
New Revision: 5851
Modified:
freeswitch/trunk/conf/default_context.xml
freeswitch/trunk/src/include/switch_utils.h
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
freeswitch/trunk/src/switch_utils.c
Log:
minor adj
Modified: freeswitch/trunk/conf/default_context.xml
==============================================================================
--- freeswitch/trunk/conf/default_context.xml (original)
+++ freeswitch/trunk/conf/default_context.xml Fri Oct 12 13:12:31 2007
@@ -23,14 +23,14 @@
<condition field="destination_number" expression="^7771$">
<action application="answer"/>
<action application="set" data="voicemail_authorized=${sip_authorized}"/>
- <action application="voicemail" data="check demo $${domain} ${sip_from_user}"/>
+ <action application="voicemail" data="check demo $${domain} ${sip_mailbox}"/>
</condition>
</extension>
<extension name="7772">
<condition field="destination_number" expression="^7772$">
<action application="answer"/>
- <action application="voicemail" data="demo $${domain} ${sip_from_user}"/>
+ <action application="voicemail" data="demo $${domain} ${sip_mailbox}"/>
</condition>
</extension>
Modified: freeswitch/trunk/src/include/switch_utils.h
==============================================================================
--- freeswitch/trunk/src/include/switch_utils.h (original)
+++ freeswitch/trunk/src/include/switch_utils.h Fri Oct 12 13:12:31 2007
@@ -328,6 +328,7 @@
#define SWITCH_READ_ACCEPTABLE(status) (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK)
SWITCH_DECLARE(size_t) switch_url_encode(char *url, char *buf, size_t len);
SWITCH_DECLARE(char *) switch_url_decode(char *s);
+SWITCH_DECLARE(switch_bool_t) switch_simple_email(char *to, char *from, char *headers, char *body, char *file);
/* malloc or DIE macros */
#ifdef NDEBUG
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 Fri Oct 12 13:12:31 2007
@@ -83,136 +83,6 @@
};
typedef struct vm_profile vm_profile_t;
-
-#define B64BUFFLEN 1024
-static const char c64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-static int write_buf(int fd, char *buf)
-{
-
- int len = (int) strlen(buf);
- if (fd && write(fd, buf, len) != len) {
- close(fd);
- return 0;
- }
-
- return 1;
-}
-static switch_bool_t vm_email(char *to, char *from, char *headers, char *body, char *file)
-{
- char *bound = "XXXX_boundary_XXXX";
- char filename[80], buf[B64BUFFLEN];
- int fd = 0, ifd = 0;
- int x = 0, y = 0, bytes = 0, ilen = 0;
- unsigned int b = 0, l = 0;
- unsigned char in[B64BUFFLEN];
- unsigned char out[B64BUFFLEN + 512];
- char *path = NULL;
-
- snprintf(filename, 80, "%smail.%ld%04x", SWITCH_GLOBAL_dirs.temp_dir, time(NULL), rand() & 0xffff);
-
- if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644))) {
- if (file) {
- path = file;
- if ((ifd = open(path, O_RDONLY)) < 1) {
- return SWITCH_FALSE;
- }
-
- 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))
- return SWITCH_FALSE;
-
- if (!write_buf(fd, "\n\n"))
- return SWITCH_FALSE;
-
- if (file) {
- 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)) {
- return SWITCH_FALSE;
- }
- }
-
- if (file) {
- snprintf(buf, B64BUFFLEN, "\n\n--%s\nContent-Type: application/octet-stream\n"
- "Content-Transfer-Encoding: base64\n"
- "Content-Description: Sound attachment.\n" "Content-Disposition: attachment; filename=\"%s\"\n\n", bound, switch_cut_path(file));
- if (!write_buf(fd, buf))
- return SWITCH_FALSE;
-
- while ((ilen = read(ifd, in, B64BUFFLEN))) {
- for (x = 0; x < ilen; x++) {
- b = (b << 8) + in[x];
- l += 8;
- while (l >= 6) {
- out[bytes++] = c64[(b >> (l -= 6)) % 64];
- if (++y != 72)
- continue;
- out[bytes++] = '\n';
- y = 0;
- }
- }
- if (write(fd, &out, bytes) != bytes) {
- return -1;
- } else
- bytes = 0;
-
- }
-
- if (l > 0) {
- out[bytes++] = c64[((b % 16) << (6 - l)) % 64];
- }
- if (l != 0)
- while (l < 6) {
- out[bytes++] = '=', l += 2;
- }
- if (write(fd, &out, bytes) != bytes) {
- return -1;
- }
-
- }
-
-
-
- if (file) {
- snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound);
- if (!write_buf(fd, buf))
- return SWITCH_FALSE;
- }
- }
-
- if (fd) {
- close(fd);
- }
- if (ifd) {
- close(ifd);
- }
- snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tf \"%s\" %s", filename, from, to);
- if(system(buf)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to execute command: %s\n", buf);
- }
-
- unlink(filename);
-
-
- if (file) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed file [%s] to [%s]\n", filename, to);
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed data to [%s]\n", to);
- }
-
- return SWITCH_TRUE;
-}
-
static switch_status_t vm_execute_sql(vm_profile_t *profile, char *sql, switch_mutex_t *mutex)
{
switch_core_db_t *db;
@@ -953,7 +823,7 @@
}
//TBD add better formatting to the body
- vm_email(cbt->email, from, headers, body, cbt->file_path);
+ switch_simple_email(cbt->email, from, headers, body, cbt->file_path);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s\n", cbt->email);
switch_safe_free(body);
TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "emailed", NULL, NULL));
@@ -1532,7 +1402,7 @@
}
//TBD add better formatting to the body
- vm_email(email_vm, from, headers, body, file_path);
+ switch_simple_email(email_vm, from, headers, body, file_path);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s\n", email_vm);
switch_safe_free(body);
unlink(file_path);
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Fri Oct 12 13:12:31 2007
@@ -1924,6 +1924,8 @@
from_host = sip->sip_from->a_url->url_host;
channel_name = url_set_chanvars(session, sip->sip_from->a_url, sip_from);
+ switch_channel_set_variable(channel, "sip_mailbox", from_user);
+
if (!switch_strlen_zero(from_user)) {
if (*from_user == '+') {
switch_channel_set_variable(channel, "sip_from_user_stripped", (const char *) (from_user + 1));
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Fri Oct 12 13:12:31 2007
@@ -747,6 +747,7 @@
const char *passwd = NULL;
const char *a1_hash = NULL;
char *sql;
+ char *mailbox = NULL;
switch_xml_t domain, xml = NULL, user, param, xparams;
char hexdigest[2 * SU_MD5_DIGEST_SIZE + 1] = "";
char *pbuf = NULL;
@@ -829,7 +830,11 @@
ret = AUTH_FORBIDDEN;
goto end;
}
-
+
+ if (!(mailbox = (char *)switch_xml_attr(user, "mailbox"))) {
+ mailbox = username;
+ }
+
for (param = switch_xml_child(xparams, "param"); param; param = param->next) {
const char *var = switch_xml_attr_soft(param, "name");
const char *val = switch_xml_attr_soft(param, "value");
@@ -899,6 +904,7 @@
if (first && ret == AUTH_OK) {
if (v_event && (xparams = switch_xml_child(user, "variables"))) {
if (switch_event_create(v_event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
+ switch_event_add_header(*v_event, SWITCH_STACK_BOTTOM, "sip_mailbox", "%s", mailbox);
for (param = switch_xml_child(xparams, "variable"); param; param = param->next) {
const char *var = switch_xml_attr_soft(param, "name");
const char *val = switch_xml_attr_soft(param, "value");
Modified: freeswitch/trunk/src/switch_utils.c
==============================================================================
--- freeswitch/trunk/src/switch_utils.c (original)
+++ freeswitch/trunk/src/switch_utils.c Fri Oct 12 13:12:31 2007
@@ -68,6 +68,135 @@
}
+
+static int write_buf(int fd, char *buf)
+{
+
+ int len = (int) strlen(buf);
+ if (fd && write(fd, buf, len) != len) {
+ close(fd);
+ return 0;
+ }
+
+ return 1;
+}
+
+SWITCH_DECLARE(switch_bool_t) switch_simple_email(char *to, char *from, char *headers, char *body, char *file)
+{
+ char *bound = "XXXX_boundary_XXXX";
+ char filename[80], buf[B64BUFFLEN];
+ int fd = 0, ifd = 0;
+ int x = 0, y = 0, bytes = 0, ilen = 0;
+ unsigned int b = 0, l = 0;
+ unsigned char in[B64BUFFLEN];
+ unsigned char out[B64BUFFLEN + 512];
+ char *path = NULL;
+
+ snprintf(filename, 80, "%smail.%ld%04x", SWITCH_GLOBAL_dirs.temp_dir, time(NULL), rand() & 0xffff);
+
+ if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644))) {
+ if (file) {
+ path = file;
+ if ((ifd = open(path, O_RDONLY)) < 1) {
+ return SWITCH_FALSE;
+ }
+
+ 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))
+ return SWITCH_FALSE;
+
+ if (!write_buf(fd, "\n\n"))
+ return SWITCH_FALSE;
+
+ if (file) {
+ 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)) {
+ return SWITCH_FALSE;
+ }
+ }
+
+ if (file) {
+ snprintf(buf, B64BUFFLEN, "\n\n--%s\nContent-Type: application/octet-stream\n"
+ "Content-Transfer-Encoding: base64\n"
+ "Content-Description: Sound attachment.\n" "Content-Disposition: attachment; filename=\"%s\"\n\n", bound, switch_cut_path(file));
+ if (!write_buf(fd, buf))
+ return SWITCH_FALSE;
+
+ while ((ilen = read(ifd, in, B64BUFFLEN))) {
+ for (x = 0; x < ilen; x++) {
+ b = (b << 8) + in[x];
+ l += 8;
+ while (l >= 6) {
+ out[bytes++] = switch_b64_table[(b >> (l -= 6)) % 64];
+ if (++y != 72)
+ continue;
+ out[bytes++] = '\n';
+ y = 0;
+ }
+ }
+ if (write(fd, &out, bytes) != bytes) {
+ return -1;
+ } else
+ bytes = 0;
+
+ }
+
+ if (l > 0) {
+ out[bytes++] = switch_b64_table[((b % 16) << (6 - l)) % 64];
+ }
+ if (l != 0)
+ while (l < 6) {
+ out[bytes++] = '=', l += 2;
+ }
+ if (write(fd, &out, bytes) != bytes) {
+ return -1;
+ }
+
+ }
+
+
+
+ if (file) {
+ snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound);
+ if (!write_buf(fd, buf))
+ return SWITCH_FALSE;
+ }
+ }
+
+ if (fd) {
+ close(fd);
+ }
+ if (ifd) {
+ close(ifd);
+ }
+ snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tf \"%s\" %s", filename, from, to);
+ if(system(buf)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to execute command: %s\n", buf);
+ }
+
+ unlink(filename);
+
+
+ if (file) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed file [%s] to [%s]\n", filename, to);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Emailed data to [%s]\n", to);
+ }
+
+ return SWITCH_TRUE;
+}
+
+
SWITCH_DECLARE(switch_status_t) switch_find_local_ip(char *buf, int len, int family)
{
switch_status_t status = SWITCH_STATUS_FALSE;
1
0
[commit] r5850 - in freeswitch/trunk: conf src/mod/applications/mod_voicemail
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: anthm
Date: Fri Oct 12 12:49:14 2007
New Revision: 5850
Modified:
freeswitch/trunk/conf/voicemail.conf.xml
freeswitch/trunk/conf/voicemail_en_tts.xml
freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
Log:
update and test for odbc support
Modified: freeswitch/trunk/conf/voicemail.conf.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail.conf.xml (original)
+++ freeswitch/trunk/conf/voicemail.conf.xml Fri Oct 12 12:49:14 2007
@@ -12,9 +12,6 @@
<param name="terminator-key" value="#"/>
<param name="play-new-messages-key" value="1"/>
<param name="play-saved-messages-key" value="2"/>
- <param name="save-message-key" value="8"/>
- <param name="delete-message-key" value="7"/>
- <param name="replay-message-key" value="1"/>
<param name="main-menu-key" value="0"/>
<param name="config-menu-key" value="5"/>
<param name="record-greeting-key" value="1"/>
Modified: freeswitch/trunk/conf/voicemail_en_tts.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail_en_tts.xml (original)
+++ freeswitch/trunk/conf/voicemail_en_tts.xml Fri Oct 12 12:49:14 2007
@@ -65,9 +65,10 @@
<macro name="voicemail_menu">
- <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
+ <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
- <action function="speak-text" data="press $1 to listen to new messages. press $2 to listen to saved messages. press $3 for advanced options"/>
+ <action function="speak-text"
+ data="press $1 to listen to new messages. press $2 to listen to saved messages. press $3 for advanced options, press $4 to exit"/>
</match>
</input>
</macro>
@@ -105,7 +106,7 @@
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
- data="press $1 to listen to the recording again, press $2 to save the recording, press $3 to delete the recording"/>
+ data="press $1 to listen to the recording again, press $2 to save the recording, press $3 to delete the recording, press $4 to forward the recording to your email"/>
</match>
</input>
</macro>
Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile (original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/Makefile Fri Oct 12 12:49:14 2007
@@ -1,2 +1,3 @@
BASE=../../../..
include /usr/src/freeswitch.trunk/build/modmake.rules
+LOCAL_CFLAGS += `if test -f $(BASE)/.libs/libfreeswitch_la-switch_odbc.o ; then echo -DSWITCH_HAVE_ODBC; fi ;`
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 Fri Oct 12 12:49:14 2007
@@ -56,9 +56,6 @@
char terminator_key[2];
char play_new_messages_key[2];
char play_saved_messages_key[2];
- char save_message_key[2];
- char delete_message_key[2];
- char replay_message_key[2];
char main_menu_key[2];
char config_menu_key[2];
@@ -377,13 +374,10 @@
for (x_profile = switch_xml_child(x_profiles, "profile"); x_profile; x_profile = x_profile->next) {
char *name = (char *) switch_xml_attr_soft(x_profile, "name");
- char *odbc_dsn = NULL, *odbc_dsn_tmp = NULL, *odbc_user = NULL, *odbc_pass = NULL, *dbname = NULL;
+ char *odbc_dsn = NULL, *odbc_user = NULL, *odbc_pass = NULL;
char *terminator_key = "#";
char *play_new_messages_key = "1";
char *play_saved_messages_key = "2";
- char *save_message_key = "8";
- char *delete_message_key = "7";
- char *replay_message_key = "1";
char *main_menu_key = "0";
char *config_menu_key = "5";
@@ -416,12 +410,6 @@
play_new_messages_key = val;
} else if (!strcasecmp(var, "play-saved-messages-key") && !switch_strlen_zero(val)) {
play_saved_messages_key = val;
- } else if (!strcasecmp(var, "save-message-key") && !switch_strlen_zero(val)) {
- save_message_key = val;
- } else if (!strcasecmp(var, "delete-message-key") && !switch_strlen_zero(val)) {
- delete_message_key = val;
- } else if (!strcasecmp(var, "replay-message-key") && !switch_strlen_zero(val)) {
- replay_message_key = val;
} else if (!strcasecmp(var, "main-menu-key") && !switch_strlen_zero(val)) {
main_menu_key = val;
} else if (!strcasecmp(var, "config-menu-key") && !switch_strlen_zero(val)) {
@@ -478,13 +466,10 @@
}
} else if (!strcasecmp(var, "odbc-dsn")) {
#ifdef SWITCH_HAVE_ODBC
- odbc_dsn_tmp = val;
- odbc_dsn = strdup(val);
-
+ odbc_dsn = switch_core_strdup(globals.pool, val);
if ((odbc_user = strchr(odbc_dsn, ':'))) {
*odbc_user++ = '\0';
}
-
if ((odbc_pass = strchr(odbc_user, ':'))) {
*odbc_pass++ = '\0';
}
@@ -501,9 +486,9 @@
profile->name = switch_core_strdup(globals.pool, name);
if (!switch_strlen_zero(odbc_dsn) && !switch_strlen_zero(odbc_user) && !switch_strlen_zero(odbc_pass)) {
- profile->odbc_dsn = switch_core_strdup(globals.pool, odbc_dsn_tmp);
- profile->odbc_user = switch_core_strdup(globals.pool, odbc_user);
- profile->odbc_pass = switch_core_strdup(globals.pool, odbc_pass);
+ profile->odbc_dsn = odbc_dsn;
+ profile->odbc_user = odbc_user;
+ profile->odbc_pass = odbc_pass;
} else {
profile->dbname = switch_core_sprintf(globals.pool, "voicemail_%s", name);
}
@@ -533,7 +518,7 @@
}
switch_core_db_close(db);
#ifdef SWITCH_HAVE_ODBC
- }
+ }
#endif
profile->digit_timeout = timeout;
profile->max_login_attempts = max_login_attempts;
@@ -541,9 +526,6 @@
*profile->terminator_key = *terminator_key;
*profile->play_new_messages_key = *play_new_messages_key;
*profile->play_saved_messages_key = *play_saved_messages_key;
- *profile->save_message_key = *save_message_key;
- *profile->delete_message_key = *delete_message_key;
- *profile->replay_message_key = *replay_message_key;
*profile->main_menu_key = *main_menu_key;
*profile->config_menu_key = *config_menu_key;
*profile->record_greeting_key = *record_greeting_key;
@@ -564,11 +546,6 @@
}
-
-
- switch_safe_free(odbc_dsn);
- switch_safe_free(dbname);
-
}
end:
@@ -946,7 +923,7 @@
args.input_callback = control_playback;
args.buf = &fh;
TRY_CODE(switch_ivr_play_file(session, NULL, cbt->file_path, &args));
- printf("XXXX wtf[%s]\n", cbt->email);
+
if (switch_channel_ready(channel)) {
status = vm_macro_get(session, VM_LISTEN_FILE_CHECK_MACRO,
key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
@@ -1001,7 +978,7 @@
{
char msg_count[80] = "";
callback_t cbt = { 0 };
- char sql[128];
+ char sql[256];
cbt.buf = msg_count;
cbt.len = sizeof(msg_count);
@@ -1014,7 +991,7 @@
myfolder);
vm_execute_sql_callback(profile, profile->mutex, sql, sql2str_callback, &cbt);
*total_new_messages = atoi(msg_count);
-
+
snprintf(sql, sizeof(sql),
"select count(*) from voicemail_data where user='%s' and domain='%s' and in_folder='%s' and read_epoch!=0",
myid,
@@ -1117,7 +1094,7 @@
case VM_CHECK_PLAY_MESSAGES:
{
listen_callback_t cbt;
- char sql[128];
+ char sql[256];
int cur_message, total_messages;
message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages);
memset(&cbt, 0, sizeof(cbt));
@@ -1257,10 +1234,11 @@
char key_buf[80] = "";
play_msg_type = MSG_NONE;
- snprintf(key_buf, sizeof(key_buf), "%s:%s:%s",
+ snprintf(key_buf, sizeof(key_buf), "%s:%s:%s:%s",
profile->play_new_messages_key,
profile->play_saved_messages_key,
- profile->config_menu_key);
+ profile->config_menu_key,
+ profile->terminator_key);
status = vm_macro_get(session, VM_MENU_MACRO, key_buf, input, sizeof(input), 1,
profile->terminator_key, &term, timeout);
@@ -1272,6 +1250,8 @@
play_msg_type = MSG_NEW;
} else if (!strcmp(input, profile->play_saved_messages_key)) {
play_msg_type = MSG_SAVED;
+ } else if (!strcmp(input, profile->terminator_key)) {
+ goto end;
} else if (!strcmp(input, profile->config_menu_key)) {
vm_check_state = VM_CHECK_CONFIG;
}
@@ -1423,7 +1403,7 @@
{
switch_channel_t *channel;
char *myfolder = "inbox";
- char sql[128];
+ char sql[256];
prefs_callback_t cbt;
vm_profile_t *profile;
char *uuid = switch_core_session_get_uuid(session);
1
0
Author: anthm
Date: Fri Oct 12 10:53:52 2007
New Revision: 5849
Modified:
freeswitch/trunk/conf/voicemail.conf.xml
Log:
add undocumented param
Modified: freeswitch/trunk/conf/voicemail.conf.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail.conf.xml (original)
+++ freeswitch/trunk/conf/voicemail.conf.xml Fri Oct 12 10:53:52 2007
@@ -25,6 +25,7 @@
<param name="save-file-key" value="2"/>
<param name="delete-file-key" value="7"/>
<param name="undelete-file-key" value="8"/>
+ <param name="email-key" value="4"/>
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
</profile>
</profiles>
1
0
[commit] r5848 - freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: anthm
Date: Fri Oct 12 09:34:26 2007
New Revision: 5848
Modified:
freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c
Log:
doh
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c Fri Oct 12 09:34:26 2007
@@ -37,7 +37,20 @@
static const char modname[] = "etpan";
+#define B64BUFFLEN 1024
+static const char c64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+static int write_buf(int fd, char *buf)
+{
+
+ int len = (int) strlen(buf);
+ if (fd && write(fd, buf, len) != len) {
+ close(fd);
+ return 0;
+ }
+
+ return 1;
+}
/* etpan Object */
/*********************************************************************************/
@@ -61,7 +74,130 @@
etpan_NAME
};
+static JSBool js_email(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval)
+{
+ char *to = NULL, *from = NULL, *headers, *body = NULL, *file = NULL;
+ char *bound = "XXXX_boundary_XXXX";
+ char filename[80], buf[B64BUFFLEN];
+ int fd = 0, ifd = 0;
+ int x = 0, y = 0, bytes = 0, ilen = 0;
+ unsigned int b = 0, l = 0;
+ unsigned char in[B64BUFFLEN];
+ unsigned char out[B64BUFFLEN + 512];
+ char *path = NULL;
+
+
+ if (argc > 3 &&
+ (from = JS_GetStringBytes(JS_ValueToString(cx, argv[0]))) &&
+ (to = JS_GetStringBytes(JS_ValueToString(cx, argv[1]))) &&
+ (headers = JS_GetStringBytes(JS_ValueToString(cx, argv[2]))) && (body = JS_GetStringBytes(JS_ValueToString(cx, argv[3])))
+ ) {
+ if (argc > 4) {
+ file = JS_GetStringBytes(JS_ValueToString(cx, argv[4]));
+ }
+ snprintf(filename, 80, "%smail.%ld%04x", SWITCH_GLOBAL_dirs.temp_dir, time(NULL), rand() & 0xffff);
+
+ if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644))) {
+ if (file) {
+ path = file;
+ if ((ifd = open(path, O_RDONLY)) < 1) {
+ return JS_FALSE;
+ }
+
+ snprintf(buf, B64BUFFLEN, "MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"%s\"\n", bound);
+ if (!write_buf(fd, buf)) {
+ return JS_FALSE;
+ }
+ }
+
+ if (!write_buf(fd, headers))
+ return JS_FALSE;
+
+ if (!write_buf(fd, "\n\n"))
+ return JS_FALSE;
+
+ if (file) {
+ snprintf(buf, B64BUFFLEN, "--%s\nContent-Type: text/plain\n\n", bound);
+ if (!write_buf(fd, buf))
+ return JS_FALSE;
+ }
+
+ if (!write_buf(fd, body))
+ return JS_FALSE;
+
+ if (file) {
+ snprintf(buf, B64BUFFLEN, "\n\n--%s\nContent-Type: application/octet-stream\n"
+ "Content-Transfer-Encoding: base64\n"
+ "Content-Description: Sound attachment.\n" "Content-Disposition: attachment; filename=\"%s\"\n\n", bound, (argc > 5) ? JS_GetStringBytes(JS_ValueToString(cx,argv[5])) : switch_cut_path(file));
+ if (!write_buf(fd, buf))
+ return JS_FALSE;
+
+ while ((ilen = read(ifd, in, B64BUFFLEN))) {
+ for (x = 0; x < ilen; x++) {
+ b = (b << 8) + in[x];
+ l += 8;
+ while (l >= 6) {
+ out[bytes++] = c64[(b >> (l -= 6)) % 64];
+ if (++y != 72)
+ continue;
+ out[bytes++] = '\n';
+ y = 0;
+ }
+ }
+ if (write(fd, &out, bytes) != bytes) {
+ return -1;
+ } else
+ bytes = 0;
+
+ }
+
+ if (l > 0) {
+ out[bytes++] = c64[((b % 16) << (6 - l)) % 64];
+ }
+ if (l != 0)
+ while (l < 6) {
+ out[bytes++] = '=', l += 2;
+ }
+ if (write(fd, &out, bytes) != bytes) {
+ return -1;
+ }
+
+ }
+
+
+
+ if (file) {
+ snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound);
+ if (!write_buf(fd, buf))
+ return JS_FALSE;
+ }
+ }
+ if (fd) {
+ close(fd);
+ }
+ if (ifd) {
+ close(ifd);
+ }
+ snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tf \"%s\" %s", filename, from, to);
+ if(!system(buf)) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to execute command: %s\n",buf);
+ }
+
+ unlink(filename);
+
+
+ if (file) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Emailed file [%s] to [%s]\n", filename, to);
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Emailed data to [%s]\n", to);
+ }
+ return JS_TRUE;
+ }
+
+
+ return JS_FALSE;
+}
static JSFunctionSpec etpan_methods[] = {
// {"myMethod", odbc_my_method, 1},
1
0
[commit] r5847 - in freeswitch/trunk: conf src/mod/applications/mod_voicemail src/mod/languages/mod_spidermonkey_etpan
by Freeswitch SVN 12 Oct '07
by Freeswitch SVN 12 Oct '07
12 Oct '07
Author: anthm
Date: Fri Oct 12 09:31:12 2007
New Revision: 5847
Modified:
freeswitch/trunk/conf/directory.xml
freeswitch/trunk/conf/voicemail.conf.xml
freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c
Log:
small adjustments
Modified: freeswitch/trunk/conf/directory.xml
==============================================================================
--- freeswitch/trunk/conf/directory.xml (original)
+++ freeswitch/trunk/conf/directory.xml Fri Oct 12 09:31:12 2007
@@ -36,6 +36,7 @@
<param name="password" value="mypass"/>
<param name="vm-password" value="1234"/><!--if vm-password is omitted password param is used-->
<!--<param name="vm-mailto" value="me(a)mydomain.com"/>-->
+ <!--<param name="vm-email-all-messages" value="true"/>-->
<!-- optionally use this instead if you want to store the hash of user:domain:pass-->
<!--<param name="a1-hash" value="c6440e5de50b403206989679159de89a"/>-->
</params>
Modified: freeswitch/trunk/conf/voicemail.conf.xml
==============================================================================
--- freeswitch/trunk/conf/voicemail.conf.xml (original)
+++ freeswitch/trunk/conf/voicemail.conf.xml Fri Oct 12 09:31:12 2007
@@ -3,6 +3,7 @@
</settings>
<profiles>
<profile name="demo">
+ <param name="file-extension" value="wav"/>
<param name="terminator-key" value="#"/>
<param name="max-login-attempts" value="3"/>
<param name="digit-timeout" value="10000"/>
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 Fri Oct 12 09:31:12 2007
@@ -71,6 +71,8 @@
char save_file_key[2];
char delete_file_key[2];
char undelete_file_key[2];
+ char email_key[2];
+ char file_ext[10];
char *tone_spec;
uint32_t digit_timeout;
uint32_t max_login_attempts;
@@ -197,7 +199,7 @@
if (ifd) {
close(ifd);
}
- snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tvf \"%s\" %s", filename, from, to);
+ snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tf \"%s\" %s", filename, from, to);
if(system(buf)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to execute command: %s\n", buf);
}
@@ -394,7 +396,9 @@
char *save_file_key = "2";
char *delete_file_key = "7";
char *undelete_file_key = "8";
+ char *email_key = "4";
char *tone_spec = "%(1000, 0, 640)";
+ char *file_ext = "wav";
switch_core_db_t *db;
uint32_t timeout = 10000, max_login_attempts = 3, max_record_len = 300;
@@ -436,6 +440,10 @@
delete_file_key = val;
} else if (!strcasecmp(var, "undelete-file-key") && !switch_strlen_zero(val)) {
undelete_file_key = val;
+ } else if (!strcasecmp(var, "email-key") && !switch_strlen_zero(val)) {
+ email_key = val;
+ } else if (!strcasecmp(var, "file-extension")) {
+ file_ext = val;
} else if (!strcasecmp(var, "tone-spec")) {
tone_spec = val;
} else if (!strcasecmp(var, "digit-timeout")) {
@@ -546,8 +554,9 @@
*profile->save_file_key = *save_file_key;
*profile->delete_file_key = *delete_file_key;
*profile->undelete_file_key = *undelete_file_key;
+ *profile->email_key = *email_key;
profile->tone_spec = switch_core_strdup(globals.pool, tone_spec);
-
+ switch_copy_string(profile->file_ext, file_ext, sizeof(profile->file_ext));
switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, globals.pool);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Added Profile %s\n", profile->name);
@@ -873,6 +882,7 @@
char in_folder[255];
char file_path[255];
char flags[255];
+ char *email;
int index;
int want;
msg_type_t type;
@@ -924,7 +934,7 @@
profile->listen_file_key,
profile->save_file_key,
profile->delete_file_key,
- profile->undelete_file_key);
+ profile->email_key);
snprintf(input, sizeof(input), "%s:%d", cbt->type == MSG_NEW ? "new" : "saved", cbt->index);
@@ -936,18 +946,43 @@
args.input_callback = control_playback;
args.buf = &fh;
TRY_CODE(switch_ivr_play_file(session, NULL, cbt->file_path, &args));
-
+ printf("XXXX wtf[%s]\n", cbt->email);
if (switch_channel_ready(channel)) {
status = vm_macro_get(session, VM_LISTEN_FILE_CHECK_MACRO,
key_buf, input, sizeof(input), 1, profile->terminator_key, &term, profile->digit_timeout);
if (!strcmp(input, profile->listen_file_key)) {
goto play_file;
- } else if (!strcmp(input, profile->delete_file_key)) {
+ } else if (!strcmp(input, profile->delete_file_key) || !strcmp(input, profile->email_key)) {
char *sql = switch_mprintf("update voicemail_data set flags='delete' where uuid='%s'", cbt->uuid);
vm_execute_sql(profile, sql, profile->mutex);
switch_safe_free(sql);
- TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "deleted", NULL, NULL));
+ if (!strcmp(input, profile->email_key) && !switch_strlen_zero(cbt->email)) {
+ switch_event_t *event;
+ char *from = switch_core_session_sprintf(session, "%s@%s", cbt->user, cbt->domain);
+ char *headers = switch_core_session_sprintf(session, "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s",
+ cbt->user, cbt->domain, cbt->cid_name, cbt->cid_number);
+
+ char *body;
+
+
+ if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
+ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Message-Type", "forwarded-voicemail");
+ switch_event_serialize(event, &body);
+ switch_event_fire(&event);
+ } else {
+ body = switch_mprintf("Voicemail from %s %s",
+ cbt->cid_name, cbt->cid_number);
+ }
+
+ //TBD add better formatting to the body
+ vm_email(cbt->email, from, headers, body, cbt->file_path);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s\n", cbt->email);
+ switch_safe_free(body);
+ TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "emailed", NULL, NULL));
+ } else {
+ TRY_CODE(switch_ivr_phrase_macro(session, VM_ACK_MACRO, "deleted", NULL, NULL));
+ }
} else {
char *sql = switch_mprintf("update voicemail_data set flags='save' where uuid='%s'", cbt->uuid);
vm_execute_sql(profile, sql, profile->mutex);
@@ -1007,7 +1042,7 @@
int total_new_messages = 0;
int total_saved_messages = 0;
int heard_auto_saved = 0, heard_auto_new = 0;
-
+ char *email_vm = NULL;
channel = switch_core_session_get_channel(session);
assert(channel != NULL);
@@ -1086,6 +1121,7 @@
int cur_message, total_messages;
message_count(profile, myid, domain_name, myfolder, &total_new_messages, &total_saved_messages);
memset(&cbt, 0, sizeof(cbt));
+ cbt.email = email_vm;
switch(play_msg_type) {
case MSG_NEW:
{
@@ -1167,7 +1203,7 @@
profile->terminator_key, &term, timeout));
num = atoi(input);
- file_path = switch_mprintf("%s%sgreeting_%d.wav", dir_path, SWITCH_PATH_SEPARATOR, num);
+ file_path = switch_mprintf("%s%sgreeting_%d.%s", dir_path, SWITCH_PATH_SEPARATOR, num, profile->file_ext);
if (num < 1 || num > 3) {
status = SWITCH_STATUS_FALSE;
} else {
@@ -1195,7 +1231,7 @@
if (num < 1 || num > 3) {
TRY_CODE(switch_ivr_phrase_macro(session, VM_CHOOSE_GREETING_FAIL_MACRO, NULL, NULL, NULL));
} else {
- file_path = switch_mprintf("%s%sgreeting_%d.wav", dir_path, SWITCH_PATH_SEPARATOR, num);
+ file_path = switch_mprintf("%s%sgreeting_%d.%s", dir_path, SWITCH_PATH_SEPARATOR, num, profile->file_ext);
TRY_CODE(create_file(session, profile, VM_RECORD_GREETING_MACRO, file_path));
sql = switch_mprintf("update voicemail_prefs set greeting_path='%s' where user='%s' and domain='%s'", file_path, myid, domain_name);
vm_execute_sql(profile, sql, profile->mutex);
@@ -1204,7 +1240,7 @@
}
} else if (!strcmp(input, profile->record_name_key)) {
- file_path = switch_mprintf("%s%srecorded_name.wav", dir_path, SWITCH_PATH_SEPARATOR);
+ file_path = switch_mprintf("%s%srecorded_name.%s", dir_path, SWITCH_PATH_SEPARATOR, profile->file_ext);
TRY_CODE(create_file(session, profile, VM_RECORD_NAME_MACRO, file_path));
sql = switch_mprintf("update voicemail_prefs set name_path='%s' where user='%s' and domain='%s'", file_path, myid, domain_name);
vm_execute_sql(profile, sql, profile->mutex);
@@ -1321,6 +1357,8 @@
thepass = val;
} else if (!strcasecmp(var, "vm-password")) {
thepass = val;
+ } else if (!strcasecmp(var, "vm-mailto")) {
+ email_vm = switch_core_session_strdup(session, val);
}
}
switch_xml_free(x_domain_root);
@@ -1352,6 +1390,7 @@
}
continue;
+
failed:
status = switch_ivr_phrase_macro(session, VM_FAIL_AUTH_MACRO, NULL, NULL, NULL);
myid = id;
@@ -1378,7 +1417,7 @@
}
}
-
+
static switch_status_t voicemail_leave_main(switch_core_session_t *session, char *profile_name, char *domain_name, char *id)
{
@@ -1395,6 +1434,7 @@
switch_file_handle_t fh = { 0 };
switch_input_args_t args = { 0 };
char *email_vm = NULL;
+ int send_mail = 0;
memset(&cbt, 0, sizeof(cbt));
if (!(profile = switch_core_hash_find(globals.profile_hash, profile_name))) {
@@ -1428,21 +1468,25 @@
assert(xtra);
x_user = x_domain = x_domain_root = NULL;
if (switch_xml_locate_user(id, domain_name, switch_channel_get_variable(channel, "network_addr"),
- &x_domain_root, &x_domain, &x_user, xtra) != SWITCH_STATUS_SUCCESS) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", id, domain_name);
- ok = 0;
- }
-
- if ((x_params = switch_xml_child(x_user, "params"))) {
- for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
- const char *var = switch_xml_attr_soft(x_param, "name");
- const char *val = switch_xml_attr_soft(x_param, "value");
-
- if (!strcasecmp(var, "vm-mailto")) {
- email_vm = switch_core_session_strdup(session, val);
+ &x_domain_root, &x_domain, &x_user, xtra) == SWITCH_STATUS_SUCCESS) {
+ if ((x_params = switch_xml_child(x_user, "params"))) {
+ for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {
+ const char *var = switch_xml_attr_soft(x_param, "name");
+ const char *val = switch_xml_attr_soft(x_param, "value");
+
+ if (!strcasecmp(var, "vm-mailto")) {
+ email_vm = switch_core_session_strdup(session, val);
+ } else if (!strcasecmp(var, "vm-email-all-messages")) {
+ send_mail = switch_true(var);
+ }
}
}
+
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", id, domain_name);
+ ok = 0;
}
+
switch_safe_free(xtra);
switch_xml_free(x_domain_root);
@@ -1457,7 +1501,7 @@
domain_name);
vm_execute_sql_callback(profile, profile->mutex, sql, prefs_callback, &cbt);
- file_path = switch_mprintf("%s%smsg_%s.wav", dir_path, SWITCH_PATH_SEPARATOR, uuid);
+ file_path = switch_mprintf("%s%smsg_%s.%s", dir_path, SWITCH_PATH_SEPARATOR, uuid, profile->file_ext);
memset(&fh, 0, sizeof(fh));
args.input_callback = control_playback;
@@ -1472,7 +1516,7 @@
TRY_CODE(switch_ivr_phrase_macro(session, VM_PLAY_GREETING_MACRO, id, NULL, NULL));
}
- if(switch_channel_ready(channel)) {
+ if(!send_mail && switch_channel_ready(channel)) {
char *usql;
status = create_file(session, profile, VM_RECORD_MESSAGE_MACRO, file_path);
if (status == SWITCH_STATUS_SUCCESS || status == SWITCH_STATUS_BREAK) {
@@ -1489,11 +1533,10 @@
end:
- if (!switch_strlen_zero(email_vm)) {
-
+ if (send_mail && !switch_strlen_zero(email_vm)) {
switch_event_t *event;
- char *from = switch_core_session_sprintf(session, "FreeSWITCH mod_voicemail <%s@%s>", id, domain_name);
- char *headers = switch_core_session_sprintf(session, "Subject: Voicemail from %s %s",
+ char *from = switch_core_session_sprintf(session, "%s@%s", id, domain_name);
+ char *headers = switch_core_session_sprintf(session, "From: FreeSWITCH mod_voicemail <%s@%s>\nSubject: Voicemail from %s %s", id, domain_name,
caller_profile->caller_id_name, caller_profile->caller_id_number);
char *body;
@@ -1510,8 +1553,9 @@
//TBD add better formatting to the body
vm_email(email_vm, from, headers, body, file_path);
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s", email_vm);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending message to %s\n", email_vm);
switch_safe_free(body);
+ unlink(file_path);
}
switch_safe_free(file_path);
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_etpan/mod_spidermonkey_etpan.c Fri Oct 12 09:31:12 2007
@@ -37,20 +37,7 @@
static const char modname[] = "etpan";
-#define B64BUFFLEN 1024
-static const char c64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static int write_buf(int fd, char *buf)
-{
-
- int len = (int) strlen(buf);
- if (fd && write(fd, buf, len) != len) {
- close(fd);
- return 0;
- }
-
- return 1;
-}
/* etpan Object */
/*********************************************************************************/
@@ -74,130 +61,7 @@
etpan_NAME
};
-static JSBool js_email(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval)
-{
- char *to = NULL, *from = NULL, *headers, *body = NULL, *file = NULL;
- char *bound = "XXXX_boundary_XXXX";
- char filename[80], buf[B64BUFFLEN];
- int fd = 0, ifd = 0;
- int x = 0, y = 0, bytes = 0, ilen = 0;
- unsigned int b = 0, l = 0;
- unsigned char in[B64BUFFLEN];
- unsigned char out[B64BUFFLEN + 512];
- char *path = NULL;
-
-
- if (argc > 3 &&
- (from = JS_GetStringBytes(JS_ValueToString(cx, argv[0]))) &&
- (to = JS_GetStringBytes(JS_ValueToString(cx, argv[1]))) &&
- (headers = JS_GetStringBytes(JS_ValueToString(cx, argv[2]))) && (body = JS_GetStringBytes(JS_ValueToString(cx, argv[3])))
- ) {
- if (argc > 4) {
- file = JS_GetStringBytes(JS_ValueToString(cx, argv[4]));
- }
- snprintf(filename, 80, "%smail.%ld%04x", SWITCH_GLOBAL_dirs.temp_dir, time(NULL), rand() & 0xffff);
-
- if ((fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644))) {
- if (file) {
- path = file;
- if ((ifd = open(path, O_RDONLY)) < 1) {
- return JS_FALSE;
- }
-
- snprintf(buf, B64BUFFLEN, "MIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"%s\"\n", bound);
- if (!write_buf(fd, buf)) {
- return JS_FALSE;
- }
- }
-
- if (!write_buf(fd, headers))
- return JS_FALSE;
-
- if (!write_buf(fd, "\n\n"))
- return JS_FALSE;
-
- if (file) {
- snprintf(buf, B64BUFFLEN, "--%s\nContent-Type: text/plain\n\n", bound);
- if (!write_buf(fd, buf))
- return JS_FALSE;
- }
-
- if (!write_buf(fd, body))
- return JS_FALSE;
-
- if (file) {
- snprintf(buf, B64BUFFLEN, "\n\n--%s\nContent-Type: application/octet-stream\n"
- "Content-Transfer-Encoding: base64\n"
- "Content-Description: Sound attachment.\n" "Content-Disposition: attachment; filename=\"%s\"\n\n", bound, (argc > 5) ? JS_GetStringBytes(JS_ValueToString(cx,argv[5])) : switch_cut_path(file));
- if (!write_buf(fd, buf))
- return JS_FALSE;
-
- while ((ilen = read(ifd, in, B64BUFFLEN))) {
- for (x = 0; x < ilen; x++) {
- b = (b << 8) + in[x];
- l += 8;
- while (l >= 6) {
- out[bytes++] = c64[(b >> (l -= 6)) % 64];
- if (++y != 72)
- continue;
- out[bytes++] = '\n';
- y = 0;
- }
- }
- if (write(fd, &out, bytes) != bytes) {
- return -1;
- } else
- bytes = 0;
-
- }
-
- if (l > 0) {
- out[bytes++] = c64[((b % 16) << (6 - l)) % 64];
- }
- if (l != 0)
- while (l < 6) {
- out[bytes++] = '=', l += 2;
- }
- if (write(fd, &out, bytes) != bytes) {
- return -1;
- }
-
- }
-
-
-
- if (file) {
- snprintf(buf, B64BUFFLEN, "\n\n--%s--\n.\n", bound);
- if (!write_buf(fd, buf))
- return JS_FALSE;
- }
- }
- if (fd) {
- close(fd);
- }
- if (ifd) {
- close(ifd);
- }
- snprintf(buf, B64BUFFLEN, "/bin/cat %s | /usr/sbin/sendmail -tf \"%s\" %s", filename, from, to);
- if(!system(buf)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to execute command: %s\n",buf);
- }
-
- unlink(filename);
-
-
- if (file) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Emailed file [%s] to [%s]\n", filename, to);
- } else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Emailed data to [%s]\n", to);
- }
- return JS_TRUE;
- }
-
-
- return JS_FALSE;
-}
static JSFunctionSpec etpan_methods[] = {
// {"myMethod", odbc_my_method, 1},
1
0