diff --git a/cdrs/fscdr.go b/cdrs/fscdr.go index 807087778..ebb2b7277 100644 --- a/cdrs/fscdr.go +++ b/cdrs/fscdr.go @@ -115,13 +115,14 @@ func (fsCdr FSCdr) GetFallbackSubj() string { return cfg.DefaultSubject } func (fsCdr FSCdr) GetAnswerTime() (t time.Time, err error) { - st, err := strconv.ParseInt(fsCdr[FS_ANSWER_TIME], 0, 64) - t = time.Unix(0, st*1000) + //ToDo: Make sure we work with UTC instead of local time + at, err := strconv.ParseInt(fsCdr[FS_ANSWER_TIME], 0, 64) + t = time.Unix(at, 0) return } func (fsCdr FSCdr) GetHangupTime() (t time.Time, err error) { - st, err := strconv.ParseInt(fsCdr[FS_HANGUP_TIME], 0, 64) - t = time.Unix(0, st*1000) + hupt, err := strconv.ParseInt(fsCdr[FS_HANGUP_TIME], 0, 64) + t = time.Unix(hupt, 0) return } diff --git a/cdrs/fscdr_test.go b/cdrs/fscdr_test.go index 69efa10f8..5e400b400 100644 --- a/cdrs/fscdr_test.go +++ b/cdrs/fscdr_test.go @@ -20,9 +20,12 @@ package cdrs import ( "testing" + "time" + "github.com/cgrates/cgrates/utils" + "github.com/cgrates/cgrates/config" ) -var body = []byte(`{"core-uuid":"9b8ce609-6413-437b-8cf3-bbb92aaf720a","channel_data":{"state":"CS_REPORTING","direction":"inbound","state_number":"11","flags":"0=1;1=1;3=1;36=1;37=1;39=1;42=1;47=1;49=1;52=1;72=1;74=1","caps":"1=1;2=1;3=1;4=1;5=1;6=1"},"variables":{"direction":"inbound","uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","session_id":"5","sip_from_user":"1001","sip_from_uri":"1001%40192.168.56.10","sip_from_host":"192.168.56.10","channel_name":"sofia/internal/1001%40192.168.56.10","sip_local_network_addr":"192.168.56.10","sip_network_ip":"192.168.56.1","sip_network_port":"5060","sip_received_ip":"192.168.56.1","sip_received_port":"5060","sip_via_protocol":"udp","sip_authorized":"true","sip_number_alias":"1001","sip_auth_username":"1001","sip_auth_realm":"192.168.56.10","number_alias":"1001","user_name":"1001","domain_name":"192.168.56.10","record_stereo":"true","default_gateway":"example.com","default_areacode":"918","transfer_fallback_extension":"operator","toll_allow":"domestic,international,local","accountcode":"1001","user_context":"default","effective_caller_id_name":"Extension%201001","effective_caller_id_number":"1001","outbound_caller_id_name":"FreeSWITCH","outbound_caller_id_number":"0000000000","callgroup":"techsupport","sip_from_user_stripped":"1001","sofia_profile_name":"internal","recovery_profile_name":"internal","sip_req_user":"1002","sip_req_uri":"1002%40192.168.56.10","sip_req_host":"192.168.56.10","sip_to_user":"1002","sip_to_uri":"1002%40192.168.56.10","sip_to_host":"192.168.56.10","sip_contact_params":"transport%3Dudp%3Bregistering_acc%3D192_168_56_10","sip_contact_user":"1001","sip_contact_port":"5060","sip_contact_uri":"1001%40192.168.56.1%3A5060","sip_contact_host":"192.168.56.1","sip_user_agent":"Jitsi2.2.4603.9615Linux","sip_via_host":"192.168.56.1","sip_via_port":"5060","max_forwards":"70","presence_id":"1001%40192.168.56.10","ep_codec_string":"PCMA%408000h%4020i%4064000b,PCMU%408000h%4020i%4064000b","DP_MATCH":"ARRAY%3A%3A1002%7C%3A1002","call_uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","open":"true","RFC2822_DATE":"Thu,%2016%20May%202013%2014%3A33%3A28%20%2B0200","dialed_extension":"1002","export_vars":"RFC2822_DATE,dialed_extension","ringback":"%25(2000,4000,440,480)","transfer_ringback":"local_stream%3A//moh","call_timeout":"30","hangup_after_bridge":"true","continue_on_fail":"true","called_party_callgroup":"techsupport","current_application_data":"user/1002%40192.168.56.10","current_application":"bridge","dialed_user":"1002","dialed_domain":"192.168.56.10","inherit_codec":"true","originated_legs":"ARRAY%3A%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BOutbound%20Call%3B1002%7C%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BOutbound%20Call%3B1002","sip_use_codec_name":"PCMA","sip_use_codec_rate":"8000","sip_use_codec_ptime":"20","write_codec":"PCMA","write_rate":"8000","video_possible":"true","local_media_ip":"192.168.56.10","local_media_port":"23158","advertised_media_ip":"192.168.56.10","sip_use_pt":"8","rtp_use_ssrc":"1387666080","zrtp_secure_media_confirmed_audio":"true","zrtp_sas1_string_audio":"xyhx","switch_m_sdp":"v%3D0%0D%0Ao%3D1002%200%200%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205022%20RTP/AVP%208%200%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0A","read_codec":"PCMA","read_rate":"8000","endpoint_disposition":"ANSWER","originate_causes":"ARRAY%3A%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BNONE%7C%3A28262ed6-9d57-4dac-8f0b-9cad38cc5183%3BNONE","originate_disposition":"SUCCESS","DIALSTATUS":"SUCCESS","last_bridge_to":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","bridge_channel":"sofia/internal/sip%3A1002%40192.168.56.1%3A5060","bridge_uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","signal_bond":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","last_sent_callee_id_name":"Outbound%20Call","last_sent_callee_id_number":"1002","sip_reinvite_sdp":"v%3D0%0D%0Ao%3D1001%200%201%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205018%20RTP/AVP%2096%208%200%0D%0Aa%3Dsendonly%0D%0Aa%3Drtpmap%3A96%20opus/48000%0D%0Aa%3Dfmtp%3A96%20usedtx%3D1%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0Aa%3Dextmap%3A1%20urn%3Aietf%3Aparams%3Artp-hdrext%3Acsrc-audio-level%0D%0Aa%3Dzrtp-hash%3A1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94%0D%0Am%3Dvideo%200%20RTP/AVP%2097%2099%0D%0A","switch_r_sdp":"v%3D0%0D%0Ao%3D1001%200%201%20IN%20IP4%20192.168.56.1%0D%0As%3D-%0D%0Ac%3DIN%20IP4%20192.168.56.1%0D%0At%3D0%200%0D%0Am%3Daudio%205018%20RTP/AVP%2096%208%200%0D%0Aa%3Drtpmap%3A96%20opus/48000%0D%0Aa%3Dfmtp%3A96%20usedtx%3D1%0D%0Aa%3Drtpmap%3A8%20PCMA/8000%0D%0Aa%3Drtpmap%3A0%20PCMU/8000%0D%0Aa%3Dsendonly%0D%0Aa%3Dextmap%3A1%20urn%3Aietf%3Aparams%3Artp-hdrext%3Acsrc-audio-level%0D%0Aa%3Dzrtp-hash%3A1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94%0D%0Am%3Dvideo%200%20RTP/AVP%2097%2099%0D%0A","r_sdp_audio_zrtp_hash":"1.10%2038d673831a623b1f80d4fe539ab9e2199ac7d5aa2c9dc2822940f8a016beac94","remote_media_ip":"192.168.56.1","remote_media_port":"5018","sip_audio_recv_pt":"8","dtmf_type":"info","sip_local_sdp_str":"v%3D0%0Ao%3DFreeSWITCH%201368684450%201368684453%20IN%20IP4%20192.168.56.10%0As%3DFreeSWITCH%0Ac%3DIN%20IP4%20192.168.56.10%0At%3D0%200%0Am%3Daudio%2023158%20RTP/AVP%208%0Aa%3Drtpmap%3A8%20PCMA/8000%0Aa%3DsilenceSupp%3Aoff%20-%20-%20-%20-%0Aa%3Dptime%3A20%0Aa%3Dsendrecv%0A","sip_to_tag":"4yBBm5aFZ22vN","sip_from_tag":"d62e0dad","sip_cseq":"3","sip_call_id":"774f3a8a01222f664e6edebd372eef3d%400%3A0%3A0%3A0%3A0%3A0%3A0%3A0","sip_full_via":"SIP/2.0/UDP%20192.168.56.1%3A5060%3Bbranch%3Dz9hG4bK-343439-77113007fa4585ae040b5845fa11d4e8","sip_from_display":"1001","sip_full_from":"%221001%22%20%3Csip%3A1001%40192.168.56.10%3E%3Btag%3Dd62e0dad","sip_full_to":"%3Csip%3A1002%40192.168.56.10%3E%3Btag%3D4yBBm5aFZ22vN","sip_hangup_phrase":"OK","last_bridge_hangup_cause":"NORMAL_CLEARING","last_bridge_proto_specific_hangup_cause":"sip%3A200","bridge_hangup_cause":"NORMAL_CLEARING","hangup_cause":"NORMAL_CLEARING","hangup_cause_q850":"16","digits_dialed":"none","start_stamp":"2013-05-16%2014%3A33%3A28","profile_start_stamp":"2013-05-16%2014%3A33%3A28","answer_stamp":"2013-05-16%2014%3A33%3A31","bridge_stamp":"2013-05-16%2014%3A33%3A31","hold_stamp":"2013-05-16%2014%3A33%3A31","progress_stamp":"2013-05-16%2014%3A33%3A28","progress_media_stamp":"2013-05-16%2014%3A33%3A28","hold_events":"%7B%7B1368707611507967,1368707632287684%7D%7D","end_stamp":"2013-05-16%2014%3A33%3A52","start_epoch":"1368707608","start_uepoch":"1368707608847154","profile_start_epoch":"1368707608","profile_start_uepoch":"1368707608847154","answer_epoch":"1368707611","answer_uepoch":"1368707611310737","bridge_epoch":"1368707611","bridge_uepoch":"1368707611310737","last_hold_epoch":"1368707611","last_hold_uepoch":"1368707611507966","hold_accum_seconds":"0","hold_accum_usec":"0","hold_accum_ms":"0","resurrect_epoch":"0","resurrect_uepoch":"0","progress_epoch":"1368707608","progress_uepoch":"1368707608927201","progress_media_epoch":"1368707608","progress_media_uepoch":"1368707608947168","end_epoch":"1368707632","end_uepoch":"1368707632287198","last_app":"bridge","last_arg":"user/1002%40192.168.56.10","caller_id":"%221001%22%20%3C1001%3E","duration":"24","billsec":"21","progresssec":"0","answersec":"3","waitsec":"3","progress_mediasec":"0","flow_billsec":"24","mduration":"23440","billmsec":"20977","progressmsec":"80","answermsec":"2463","waitmsec":"2463","progress_mediamsec":"100","flow_billmsec":"23440","uduration":"23440044","billusec":"20976461","progressusec":"80047","answerusec":"2463583","waitusec":"2463583","progress_mediausec":"100014","flow_billusec":"23440044","sip_hangup_disposition":"send_bye","rtp_audio_in_raw_bytes":"202404","rtp_audio_in_media_bytes":"201524","rtp_audio_in_packet_count":"1150","rtp_audio_in_media_packet_count":"1145","rtp_audio_in_skip_packet_count":"36","rtp_audio_in_jb_packet_count":"0","rtp_audio_in_dtmf_packet_count":"0","rtp_audio_in_cng_packet_count":"0","rtp_audio_in_flush_packet_count":"5","rtp_audio_in_largest_jb_size":"0","rtp_audio_out_raw_bytes":"193228","rtp_audio_out_media_bytes":"193228","rtp_audio_out_packet_count":"1098","rtp_audio_out_media_packet_count":"1098","rtp_audio_out_skip_packet_count":"0","rtp_audio_out_dtmf_packet_count":"0","rtp_audio_out_cng_packet_count":"0","rtp_audio_rtcp_packet_count":"0","rtp_audio_rtcp_octet_count":"0"},"app_log":{"applications":[{"app_name":"set","app_data":"open=true"},{"app_name":"hash","app_data":"insert/192.168.56.10-spymap/1001/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/1001/1002"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/global/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"export","app_data":"RFC2822_DATE=Thu, 16 May 2013 14:33:28 +0200"},{"app_name":"export","app_data":"dialed_extension=1002"},{"app_name":"bind_meta_app","app_data":"1 b s execute_extension::dx XML features"},{"app_name":"bind_meta_app","app_data":"2 b s record_session::/var/lib/freeswitch/recordings/1001.2013-05-16-14-33-28.wav"},{"app_name":"bind_meta_app","app_data":"3 b s execute_extension::cf XML features"},{"app_name":"bind_meta_app","app_data":"4 b s execute_extension::att_xfer XML features"},{"app_name":"set","app_data":"ringback=%(2000,4000,440,480)"},{"app_name":"set","app_data":"transfer_ringback=local_stream://moh"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"hash","app_data":"insert/192.168.56.10-call_return/1002/1001"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/1002/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"set","app_data":"called_party_callgroup=techsupport"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/techsupport/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial_ext/global/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"hash","app_data":"insert/192.168.56.10-last_dial/techsupport/c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e"},{"app_name":"bridge","app_data":"user/1002@192.168.56.10"}]},"callflow":{"dialplan":"XML","profile_index":"1","extension":{"name":"tod_example","number":"1002","applications":[{"app_name":"set","app_data":"open=true"},{"app_name":"hash","app_data":"insert/${domain_name}-spymap/${caller_id_number}/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/${caller_id_number}/${destination_number}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/global/${uuid}"},{"app_name":"export","app_data":"RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"},{"app_name":"export","app_data":"dialed_extension=1002"},{"app_name":"bind_meta_app","app_data":"1 b s execute_extension::dx XML features"},{"app_name":"bind_meta_app","app_data":"2 b s record_session::/var/lib/freeswitch/recordings/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"},{"app_name":"bind_meta_app","app_data":"3 b s execute_extension::cf XML features"},{"app_name":"bind_meta_app","app_data":"4 b s execute_extension::att_xfer XML features"},{"app_name":"set","app_data":"ringback=${us-ring}"},{"app_name":"set","app_data":"transfer_ringback=local_stream://moh"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"hash","app_data":"insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"},{"app_name":"set","app_data":"called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial_ext/global/${uuid}"},{"app_name":"hash","app_data":"insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"},{"app_name":"bridge","app_data":"user/${dialed_extension}@${domain_name}"},{"last_executed":"true","app_name":"answer","app_data":""},{"app_name":"sleep","app_data":"1000"},{"app_name":"bridge","app_data":"loopback/app=voicemail:default ${domain_name} ${dialed_extension}"}],"current_app":"answer"},"caller_profile":{"username":"1001","dialplan":"XML","caller_id_name":"1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"c8ccef5e-34c2-4fd2-9a2e-fa6f295f3a1e","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.10","originatee":{"originatee_caller_profiles":[{"username":"1001","dialplan":"XML","caller_id_name":"Extension 1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","source":"mod_sofia","context":"default","chan_name":"sofia/internal/sip:1002@192.168.56.1:5060"},{"username":"1001","dialplan":"XML","caller_id_name":"Extension 1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"","destination_number":"1002","uuid":"28262ed6-9d57-4dac-8f0b-9cad38cc5183","source":"mod_sofia","context":"default","chan_name":"sofia/internal/sip:1002@192.168.56.1:5060"}]}},"times":{"created_time":"1368707608847154","profile_created_time":"1368707608847154","progress_time":"1368707608927201","progress_media_time":"1368707608947168","answered_time":"1368707611310737","hangup_time":"1368707632287198","resurrect_time":"0","transfer_time":"0"}}}`) +var body = []byte(`{"core-uuid":"844715f9-d8a1-44d6-a4bf-358bec5e10b8","channel_data":{"state":"CS_REPORTING","direction":"inbound","state_number":"11","flags":"0=1;1=1;3=1;19=1;23=1;36=1;37=1;39=1;42=1;47=1;52=1","caps":"1=1;2=1;3=1;4=1;5=1;6=1"},"variables":{"direction":"inbound","uuid":"01df56f4-d99a-4ef6-b7fe-b924b2415b7f","session_id":"33","sip_from_user":"dan","sip_from_uri":"dan@ipbx.itsyscom.com","sip_from_host":"ipbx.itsyscom.com","channel_name":"sofia/ipbxas/dan@ipbx.itsyscom.com","sip_local_network_addr":"127.0.0.1","sip_network_ip":"2.3.4.5","sip_network_port":"5060","sip_received_ip":"2.3.4.5","sip_received_port":"5060","sip_via_protocol":"udp","sip_from_user_stripped":"dan","sofia_profile_name":"ipbxas","recovery_profile_name":"ipbxas","sip_invite_record_route":"","sip_req_user":"+4986517174963","sip_req_port":"5080","sip_req_uri":"+4986517174963@127.0.0.1:5080","sip_req_host":"127.0.0.1","sip_to_user":"+4986517174963","sip_to_uri":"+4986517174963@ipbx.itsyscom.com","sip_to_host":"ipbx.itsyscom.com","sip_contact_params":"alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com","sip_contact_user":"dan","sip_contact_port":"5060","sip_contact_uri":"dan@10.10.10.154:5060","sip_contact_host":"10.10.10.154","sip_user_agent":"Jitsi2.2.4603.9615Linux","sip_via_host":"2.3.4.5","presence_id":"dan@ipbx.itsyscom.com","sip_h_X-AuthType":"SUA","sip_h_X-AuthUser":"dan","sip_h_X-AuthDomain":"ipbx.itsyscom.com","sip_h_X-BalancerIP":"2.3.4.5","switch_r_sdp":"v=0\r\no=dan 0 0 IN IP4 10.10.10.154\r\ns=-\r\nc=IN IP4 10.10.10.154\r\nt=0 0\r\nm=audio 5004 RTP/AVP 96 8 0\r\na=rtpmap:96 opus/48000\r\na=fmtp:96 usedtx=1\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:0 PCMU/8000\r\na=extmap:1 urn:ietf:params:rtp-hdrext:csrc-audio-level\r\nm=video 5006 RTP/AVP 97 99\r\na=rtpmap:97 H264/90000\r\na=fmtp:97 profile-level-id=4DE01f;packetization-mode=1\r\na=rtpmap:99 H264/90000\r\na=fmtp:99 profile-level-id=4DE01f\r\na=recvonly\r\na=imageattr:97 send [x=[0-640],y=[0-480]] recv [x=[0-1280],y=[0-800]]\r\na=imageattr:99 send [x=[0-640],y=[0-480]] recv [x=[0-1280],y=[0-800]]\r\n","ep_codec_string":"PCMA@8000h@20i@64000b,PCMU@8000h@20i@64000b,H264@90000h","effective_caller_id_number":"+4986517174960","hangup_after_bridge":"true","continue_on_fail":"true","cgr_tenant":"ipbx.itsyscom.com","cgr_tor":"call","cgr_account":"dan","cgr_subject":"dan","cgr_destination":"+4986517174963","sip_redirect_contact_0":";q=1","sip_redirected_to":";q=1","sip_redirect_contact_user_0":"dan","sip_redirect_contact_host_0":"10.10.10.141","sip_redirect_contact_params_0":"alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072","sip_redirect_dialstring_0":"sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072","sip_redirect_contact_1":"","sip_redirect_contact_user_1":"dan","sip_redirect_contact_host_1":"10.10.10.154","sip_redirect_contact_params_1":"alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060","sip_redirect_dialstring_1":"sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060","sip_redirect_dialstring":"sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072,sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060","max_forwards":"15","transfer_history":"1375609854:d2300128-6724-471c-a495-a3f7a985a2b6:bl_xfer:dan/redirected/XML","transfer_source":"1375609854:d2300128-6724-471c-a495-a3f7a985a2b6:bl_xfer:dan/redirected/XML","call_uuid":"01df56f4-d99a-4ef6-b7fe-b924b2415b7f","current_application_data":"sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060;fs_path=sip:2.3.4.5,sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072;fs_path=sip:2.3.4.5","current_application":"bridge","originated_legs":"ARRAY::e377c077-0f1f-4b7d-b036-1aeef13eff32;Outbound Call;dan|:8f7c860f-0619-4d3c-9515-cc23b0fa3997;Outbound Call;dan","switch_m_sdp":"v=0\r\no=root 975388641 975388642 IN IP4 10.10.10.141\r\ns=call\r\nc=IN IP4 10.10.10.141\r\nt=0 0\r\nm=audio 59976 RTP/AVP 8 0 9 3 101\r\na=rtpmap:8 pcma/8000\r\na=rtpmap:0 pcmu/8000\r\na=rtpmap:9 g722/8000\r\na=rtpmap:3 gsm/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-16\r\na=ptime:20\r\nm=video 0 RTP/AVP 98 99\r\na=rtpmap:98 H264/90000\r\na=fmtp:98 profile-level-id=4DE01f\r\na=rtpmap:99 H264/90000\r\na=fmtp:99 profile-level-id=4DE01f\r\n","rtp_use_codec_string":"G722,G722.1,G729,PCMU,PCMA,GSM,H264","sip_audio_recv_pt":"0","sip_use_codec_name":"PCMU","sip_use_codec_rate":"8000","sip_use_codec_ptime":"20","read_codec":"PCMU","read_rate":"8000","write_codec":"PCMU","write_rate":"8000","dtmf_type":"info","video_possible":"true","remote_video_ip":"10.10.10.154","remote_video_port":"5006","sip_video_fmtp":"profile-level-id=4DE01f;packetization-mode=1","sip_video_pt":"97","sip_video_recv_pt":"97","video_read_codec":"H264","video_read_rate":"90000","video_write_codec":"H264","video_write_rate":"90000","sip_use_video_codec_name":"H264","sip_use_video_codec_fmtp":"profile-level-id=4DE01f;packetization-mode=1","sip_use_video_codec_rate":"90000","sip_use_video_codec_ptime":"0","local_media_ip":"2.3.4.5","local_media_port":"29452","advertised_media_ip":"2.3.4.5","sip_use_pt":"0","rtp_use_ssrc":"1408273224","local_video_ip":"2.3.4.5","local_video_port":"22648","sip_use_video_pt":"97","rtp_use_video_ssrc":"1408273224","sip_local_sdp_str":"v=0\no=iPBXCell 1375580404 1375580405 IN IP4 2.3.4.5\ns=iPBXCell\nc=IN IP4 2.3.4.5\nt=0 0\nm=audio 29452 RTP/AVP 0\na=rtpmap:0 PCMU/8000\na=silenceSupp:off - - - -\na=ptime:20\na=sendrecv\nm=video 22648 RTP/AVP 97\na=rtpmap:97 H264/90000\n","endpoint_disposition":"ANSWER","originate_disposition":"SUCCESS","DIALSTATUS":"SUCCESS","originate_causes":"ARRAY::e377c077-0f1f-4b7d-b036-1aeef13eff32;LOSE_RACE|:8f7c860f-0619-4d3c-9515-cc23b0fa3997;NONE","last_bridge_to":"8f7c860f-0619-4d3c-9515-cc23b0fa3997","bridge_channel":"sofia/ipbxas/sip:dan@10.10.10.141:3072","bridge_uuid":"8f7c860f-0619-4d3c-9515-cc23b0fa3997","signal_bond":"8f7c860f-0619-4d3c-9515-cc23b0fa3997","sip_to_tag":"4X345vQvQyetD","sip_from_tag":"9f90cc40","sip_cseq":"2","sip_call_id":"ca9c5e20caeaa6596be8cf66261f13e5@0:0:0:0:0:0:0:0","sip_full_via":"SIP/2.0/UDP 2.3.4.5;branch=z9hG4bKcydzigwkX,SIP/2.0/UDP 10.10.10.154:5060;rport=5060;received=1.2.3.4;branch=z9hG4bK-313937-b78ce2a1daafe532fc34b1b3735727ac","sip_from_display":"dan","sip_full_from":"\"dan\" ;tag=9f90cc40","sip_full_to":";tag=4X345vQvQyetD","last_sent_callee_id_name":"Outbound Call","last_sent_callee_id_number":"dan","remote_media_ip_reported":"10.10.10.154","remote_media_ip":"1.2.3.4","remote_media_port_reported":"5004","remote_media_port":"5004","rtp_auto_adjust":"true","sip_hangup_phrase":"OK","last_bridge_hangup_cause":"NORMAL_CLEARING","last_bridge_proto_specific_hangup_cause":"sip:200","bridge_hangup_cause":"NORMAL_CLEARING","hangup_cause":"NORMAL_CLEARING","hangup_cause_q850":"16","digits_dialed":"none","start_stamp":"2013-08-04 11:50:54","profile_start_stamp":"2013-08-04 11:50:54","answer_stamp":"2013-08-04 11:50:56","bridge_stamp":"2013-08-04 11:50:56","progress_stamp":"2013-08-04 11:50:54","progress_media_stamp":"2013-08-04 11:50:56","end_stamp":"2013-08-04 11:51:00","start_epoch":"1375609854","start_uepoch":"1375609854385581","profile_start_epoch":"1375609854","profile_start_uepoch":"1375609854385581","answer_epoch":"1375609856","answer_uepoch":"1375609856285587","bridge_epoch":"1375609856","bridge_uepoch":"1375609856285587","last_hold_epoch":"0","last_hold_uepoch":"0","hold_accum_seconds":"0","hold_accum_usec":"0","hold_accum_ms":"0","resurrect_epoch":"0","resurrect_uepoch":"0","progress_epoch":"1375609854","progress_uepoch":"1375609854505584","progress_media_epoch":"1375609856","progress_media_uepoch":"1375609856285587","end_epoch":"1375609860","end_uepoch":"1375609860205563","last_app":"bridge","last_arg":"sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060;fs_path=sip:2.3.4.5,sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072;fs_path=sip:2.3.4.5","caller_id":"\"dan\" ","duration":"6","billsec":"4","progresssec":"0","answersec":"2","waitsec":"2","progress_mediasec":"2","flow_billsec":"6","mduration":"5820","billmsec":"3920","progressmsec":"120","answermsec":"1900","waitmsec":"1900","progress_mediamsec":"1900","flow_billmsec":"5820","uduration":"5819982","billusec":"3919976","progressusec":"120003","answerusec":"1900006","waitusec":"1900006","progress_mediausec":"1900006","flow_billusec":"5819982","sip_hangup_disposition":"send_bye","rtp_audio_in_raw_bytes":"32968","rtp_audio_in_media_bytes":"32960","rtp_audio_in_packet_count":"207","rtp_audio_in_media_packet_count":"205","rtp_audio_in_skip_packet_count":"6","rtp_audio_in_jb_packet_count":"0","rtp_audio_in_dtmf_packet_count":"0","rtp_audio_in_cng_packet_count":"0","rtp_audio_in_flush_packet_count":"2","rtp_audio_in_largest_jb_size":"0","rtp_audio_out_raw_bytes":"31648","rtp_audio_out_media_bytes":"31648","rtp_audio_out_packet_count":"184","rtp_audio_out_media_packet_count":"184","rtp_audio_out_skip_packet_count":"0","rtp_audio_out_dtmf_packet_count":"0","rtp_audio_out_cng_packet_count":"0","rtp_audio_rtcp_packet_count":"0","rtp_audio_rtcp_octet_count":"0","rtp_video_in_raw_bytes":"0","rtp_video_in_media_bytes":"0","rtp_video_in_packet_count":"0","rtp_video_in_media_packet_count":"0","rtp_video_in_skip_packet_count":"0","rtp_video_in_jb_packet_count":"0","rtp_video_in_dtmf_packet_count":"0","rtp_video_in_cng_packet_count":"0","rtp_video_in_flush_packet_count":"0","rtp_video_in_largest_jb_size":"0","rtp_video_out_raw_bytes":"0","rtp_video_out_media_bytes":"0","rtp_video_out_packet_count":"0","rtp_video_out_media_packet_count":"0","rtp_video_out_skip_packet_count":"0","rtp_video_out_dtmf_packet_count":"0","rtp_video_out_cng_packet_count":"0","rtp_video_rtcp_packet_count":"0","rtp_video_rtcp_octet_count":"0"},"app_log":{"applications":[{"app_name":"set","app_data":"effective_caller_id_number=+4986517174960"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"set","app_data":"cgr_tenant=ipbx.itsyscom.com"},{"app_name":"set","app_data":"cgr_tor=call"},{"app_name":"set","app_data":"cgr_account=dan"},{"app_name":"set","app_data":"cgr_subject=dan"},{"app_name":"set","app_data":"cgr_destination=+4986517174963"},{"app_name":"bridge","app_data":"{presence_id=dan@ipbx.itsyscom.com,sip_redirect_fork=true}sofia/ipbxas/dan@ipbx.itsyscom.com;fs_path=sip:2.3.4.5"},{"app_name":"bridge","app_data":"sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060;fs_path=sip:2.3.4.5,sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072;fs_path=sip:2.3.4.5"}]},"callflow":{"dialplan":"XML","profile_index":"2","extension":{"name":"Redirected call","number":"dan","applications":[{"app_name":"bridge","app_data":"sofia/ipbxas/sip:dan@10.10.10.154:5060;alias=1.2.3.4~5060~1;transport=udp;registering_acc=ipbx_itsyscom_com;rcv=sip:1.2.3.4:5060;fs_path=sip:2.3.4.5,sofia/ipbxas/sip:dan@10.10.10.141:3072;alias=1.2.3.4~3072~1;line=x81npwse;rcv=sip:1.2.3.4:3072;fs_path=sip:2.3.4.5"}]},"caller_profile":{"username":"dan","dialplan":"XML","caller_id_name":"dan","ani":"dan","aniii":"","caller_id_number":"dan","network_addr":"2.3.4.5","rdnis":"+4986517174963","destination_number":"dan","uuid":"01df56f4-d99a-4ef6-b7fe-b924b2415b7f","source":"mod_sofia","context":"redirected","chan_name":"sofia/ipbxas/dan@ipbx.itsyscom.com","originatee":{"originatee_caller_profiles":[{"username":"dan","dialplan":"XML","caller_id_name":"dan","ani":"dan","aniii":"","caller_id_number":"+4986517174960","network_addr":"2.3.4.5","rdnis":"+4986517174963","destination_number":"dan","uuid":"8f7c860f-0619-4d3c-9515-cc23b0fa3997","source":"mod_sofia","context":"redirected","chan_name":"sofia/ipbxas/sip:dan@10.10.10.141:3072"}]}},"times":{"created_time":"1375609854385581","profile_created_time":"1375609854385581","progress_time":"1375609854505584","progress_media_time":"1375609856285587","answered_time":"1375609856285587","hangup_time":"1375609860205563","resurrect_time":"0","transfer_time":"0"}},"callflow":{"dialplan":"XML","profile_index":"1","extension":{"name":"OnNet Call","number":"+4986517174963","applications":[{"app_name":"set","app_data":"effective_caller_id_number=+4986517174960"},{"app_name":"set","app_data":"hangup_after_bridge=true"},{"app_name":"set","app_data":"continue_on_fail=true"},{"app_name":"set","app_data":"cgr_tenant=ipbx.itsyscom.com"},{"app_name":"set","app_data":"cgr_tor=call"},{"app_name":"set","app_data":"cgr_account=dan"},{"app_name":"set","app_data":"cgr_subject=dan"},{"app_name":"set","app_data":"cgr_destination=+4986517174963"},{"app_name":"bridge","app_data":"{presence_id=dan@ipbx.itsyscom.com,sip_redirect_fork=true}sofia/ipbxas/dan@ipbx.itsyscom.com;fs_path=sip:2.3.4.5"}]},"caller_profile":{"username":"dan","dialplan":"XML","caller_id_name":"dan","ani":"dan","aniii":"","caller_id_number":"dan","network_addr":"2.3.4.5","rdnis":"","destination_number":"+4986517174963","uuid":"01df56f4-d99a-4ef6-b7fe-b924b2415b7f","source":"mod_sofia","context":"ipbxas","chan_name":"sofia/ipbxas/dan@ipbx.itsyscom.com"},"times":{"created_time":"1375609854385581","profile_created_time":"1375609854385581","progress_time":"0","progress_media_time":"0","answered_time":"0","hangup_time":"0","resurrect_time":"0","transfer_time":"1375609854385581"}}}`) func TestFirstNonEmpty(t *testing.T) { fsCdr, err := new(FSCdr).New(body) @@ -30,7 +33,61 @@ func TestFirstNonEmpty(t *testing.T) { t.Errorf("Error loading cdr: %v", err) } fsc := fsCdr.(FSCdr) - if _, ok := fsc["dialed_user"]; !ok { + if _, ok := fsc["cgr_destination"]; !ok { t.Error("Error parsing cdr: ", fsCdr) } } + +func TestCDRFields(t *testing.T) { + cfg,_ = config.NewDefaultCGRConfig() + fsCdr, err := new(FSCdr).New(body) + if err != nil { + t.Errorf("Error loading cdr: %v", err) + } + if fsCdr.GetCgrId() != utils.FSCgrId("01df56f4-d99a-4ef6-b7fe-b924b2415b7f") { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetAccId() != "01df56f4-d99a-4ef6-b7fe-b924b2415b7f" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetCdrHost() != "127.0.0.1" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetDirection() != "*out" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetOrigId() != "ca9c5e20caeaa6596be8cf66261f13e5@0:0:0:0:0:0:0:0" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetSubject() != "dan" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetAccount() != "dan" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetDestination() != "+4986517174963" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetTOR() != "call" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetTenant() != "ipbx.itsyscom.com" { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetReqType() != utils.RATED { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetFallbackSubj() != "0" { + t.Error("Error parsing cdr: ", fsCdr) + } + answerTime,_ := fsCdr.GetAnswerTime() + expectedATime,_ := time.Parse(time.RFC3339, "2013-08-04T09:50:56Z") + if answerTime.UTC() != expectedATime { + t.Error("Error parsing cdr: ", fsCdr) + } + if fsCdr.GetDuration() != 4 { + t.Error("Error parsing cdr: ", fsCdr) + } + + +} diff --git a/cmd/stress/cgr-raterstress/cgr-raterstress.go b/cmd/stress/cgr-raterstress/cgr-raterstress.go index 465c5c7de..3341d5e41 100644 --- a/cmd/stress/cgr-raterstress/cgr-raterstress.go +++ b/cmd/stress/cgr-raterstress/cgr-raterstress.go @@ -42,7 +42,7 @@ func main() { t1 := time.Date(2012, time.February, 02, 17, 30, 0, 0, time.UTC) t2 := time.Date(2012, time.February, 02, 18, 30, 0, 0, time.UTC) - cd := engine.CallDescriptor{Direction: "OUT", TOR: "0", Tenant: "vdf", Subject: "rif", Destination: "0256", TimeStart: t1, TimeEnd: t2} + cd := engine.CallDescriptor{Direction: "*out", TOR: "0", Tenant: "vdf", Subject: "rif", Destination: "0256", TimeStart: t1, TimeEnd: t2} result := engine.CallCost{} var client *rpc.Client var err error diff --git a/cmd/stress/cgr-raterstress/cgr-raterstress.py b/cmd/stress/cgr-raterstress/cgr-raterstress.py index c019c31af..855523afe 100644 --- a/cmd/stress/cgr-raterstress/cgr-raterstress.py +++ b/cmd/stress/cgr-raterstress/cgr-raterstress.py @@ -43,7 +43,7 @@ class JSONClient(object): rpc =JSONClient(("127.0.0.1", 2012)) -cd = {"Direction":"OUT", "TOR":"0", "Tenant": "vdf", "Subject": "rif", "DestinationPrefix": "0256", "TimeStart": "2012-02-02T17:30:00Z", "TimeEnd": "2012-02-02T18:30:00Z"} +cd = {"Direction":"*out", "TOR":"0", "Tenant": "vdf", "Subject": "rif", "DestinationPrefix": "0256", "TimeStart": "2012-02-02T17:30:00Z", "TimeEnd": "2012-02-02T18:30:00Z"} # alternative to the above s = socket.create_connection(("127.0.0.1", 2012)) diff --git a/cmd/stress/cgr-spansstress/cgr-spansstress.go b/cmd/stress/cgr-spansstress/cgr-spansstress.go index dbc43e4c1..ceaad72ad 100644 --- a/cmd/stress/cgr-spansstress/cgr-spansstress.go +++ b/cmd/stress/cgr-spansstress/cgr-spansstress.go @@ -57,7 +57,7 @@ func main() { } t1 := time.Date(2012, time.February, 02, 17, 30, 0, 0, time.UTC) t2 := time.Date(2012, time.February, 02, 18, 30, 0, 0, time.UTC) - cd := engine.CallDescriptor{Direction: "OUT", TOR: "0", Tenant: "vdf", Subject: "rif", Destination: "0256", TimeStart: t1, TimeEnd: t2} + cd := engine.CallDescriptor{Direction: "*out", TOR: "0", Tenant: "vdf", Subject: "rif", Destination: "0256", TimeStart: t1, TimeEnd: t2} getter, err := engine.NewRedisStorage("localhost:6379", 10, "") //getter, err := engine.NewMongoStorage("localhost", "cgrates") diff --git a/console/balance.go b/console/balance.go index 4930fb41b..ec541ad07 100644 --- a/console/balance.go +++ b/console/balance.go @@ -26,7 +26,7 @@ func (self *CmdGetBalance) Usage(name string) string { // set param defaults func (self *CmdGetBalance) defaults() error { self.rpcMethod = "Responder.GetMonetary" - self.rpcParams = &engine.CallDescriptor{Direction: "OUT"} + self.rpcParams = &engine.CallDescriptor{Direction: "*out"} return nil } diff --git a/docs/api_tpaccountactions.rst b/docs/api_tpaccountactions.rst index dd529bebc..113471c8d 100644 --- a/docs/api_tpaccountactions.rst +++ b/docs/api_tpaccountactions.rst @@ -32,7 +32,7 @@ Creates a new AccountActions profile within a tariff plan. "AccountActionsId": "AA_SAMPLE_2", "ActionTimingsId": "SAMPLE_AT_1", "ActionTriggersId": "SAMPLE_ATRS_1", - "Direction": "OUT", + "Direction": "*out", "TPid": "SAMPLE_TP_1", "Tenant": "TENANT1" } @@ -124,7 +124,7 @@ Queries specific AccountActions profile on tariff plan. "AccountActionsId": "AA_SAMPLE_2", "ActionTimingsId": "SAMPLE_AT_1", "ActionTriggersId": "SAMPLE_ATRS_1", - "Direction": "OUT", + "Direction": "*out", "TPid": "SAMPLE_TP_1", "Tenant": "TENANT1" } diff --git a/docs/api_tpactiontriggers.rst b/docs/api_tpactiontriggers.rst index 35a2f4132..3518dc58f 100644 --- a/docs/api_tpactiontriggers.rst +++ b/docs/api_tpactiontriggers.rst @@ -38,9 +38,9 @@ Creates a new ActionTriggers profile within a tariff plan. "ActionTriggers": [ { "ActionsId": "ACTION_1", - "BalanceType": "MONETARY", + "BalanceType": "*monetary", "DestinationId": "", - "Direction": "OUT", + "Direction": "*out", "ThresholdType": "MIN_BALANCE", "ThresholdValue": 5, "Weight": 10 diff --git a/docs/api_tpratingprofiles.rst b/docs/api_tpratingprofiles.rst index 376a9370e..5038bd9c4 100644 --- a/docs/api_tpratingprofiles.rst +++ b/docs/api_tpratingprofiles.rst @@ -13,7 +13,7 @@ Creates a new RatingProfile within a tariff plan. RatingProfileId string // RatingProfile id Tenant string // Tenant's Id TOR string // TypeOfRecord - Direction string // Traffic direction, OUT is the only one supported for now + Direction string // Traffic direction, *out is the only one supported for now Subject string // Rating subject, usually the same as account RatesFallbackSubject string // Fallback on this subject if rates not found for destination RatingActivations []RatingActivation // Activate rate profiles at specific time @@ -34,7 +34,7 @@ Creates a new RatingProfile within a tariff plan. "method": "Apier.SetTPRatingProfile", "params": [ { - "Direction": "OUT", + "Direction": "*out", "RatingProfileId": "SAMPLE_RP_2", "RatingActivations": [ { @@ -123,7 +123,7 @@ Queries specific RatingProfile on tariff plan. RatingProfileId string // RatingProfile id Tenant string // Tenant's Id TOR string // TypeOfRecord - Direction string // Traffic direction, OUT is the only one supported for now + Direction string // Traffic direction, *out is the only one supported for now Subject string // Rating subject, usually the same as account RatesFallbackSubject string // Fallback on this subject if rates not found for destination RatingActivations []RatingActivation // Activate rate profiles at specific time @@ -141,7 +141,7 @@ Queries specific RatingProfile on tariff plan. "error": null, "id": 0, "result": { - "Direction": "OUT", + "Direction": "*out", "RatingProfileId": "SAMPLE_RP_2", "RatesFallbackSubject": "", "RatingActivations": [ diff --git a/mediator/fsfilecsvcdr.go b/mediator/fsfilecsvcdr.go index 213c280b4..8ff2e0974 100644 --- a/mediator/fsfilecsvcdr.go +++ b/mediator/fsfilecsvcdr.go @@ -60,7 +60,7 @@ func (self *FScsvCDR) GetCdrHost() string { } func (self *FScsvCDR) GetDirection() string { - return "OUT" + return "*out" } func (self *FScsvCDR) GetOrigId() string { diff --git a/mediator/mediator.go b/mediator/mediator.go index 8c4e7a502..5bd2c2600 100644 --- a/mediator/mediator.go +++ b/mediator/mediator.go @@ -183,7 +183,7 @@ func (self *Mediator) getCostsFromRater(cdr utils.CDR) (*engine.CallCost, error) return nil, err } cd := engine.CallDescriptor{ - Direction: "OUT", //record[m.directionFields[runIdx]] TODO: fix me + Direction: "*out", //record[m.directionFields[runIdx]] TODO: fix me Tenant: cdr.GetTenant(), TOR: cdr.GetTOR(), Subject: cdr.GetSubject(), diff --git a/sessionmanager/fsevent.go b/sessionmanager/fsevent.go index 91f669445..fd143d98e 100644 --- a/sessionmanager/fsevent.go +++ b/sessionmanager/fsevent.go @@ -80,6 +80,7 @@ func (fsev FSEvent) GetName() string { } func (fsev FSEvent) GetDirection() string { //TODO: implement direction + fmt.Println("Returning direction *out") return "*out" //return fsev[DIRECTION] }