mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-23 11:36:09 +00:00
update caller_id not callee_id when getting a display update from an inbound leg
This commit is contained in:
parent
f8d263683a
commit
dcb4beb12f
@ -833,13 +833,26 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
const char *val;
|
const char *val;
|
||||||
int fs = 0, lazy = 0, att = 0;
|
int fs = 0, lazy = 0, att = 0;
|
||||||
|
const char *name_var = "callee_id_name";
|
||||||
|
const char *num_var = "callee_id_number";
|
||||||
|
const char *ename_var = "effective_callee_id_name";
|
||||||
|
const char *enum_var = "effective_callee_id_number";
|
||||||
|
|
||||||
if (switch_true(switch_channel_get_variable(channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) {
|
if (switch_true(switch_channel_get_variable(channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
number = (char *) switch_channel_get_variable(channel, "callee_id_number");
|
|
||||||
name = (char *) switch_channel_get_variable(channel, "callee_id_name");
|
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
|
||||||
|
name_var = "caller_id_name";
|
||||||
|
num_var = "caller_id_number";
|
||||||
|
ename_var = "effective_caller_id_name";
|
||||||
|
enum_var = "effective_caller_id_number";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
number = (char *) switch_channel_get_variable(channel, num_var);
|
||||||
|
name = (char *) switch_channel_get_variable(channel, name_var);
|
||||||
|
|
||||||
|
|
||||||
if (zstr(number) && sip->sip_to) {
|
if (zstr(number) && sip->sip_to) {
|
||||||
@ -886,18 +899,18 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((tmp = switch_channel_get_variable(channel, "effective_callee_id_name")) ||
|
if (((tmp = switch_channel_get_variable(channel, ename_var)) ||
|
||||||
(tmp = switch_channel_get_variable(channel, "sip_callee_id_name"))) && !zstr(tmp)) {
|
(tmp = switch_channel_get_variable(channel, "sip_callee_id_name"))) && !zstr(tmp)) {
|
||||||
name = (char *) tmp;
|
name = (char *) tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((tmp = switch_channel_get_variable(channel, "effective_callee_id_number")) ||
|
if (((tmp = switch_channel_get_variable(channel, enum_var)) ||
|
||||||
(tmp = switch_channel_get_variable(channel, "sip_callee_id_number"))) && !zstr(tmp)) {
|
(tmp = switch_channel_get_variable(channel, "sip_callee_id_number"))) && !zstr(tmp)) {
|
||||||
number = tmp;
|
number = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zstr(number)) {
|
if (zstr(number)) {
|
||||||
if ((tmp = switch_channel_get_variable(channel, "callee_id_number")) && !zstr(tmp)) {
|
if ((tmp = switch_channel_get_variable(channel, num_var)) && !zstr(tmp)) {
|
||||||
number = (char *) tmp;
|
number = (char *) tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -907,7 +920,7 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (zstr(name)) {
|
if (zstr(name)) {
|
||||||
if ((tmp = switch_channel_get_variable(channel, "callee_id_name")) && !zstr(tmp)) {
|
if ((tmp = switch_channel_get_variable(channel, name_var)) && !zstr(tmp)) {
|
||||||
name = (char *) tmp;
|
name = (char *) tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -922,6 +935,19 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
|
|
||||||
caller_profile = switch_channel_get_caller_profile(channel);
|
caller_profile = switch_channel_get_caller_profile(channel);
|
||||||
|
|
||||||
|
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
|
||||||
|
|
||||||
|
if (!strcmp(caller_profile->caller_id_name, name) && !strcmp(caller_profile->caller_id_number, number)) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Caller ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
send = 0;
|
||||||
|
} else {
|
||||||
|
caller_profile->caller_id_name = switch_sanitize_number(switch_core_strdup(caller_profile->pool, name));
|
||||||
|
caller_profile->caller_id_number = switch_sanitize_number(switch_core_strdup(caller_profile->pool, number));
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Update Caller ID to \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
if (!strcmp(caller_profile->callee_id_name, name) && !strcmp(caller_profile->callee_id_number, number)) {
|
if (!strcmp(caller_profile->callee_id_name, name) && !strcmp(caller_profile->callee_id_number, number)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Callee ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Callee ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
send = 0;
|
send = 0;
|
||||||
@ -934,6 +960,7 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
switch_channel_flip_cid(channel);
|
switch_channel_flip_cid(channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (send) {
|
if (send) {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user