]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
cdr update
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 20 Dec 2007 17:27:11 +0000 (17:27 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 20 Dec 2007 17:27:11 +0000 (17:27 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6916 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_channel.h
src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c
src/switch_channel.c
src/switch_ivr.c

index 4437a846cb5268b677d203d473649e683db6623f..f0d1b52d5e60c759d248082339e1b6cc77c985fa 100644 (file)
@@ -41,6 +41,7 @@
 #include <switch.h>
 
 SWITCH_BEGIN_EXTERN_C struct switch_channel_timetable {
+       switch_time_t profile_created;
        switch_time_t created;
        switch_time_t answered;
        switch_time_t hungup;
index c57123b265cd1ede451ceb1163bbea7c7b27e7a6..f5b872e316fbcc00e7e6e6db145186289a6a23ed 100644 (file)
@@ -164,10 +164,10 @@ static switch_status_t my_on_hangup(switch_core_session_t *session)
        
        switch_app_log_t *app_log, *ap;
        char *last_app = NULL, *last_arg = NULL;
-       char start[80] = "", answer[80] = "", end[80] = "", tmp[80] = "";
+       char start[80] = "", answer[80] = "", end[80] = "", tmp[80] = "", profile_start[80] = "";
        int32_t duration = 0, billsec = 0, mduration = 0, billmsec = 0;
        switch_time_t uduration = 0, billusec = 0;
-       time_t tt_created = 0, tt_answered = 0, tt_hungup = 0, mtt_created = 0, mtt_answered = 0, mtt_hungup = 0;
+       time_t tt_created = 0, tt_answered = 0, tt_hungup = 0, mtt_created = 0, mtt_answered = 0, mtt_hungup = 0, tt_prof_created, mtt_prof_created;
 
        if (switch_channel_get_originator_caller_profile(channel)) {
                return SWITCH_STATUS_SUCCESS;
@@ -207,6 +207,10 @@ static switch_status_t my_on_hangup(switch_core_session_t *session)
                switch_strftime(start, &retsize, sizeof(start), fmt, &tm);
                switch_channel_set_variable(channel, "start_stamp", start);
 
+               switch_time_exp_lt(&tm, caller_profile->times->profile_created);
+               switch_strftime(profile_start, &retsize, sizeof(profile_start), fmt, &tm);
+               switch_channel_set_variable(channel, "profile_start_stamp", profile_start);
+
                switch_time_exp_lt(&tm, caller_profile->times->answered);
                switch_strftime(answer, &retsize, sizeof(answer), fmt, &tm);
                switch_channel_set_variable(channel, "answer_stamp", answer);
@@ -217,10 +221,17 @@ static switch_status_t my_on_hangup(switch_core_session_t *session)
 
                tt_created = (time_t) (caller_profile->times->created / 1000000);
                mtt_created = (time_t) (caller_profile->times->created / 1000);
+               tt_prof_created = (time_t) (caller_profile->times->profile_created / 1000000);
+               mtt_prof_created = (time_t) (caller_profile->times->profile_created / 1000);
                switch_snprintf(tmp, sizeof(tmp), "%" TIME_T_FMT, tt_created);
                switch_channel_set_variable(channel, "start_epoch", tmp);
                switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created);
                switch_channel_set_variable(channel, "start_uepoch", tmp);
+
+               switch_snprintf(tmp, sizeof(tmp), "%" TIME_T_FMT, tt_prof_created);
+               switch_channel_set_variable(channel, "profile_start_epoch", tmp);
+               switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created);
+               switch_channel_set_variable(channel, "profile_start_uepoch", tmp);
                
                tt_answered = (time_t) (caller_profile->times->answered / 1000000);
                mtt_answered = (time_t) (caller_profile->times->answered / 1000);
index 4c4c971733ec1a1a8ffc0d3387966e90a7f9e0ae..9fec168a02e483f1efbf8bbcae1de5660e2ec8e7 100644 (file)
@@ -957,11 +957,13 @@ SWITCH_DECLARE(void) switch_channel_set_caller_profile(switch_channel_t *channel
        }
 
        caller_profile->times = (switch_channel_timetable_t *) switch_core_session_alloc(channel->session, sizeof(*caller_profile->times));
-       caller_profile->times->created = switch_time_now();
+       caller_profile->times->profile_created = switch_time_now();
 
        if (channel->caller_profile && channel->caller_profile->times) {
-               channel->caller_profile->times->transferred = caller_profile->times->created;
+               channel->caller_profile->times->transferred = caller_profile->times->profile_created;
                caller_profile->times->answered = channel->caller_profile->times->answered;
+               caller_profile->times->created = channel->caller_profile->times->created;
+               caller_profile->times->hungup = channel->caller_profile->times->hungup;
        }
 
        caller_profile->next = channel->caller_profile;
index 5b3d6eba05074eb0ed828826525a524884847689..b2b3c5d6b8f1d45b41527ead8d0edd5adcb9f05d 100644 (file)
@@ -1460,6 +1460,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_generate_xml_cdr(switch_core_session_
                        switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->created);
                        switch_xml_set_txt_d(time_tag, tmp);
 
+                       if (!(time_tag = switch_xml_add_child_d(x_times, "profile_created_time", t_off++))) {
+                               goto error;
+                       }
+                       switch_snprintf(tmp, sizeof(tmp), "%" SWITCH_TIME_T_FMT, caller_profile->times->profile_created);
+                       switch_xml_set_txt_d(time_tag, tmp);
+
                        if (!(time_tag = switch_xml_add_child_d(x_times, "answered_time", t_off++))) {
                                goto error;
                        }