]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
openzap: custom data
authorMoises Silva <moy@sangoma.com>
Thu, 20 May 2010 20:08:22 +0000 (16:08 -0400)
committerMoises Silva <moy@sangoma.com>
Thu, 20 May 2010 20:08:22 +0000 (16:08 -0400)
libs/openzap/mod_openzap/mod_openzap.c
libs/openzap/src/ozmod/ozmod_sangoma_boost/ozmod_sangoma_boost.c

index 12d1664db1245fdbb95a00a55051194b725efad7..1fb42ea0f510c42f15773dfa9051554ec240429f 100644 (file)
@@ -1244,6 +1244,11 @@ static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *sessi
                caller_data.ani.type = outbound_profile->destination_number_ton;
        }
 
+       if ((var = switch_event_get_header(var_event, "openzap_custom_call_data")) || (var = switch_core_get_variable("openzap_custom_call_data"))) {
+               zap_set_string((char *)caller_data.raw_data, var);
+               caller_data.raw_data_len = strlen(var);
+       }
+
        caller_data.ani.plan = outbound_profile->destination_number_numplan;
 
        /* blindly copy data from outbound_profile. They will be overwritten 
@@ -1438,6 +1443,9 @@ zap_status_t zap_channel_from_event(zap_sigmsg_t *sigmsg, switch_core_session_t
        switch_channel_set_variable(channel, "openzap_span_name", sigmsg->channel->span->name);
        switch_channel_set_variable_printf(channel, "openzap_span_number", "%d", sigmsg->channel->span_id);     
        switch_channel_set_variable_printf(channel, "openzap_chan_number", "%d", sigmsg->channel->chan_id);
+       if (sigmsg->channel->caller_profile.raw_data_len) {
+               switch_channel_set_variable_printf(channel, "openzap_custom_call_data", "%s", sigmsg->channel->caller_profile.raw_data);
+       }
                
        switch_channel_set_state(channel, CS_INIT);
        if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) {
index c32878debdcd09e53a7cdee25e8218be0ad3be88..f2573456903cdbc7c498dbc71f5f9cd79a8b124a 100644 (file)
@@ -338,6 +338,11 @@ static ZIO_CHANNEL_REQUEST_FUNCTION(sangoma_boost_channel_request)
        event.called.ton = caller_data->ani.type;
        event.called.npi = caller_data->ani.plan;
 
+       if (caller_data->raw_data_len) {
+               zap_set_string((char *)event.isup_in_rdnis, (char *)caller_data->raw_data);
+               event.isup_in_rdnis_size = caller_data->raw_data_len;
+       }
+
        OUTBOUND_REQUESTS[r].status = BST_WAITING;
        OUTBOUND_REQUESTS[r].span = span;
 
@@ -826,6 +831,10 @@ static void handle_call_start(zap_span_t *span, sangomabc_connection_t *mcon, sa
        zap_set_string(zchan->caller_data.ani.digits, (char *)event->calling.digits);
        zap_set_string(zchan->caller_data.dnis.digits, (char *)event->called.digits);
        zap_set_string(zchan->caller_data.rdnis.digits, (char *)event->rdnis.digits);
+       if (event->isup_in_rdnis_size) {
+               zap_set_string((char *)zchan->caller_data.raw_data, (char *)event->isup_in_rdnis);
+               zchan->caller_data.raw_data_len = event->isup_in_rdnis_size;
+       }
 
        if (strlen(event->calling_name)) {
                zap_set_string(zchan->caller_data.cid_name, (char *)event->calling_name);