fix MODENDP-173
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11320 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
ec3f6f4ec6
commit
7c2bd04232
|
@ -1064,13 +1064,14 @@ SWITCH_STANDARD_API(presence_api_function)
|
|||
|
||||
SWITCH_STANDARD_API(chat_api_function)
|
||||
{
|
||||
char *lbuf, *argv[4];
|
||||
char *lbuf, *argv[5];
|
||||
int argc = 0;
|
||||
|
||||
if (!switch_strlen_zero(cmd) && (lbuf = strdup(cmd))
|
||||
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
|
||||
|
||||
if (switch_core_chat_send(argv[0], "dp", argv[1], argv[2], "", argv[3], NULL, "") == SWITCH_STATUS_SUCCESS) {
|
||||
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) >= 4) {
|
||||
|
||||
if (switch_core_chat_send(argv[0], "dp", argv[1], argv[2], "", argv[3],
|
||||
!switch_strlen_zero(argv[4]) ? argv[4] : NULL , "") == SWITCH_STATUS_SUCCESS) {
|
||||
stream->write_function(stream, "Sent");
|
||||
} else {
|
||||
stream->write_function(stream, "Error! Message Not Sent");
|
||||
|
@ -2487,7 +2488,8 @@ static switch_status_t api_chat_send(const char *proto, const char *from, const
|
|||
switch_api_execute(cmd, arg, NULL, &stream);
|
||||
|
||||
if (proto) {
|
||||
switch_core_chat_send(proto, "api", to, hint && strchr(hint, '/') ? hint : from, "text/plain", (char *) stream.data, NULL, NULL);
|
||||
switch_core_chat_send(proto, "api", to, hint && strchr(hint, '/') ? hint : from,
|
||||
!switch_strlen_zero(type) ? type : NULL, (char *) stream.data, NULL, NULL);
|
||||
}
|
||||
|
||||
switch_safe_free(stream.data);
|
||||
|
@ -2540,7 +2542,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load)
|
|||
SWITCH_ADD_CHAT(chat_interface, "api", api_chat_send);
|
||||
|
||||
SWITCH_ADD_API(api_interface, "strepoch", "Convert a date string into epoch time", strepoch_api_function, "<string>");
|
||||
SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "<proto>|<from>|<to>|<message>");
|
||||
SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "<proto>|<from>|<to>|<message>|[<content-type>]");
|
||||
SWITCH_ADD_API(api_interface, "strftime", "strftime", strftime_api_function, "<format_string>");
|
||||
SWITCH_ADD_API(api_interface, "presence", "presence", presence_api_function, "<user> <rpid> <message>");
|
||||
SWITCH_ADD_APP(app_interface, "privacy", "Set privacy on calls", "Set caller privacy on calls.", privacy_function, "off|on|name|full|number",
|
||||
|
|
|
@ -62,15 +62,15 @@ switch_status_t sofia_presence_chat_send(const char *proto, const char *from, co
|
|||
switch_status_t status = SWITCH_STATUS_FALSE;
|
||||
const char *ct = "text/html";
|
||||
|
||||
if (subject && strchr(subject, '/')) {
|
||||
ct = subject;
|
||||
}
|
||||
|
||||
if (!to) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing To: header.\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!switch_strlen_zero(type)) {
|
||||
ct = type;
|
||||
}
|
||||
|
||||
dup = strdup(to);
|
||||
switch_assert(dup);
|
||||
prof = dup;
|
||||
|
@ -88,13 +88,19 @@ switch_status_t sofia_presence_chat_send(const char *proto, const char *from, co
|
|||
if (!prof) prof = host;
|
||||
}
|
||||
|
||||
if (!host || !(profile = sofia_glue_find_profile(prof))) {
|
||||
if (!prof || !(profile = sofia_glue_find_profile(prof))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR,
|
||||
"Chat proto [%s]\nfrom [%s]\nto [%s]\n%s\nInvalid Profile %s\n", proto, from, to,
|
||||
body ? body : "[no body]", prof ? prof : "NULL");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (switch_strlen_zero(host)) {
|
||||
host = profile->domain_name;
|
||||
if (switch_strlen_zero(host)) {
|
||||
host=prof;
|
||||
}
|
||||
}
|
||||
if (!sofia_reg_find_reg_url(profile, user, host, buf, sizeof(buf))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find user. [%s][%s]\n", user, host);
|
||||
goto end;
|
||||
|
@ -103,22 +109,29 @@ switch_status_t sofia_presence_chat_send(const char *proto, const char *from, co
|
|||
if (!strcasecmp(proto, SOFIA_CHAT_PROTO)) {
|
||||
from = hint;
|
||||
} else {
|
||||
char *fp, *p, *fu = NULL;
|
||||
char *fp, *p = NULL;
|
||||
|
||||
fp = strdup(from);
|
||||
|
||||
if (!fp) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
|
||||
goto end;
|
||||
}
|
||||
|
||||
if ((p = strchr(fp, '@'))) {
|
||||
*p = '\0';
|
||||
fu = strdup(fp);
|
||||
*p = '+';
|
||||
*p++ = '\0';
|
||||
}
|
||||
|
||||
ffrom = switch_mprintf("\"%s\" <sip:%s+%s@%s>", fu, proto, fp, profile->domain_name);
|
||||
if (switch_strlen_zero(p)) {
|
||||
p=profile->domain_name;
|
||||
if (switch_strlen_zero(p)) {
|
||||
p=host;
|
||||
}
|
||||
}
|
||||
|
||||
ffrom = switch_mprintf("\"%s\" <sip:%s+%s@%s>", fp, proto, fp, p);
|
||||
|
||||
from = ffrom;
|
||||
switch_safe_free(fu);
|
||||
switch_safe_free(fp);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue