Revision
17510
Author
math.parent
Date
2010-05-10 11:19:57 -0500 (Mon, 10 May 2010)

Log Message

Skinny: better call info

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_skinny/skinny_protocol.c (17509 => 17510)


--- freeswitch/trunk/src/mod/endpoints/mod_skinny/skinny_protocol.c	2010-05-10 16:19:57 UTC (rev 17509)
+++ freeswitch/trunk/src/mod/endpoints/mod_skinny/skinny_protocol.c	2010-05-10 16:19:57 UTC (rev 17510)
@@ -270,40 +270,48 @@
 	private_t *tech_pvt;
 	switch_channel_t *channel;
 
-	char calling_party_name[40] = "UNKNOWN";
-	char calling_party[24] = "0000000000";
-	char called_party_name[40] = "UNKNOWN";
-	char called_party[24] = "0000000000";
+	char *calling_party_name;
+	char *calling_party_number;
+	char *called_party_name;
+	char *called_party_number;
+	uint32_t call_type = 0;
 
 	channel = switch_core_session_get_channel(session);
 	tech_pvt = switch_core_session_get_private(session);
 
 	switch_assert(tech_pvt->caller_profile != NULL);
 
-	if(	switch_channel_test_flag(channel, CF_OUTBOUND) ) {
-	    struct line_stat_res_message *button = NULL;
-
-	    skinny_line_get(listener, line_instance, &button);
-
-	    if (button) {
-		    strncpy(calling_party_name, button->displayname, 40);
-		    strncpy(calling_party, button->name, 24);
-	    }	
-		strncpy(called_party_name, tech_pvt->caller_profile->caller_id_name, 40);
-		strncpy(called_party, tech_pvt->caller_profile->caller_id_number, 24);
+	/* Calling party */
+	if (zstr((calling_party_name = switch_channel_get_variable(channel, "effective_callee_id_name"))) &&
+		zstr((calling_party_name = switch_channel_get_variable(channel, "callee_id_name")))) {
+		calling_party_name = SWITCH_DEFAULT_CLID_NAME;
+	}
+	if (zstr((calling_party_number = switch_channel_get_variable(channel, "effective_callee_id_number"))) &&
+		zstr((calling_party_number = switch_channel_get_variable(channel, "callee_id_number")))) {
+		calling_party_number = "0000000000";
+	}
+	/* Called party */
+	if (zstr((called_party_name = switch_channel_get_variable(channel, "effective_called_id_name"))) &&
+		zstr((called_party_name = switch_channel_get_variable(channel, "called_id_name")))) {
+		called_party_name = SWITCH_DEFAULT_CLID_NAME;
+	}
+	if (zstr((called_party_number = switch_channel_get_variable(channel, "effective_called_id_number"))) &&
+		zstr((called_party_number = switch_channel_get_variable(channel, "called_id_number")))) {
+		called_party_number = "0000000000";
+	}
+	if (switch_channel_test_flag(channel, CF_OUTBOUND)) {
+		call_type = SKINNY_OUTBOUND_CALL;
 	} else {
-		strncpy(calling_party_name, tech_pvt->caller_profile->caller_id_name, 40);
-		strncpy(calling_party, tech_pvt->caller_profile->caller_id_number, 24);
-		/* TODO called party */
+		call_type = SKINNY_INBOUND_CALL;
 	}
 	send_call_info(listener,
 		calling_party_name, /* char calling_party_name[40], */
-		calling_party, /* char calling_party[24], */
+		calling_party_number, /* char calling_party[24], */
 		called_party_name, /* char called_party_name[40], */
-		called_party, /* char called_party[24], */
+		called_party_number, /* char called_party[24], */
 		line_instance, /* uint32_t line_instance, */
 		tech_pvt->call_id, /* uint32_t call_id, */
-		SKINNY_OUTBOUND_CALL, /* uint32_t call_type, */
+		call_type, /* uint32_t call_type, */
 		"", /* TODO char original_called_party_name[40], */
 		"", /* TODO char original_called_party[24], */
 		"", /* TODO char last_redirecting_party_name[40], */