mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-01 02:52:32 +00:00
mod_voicemail: Add new api call to get user mailbox settings (MODAPP-325)
[profile/]<user>@<domain>[|[name_path|greeting_path|password]] git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14982 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
3bc20b3c43
commit
b447cfab0e
@ -3289,6 +3289,76 @@ done:
|
|||||||
switch_safe_free(dup);
|
switch_safe_free(dup);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
#define PREFS_SYNTAX "[profile/]<user>@<domain>[|[name_path|greeting_path|password]]"
|
||||||
|
SWITCH_STANDARD_API(prefs_api_function)
|
||||||
|
{
|
||||||
|
char *dup = NULL;
|
||||||
|
const char *how = "greeting_path";
|
||||||
|
vm_profile_t *profile = NULL;
|
||||||
|
char *id, *domain, *p, *profilename = NULL;
|
||||||
|
|
||||||
|
if (switch_strlen_zero(cmd)) {
|
||||||
|
stream->write_function(stream, "%d", 0);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
id = dup = strdup(cmd);
|
||||||
|
|
||||||
|
if ((p = strchr(dup, '/'))) {
|
||||||
|
*p++ = '\0';
|
||||||
|
id = p;
|
||||||
|
profilename = dup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strncasecmp(id, "sip:", 4)) {
|
||||||
|
id += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (switch_strlen_zero(id)) {
|
||||||
|
stream->write_function(stream, "%d", 0);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((domain = strchr(id, '@'))) {
|
||||||
|
*domain++ = '\0';
|
||||||
|
if ((p = strchr(domain, '|'))) {
|
||||||
|
*p++ = '\0';
|
||||||
|
how = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!switch_strlen_zero(profilename) && !(profile = get_profile(profilename))) {
|
||||||
|
stream->write_function(stream, "-ERR No such profile\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
if (!(profile = get_profile("default"))) {
|
||||||
|
stream->write_function(stream, "-ERR profile 'default' doesn't exist\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
stream->write_function(stream, "-ERR No domain specified\n");
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
}
|
||||||
|
char sql[256];
|
||||||
|
prefs_callback_t cbt = {{0}};
|
||||||
|
|
||||||
|
switch_snprintf(sql, sizeof(sql), "select * from voicemail_prefs where username='%s' and domain='%s'", id, domain);
|
||||||
|
vm_execute_sql_callback(profile, profile->mutex, sql, prefs_callback, &cbt);
|
||||||
|
|
||||||
|
if (!strcasecmp(how, "greeting_path")) {
|
||||||
|
stream->write_function(stream, "%s", cbt.greeting_path);
|
||||||
|
} else if (!strcasecmp(how, "name_path")) {
|
||||||
|
stream->write_function(stream, "%s", cbt.name_path);
|
||||||
|
} else if (!strcasecmp(how, "password")) {
|
||||||
|
stream->write_function(stream, "%s", cbt.password);
|
||||||
|
} else {
|
||||||
|
stream->write_function(stream, "%s:%s:%s", cbt.greeting_path, cbt.name_path, cbt.password);
|
||||||
|
}
|
||||||
|
profile_rwunlock(profile);
|
||||||
|
done:
|
||||||
|
switch_safe_free(dup);
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
#define parse_profile() {\
|
#define parse_profile() {\
|
||||||
total_new_messages = total_saved_messages = 0; \
|
total_new_messages = total_saved_messages = 0; \
|
||||||
@ -4012,7 +4082,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_voicemail_load)
|
|||||||
SWITCH_ADD_API(commands_api_interface, "voicemail", "voicemail", voicemail_api_function, VOICEMAIL_SYNTAX);
|
SWITCH_ADD_API(commands_api_interface, "voicemail", "voicemail", voicemail_api_function, VOICEMAIL_SYNTAX);
|
||||||
SWITCH_ADD_API(commands_api_interface, "voicemail_inject", "voicemail_inject", voicemail_inject_api_function, VM_INJECT_USAGE);
|
SWITCH_ADD_API(commands_api_interface, "voicemail_inject", "voicemail_inject", voicemail_inject_api_function, VM_INJECT_USAGE);
|
||||||
SWITCH_ADD_API(commands_api_interface, "vm_boxcount", "vm_boxcount", boxcount_api_function, BOXCOUNT_SYNTAX);
|
SWITCH_ADD_API(commands_api_interface, "vm_boxcount", "vm_boxcount", boxcount_api_function, BOXCOUNT_SYNTAX);
|
||||||
|
SWITCH_ADD_API(commands_api_interface, "vm_prefs", "vm_prefs", prefs_api_function, PREFS_SYNTAX);
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user