diff --git a/agents/astagent.go b/agents/astagent.go index 22c74266e..5f67309a1 100644 --- a/agents/astagent.go +++ b/agents/astagent.go @@ -38,7 +38,7 @@ import ( const ( CGRAuthAPP = "cgrates_auth" CGRMaxSessionTime = "CGRMaxSessionTime" - CGRSupplier = "CGRSupplier" + CGRRoute = "CGRRoute" ARIStasisStart = "StasisStart" ARIChannelStateChange = "ChannelStateChange" ARIChannelDestroyed = "ChannelDestroyed" @@ -211,7 +211,7 @@ func (sma *AsteriskAgent) handleStasisStart(ev *SMAsteriskEvent) { if authReply.Routes != nil { for i, route := range authReply.Routes.SortedRoutes { if !sma.setChannelVar(ev.ChannelID(), - CGRSupplier+strconv.Itoa(i+1), route.RouteID) { + CGRRoute+strconv.Itoa(i+1), route.RouteID) { return } } diff --git a/agents/asterisk_event.go b/agents/asterisk_event.go index 0a90f2b3d..c79c42cea 100644 --- a/agents/asterisk_event.go +++ b/agents/asterisk_event.go @@ -156,8 +156,8 @@ func (smaEv *SMAsteriskEvent) PDD() string { return smaEv.cachedFields[utils.CGR_PDD] } -func (smaEv *SMAsteriskEvent) Supplier() string { - return smaEv.cachedFields[utils.CGR_SUPPLIER] +func (smaEv *SMAsteriskEvent) Route() string { + return smaEv.cachedFields[utils.CGR_ROUTE] } func (smaEv *SMAsteriskEvent) Subsystems() string { @@ -179,7 +179,7 @@ func (smaEv *SMAsteriskEvent) DisconnectCause() string { } var primaryFields = utils.NewStringSet([]string{eventType, channelID, timestamp, utils.SetupTime, utils.CGR_ACCOUNT, utils.CGR_DESTINATION, utils.CGR_REQTYPE, - utils.CGR_TENANT, utils.CGR_CATEGORY, utils.CGR_SUBJECT, utils.CGR_PDD, utils.CGR_SUPPLIER, utils.CGR_DISCONNECT_CAUSE}) + utils.CGR_TENANT, utils.CGR_CATEGORY, utils.CGR_SUBJECT, utils.CGR_PDD, utils.CGR_ROUTE, utils.CGR_DISCONNECT_CAUSE}) func (smaEv *SMAsteriskEvent) ExtraParameters() (extraParams map[string]string) { extraParams = make(map[string]string) @@ -248,8 +248,8 @@ func (smaEv *SMAsteriskEvent) AsMapStringInterface() (mp map[string]interface{}) mp[utils.Account] = smaEv.Account() mp[utils.Destination] = smaEv.Destination() mp[utils.SetupTime] = smaEv.SetupTime() - if smaEv.Supplier() != "" { - mp[utils.SUPPLIER] = smaEv.Supplier() + if smaEv.Route() != "" { + mp[utils.ROUTE] = smaEv.Route() } for extraKey, extraVal := range smaEv.ExtraParameters() { // Append extraParameters mp[extraKey] = extraVal diff --git a/agents/asterisk_event_test.go b/agents/asterisk_event_test.go index b6d7549d3..0c03bdfb5 100644 --- a/agents/asterisk_event_test.go +++ b/agents/asterisk_event_test.go @@ -28,7 +28,7 @@ import ( ) var ( - stasisStart = `{"application":"cgrates_auth","type":"StasisStart","timestamp":"2016-09-12T13:53:48.919+0200","args":["cgr_reqtype=*prepaid","cgr_supplier=supplier1", "extra1=val1", "extra2=val2"],"channel":{"id":"1473681228.6","state":"Ring","name":"PJSIP/1001-00000004","caller":{"name":"1001","number":"1001"},"language":"en","connected":{"name":"","number":""},"accountcode":"","dialplan":{"context":"internal","exten":"1002","priority":2},"creationtime":"2016-09-12T13:53:48.918+0200"}}` + stasisStart = `{"application":"cgrates_auth","type":"StasisStart","timestamp":"2016-09-12T13:53:48.919+0200","args":["cgr_reqtype=*prepaid","cgr_route=supplier1", "extra1=val1", "extra2=val2"],"channel":{"id":"1473681228.6","state":"Ring","name":"PJSIP/1001-00000004","caller":{"name":"1001","number":"1001"},"language":"en","connected":{"name":"","number":""},"accountcode":"","dialplan":{"context":"internal","exten":"1002","priority":2},"creationtime":"2016-09-12T13:53:48.918+0200"}}` channelStateChange = `{"application":"cgrates_auth","type":"ChannelStateChange","timestamp":"2016-09-12T13:53:52.110+0200","channel":{"id":"1473681228.6","state":"Up","name":"PJSIP/1001-00000004","caller":{"name":"1001","number":"1001"},"language":"en","connected":{"name":"","number":"1002"},"accountcode":"","dialplan":{"context":"internal","exten":"1002","priority":3},"creationtime":"2016-09-12T13:53:48.918+0200"}}` channelAnsweredDestroyed = `{"type":"ChannelDestroyed","timestamp":"2016-09-12T13:54:27.335+0200","application":"cgrates_auth","cause_txt":"Normal Clearing","channel":{"id":"1473681228.6","state":"Up","name":"PJSIP/1001-00000004","caller":{"name":"1001","number":"1001"},"language":"en","connected":{"name":"","number":"1002"},"accountcode":"","dialplan":{"context":"internal","exten":"1002","priority":3},"creationtime":"2016-09-12T13:53:48.918+0200"},"cause":16}` channelUnansweredDestroyed = `{"type":"ChannelDestroyed","timestamp":"2016-09-12T18:00:18.121+0200","application":"cgrates_auth","cause_txt":"Normal Clearing","channel":{"id":"1473696018.2","state":"Ring","name":"PJSIP/1002-00000002","caller":{"name":"1002","number":"1002"},"language":"en","connected":{"name":"","number":""},"accountcode":"","dialplan":{"context":"internal","exten":"1002","priority":2},"creationtime":"2016-09-12T18:00:18.109+0200"},"cause":16}` @@ -41,7 +41,7 @@ func TestSMAParseStasisArgs(t *testing.T) { t.Error(err) } smaEv := NewSMAsteriskEvent(ev, "127.0.0.1", "") - expAppArgs := map[string]string{"cgr_reqtype": "*prepaid", "cgr_supplier": "supplier1", "extra1": "val1", "extra2": "val2"} + expAppArgs := map[string]string{"cgr_reqtype": "*prepaid", "cgr_route": "supplier1", "extra1": "val1", "extra2": "val2"} if !reflect.DeepEqual(smaEv.cachedFields, expAppArgs) { t.Errorf("Expecting: %+v, received: %+v", smaEv.cachedFields, expAppArgs) } @@ -280,19 +280,19 @@ func TestSMAEventPDD(t *testing.T) { } } -func TestSMAEventSupplier(t *testing.T) { +func TestSMAEventRoute(t *testing.T) { var ev map[string]interface{} if err := json.Unmarshal([]byte(stasisStart), &ev); err != nil { t.Error(err) } smaEv := NewSMAsteriskEvent(ev, "127.0.0.1", "") - if smaEv.Supplier() != "supplier1" { - t.Error("Received:", smaEv.Supplier()) + if smaEv.Route() != "supplier1" { + t.Error("Received:", smaEv.Route()) } - ev = map[string]interface{}{"args": []interface{}{"cgr_supplier=supplier1"}} // Clear previous data + ev = map[string]interface{}{"args": []interface{}{"cgr_route=supplier1"}} // Clear previous data smaEv = NewSMAsteriskEvent(ev, "127.0.0.1", "") - if smaEv.Supplier() != "supplier1" { - t.Error("Received:", smaEv.Supplier()) + if smaEv.Route() != "supplier1" { + t.Error("Received:", smaEv.Route()) } } diff --git a/agents/fsevent.go b/agents/fsevent.go index d82f61b53..833d47bb6 100644 --- a/agents/fsevent.go +++ b/agents/fsevent.go @@ -40,7 +40,7 @@ const ( DESTINATION = varPrefix + utils.CGR_DESTINATION REQTYPE = varPrefix + utils.CGR_REQTYPE //prepaid or postpaid CATEGORY = varPrefix + utils.CGR_CATEGORY - VAR_CGR_SUPPLIER = varPrefix + utils.CGR_SUPPLIER + VAR_CGR_ROUTE = varPrefix + utils.CGR_ROUTE UUID = "Unique-ID" // -Unique ID for this call leg CSTMID = varPrefix + utils.CGR_TENANT CALL_DEST_NR = "Caller-Destination-Number" @@ -259,11 +259,11 @@ func (fsev FSEvent) GetADC(fieldName string) (time.Duration, error) { return utils.ParseDurationWithSecs(ACDStr) } -func (fsev FSEvent) GetSupplier(fieldName string) string { +func (fsev FSEvent) GetRoute(fieldName string) string { if strings.HasPrefix(fieldName, utils.STATIC_VALUE_PREFIX) { // Static value return fieldName[len(utils.STATIC_VALUE_PREFIX):] } - return utils.FirstNonEmpty(fsev[fieldName], fsev[VAR_CGR_SUPPLIER]) + return utils.FirstNonEmpty(fsev[fieldName], fsev[VAR_CGR_ROUTE]) } func (fsev FSEvent) GetDisconnectCause(fieldName string) string { @@ -333,8 +333,8 @@ func (fsev FSEvent) ParseEventValue(rsrFld *config.RSRParser, timezone string) ( case utils.PDD: PDD, _ := fsev.GetPdd(utils.MetaDefault) return rsrFld.ParseValue(strconv.FormatFloat(PDD.Seconds(), 'f', -1, 64)) - case utils.SUPPLIER: - return rsrFld.ParseValue(fsev.GetSupplier("")) + case utils.ROUTE: + return rsrFld.ParseValue(fsev.GetRoute("")) case utils.DISCONNECT_CAUSE: return rsrFld.ParseValue(fsev.GetDisconnectCause("")) case utils.RunID: @@ -386,7 +386,7 @@ func (fsev FSEvent) AsMapStringInterface(timezone string) map[string]interface{} mp[utils.PDD], _ = fsev.GetPdd(utils.MetaDefault) mp[utils.ACD], _ = fsev.GetADC(utils.MetaDefault) mp[utils.COST] = -1.0 - mp[utils.SUPPLIER] = fsev.GetSupplier(utils.MetaDefault) + mp[utils.ROUTE] = fsev.GetRoute(utils.MetaDefault) mp[utils.DISCONNECT_CAUSE] = fsev.GetDisconnectCause(utils.MetaDefault) return mp } diff --git a/agents/fsevent_test.go b/agents/fsevent_test.go index df10dfe8a..e1073cd38 100644 --- a/agents/fsevent_test.go +++ b/agents/fsevent_test.go @@ -163,7 +163,7 @@ variable_outbound_caller_id_name: FreeSWITCH variable_outbound_caller_id_number: 0000000000 variable_callgroup: techsupport variable_cgr_reqtype: *prepaid -variable_cgr_supplier: supplier1 +variable_cgr_route: supplier1 variable_user_name: 1001 variable_domain_name: cgrates.org variable_sip_from_user_stripped: 1001 @@ -535,7 +535,7 @@ func TestParseEventValue(t *testing.T) { if parsed, _ := ev.ParseEventValue(config.NewRSRParserMustCompile(utils.DynamicDataPrefix+utils.PDD), ""); parsed != "0.028" { t.Error("Unexpected result parsed", parsed) } - if parsed, _ := ev.ParseEventValue(config.NewRSRParserMustCompile(utils.DynamicDataPrefix+utils.SUPPLIER), ""); parsed != "supplier1" { + if parsed, _ := ev.ParseEventValue(config.NewRSRParserMustCompile(utils.DynamicDataPrefix+utils.ROUTE), ""); parsed != "supplier1" { t.Error("Unexpected result parsed", parsed) } if parsed, _ := ev.ParseEventValue(config.NewRSRParserMustCompile(utils.DynamicDataPrefix+utils.RunID), ""); parsed != utils.MetaDefault { @@ -597,7 +597,7 @@ func TestFsEvAsMapStringInterface(t *testing.T) { expectedMap[utils.PDD] = time.Duration(28) * time.Millisecond expectedMap[utils.ACD] = time.Duration(30) * time.Second expectedMap[utils.DISCONNECT_CAUSE] = "NORMAL_CLEARING" - expectedMap[utils.SUPPLIER] = "supplier1" + expectedMap[utils.ROUTE] = "supplier1" if storedMap := ev.AsMapStringInterface(""); !reflect.DeepEqual(expectedMap, storedMap) { t.Errorf("Expecting: %s, received: %s", utils.ToJSON(expectedMap), utils.ToJSON(storedMap)) } @@ -639,7 +639,7 @@ func TestSliceAsFsArray(t *testing.T) { // Make sure processing of the hangup event produces the same output as FS-JSON CDR func TestSyncFsEventWithJsonCdr(t *testing.T) { body := []byte(` -{"core-uuid":"63e2315b-d538-4dfa-9ed5-af73ba6210b6","switchname":"teo","channel_data":{"state":"CS_REPORTING","state_number":"11","flags":"0=1;1=1;3=1;20=1;37=1;38=1;40=1;43=1;48=1;53=1;75=1;77=1;106=1;112=1;113=1;122=1;134=1","caps":"1=1;2=1;3=1;4=1;5=1;6=1"},"callStats":{"audio":{"inbound":{"raw_bytes":174156,"media_bytes":166416,"packet_count":1033,"media_packet_count":988,"skip_packet_count":7,"jitter_packet_count":0,"dtmf_packet_count":0,"cng_packet_count":0,"flush_packet_count":45,"largest_jb_size":0,"jitter_min_variance":0.500000,"jitter_max_variance":31.769231,"jitter_loss_rate":0,"jitter_burst_rate":0,"mean_interval":20.171779,"flaw_total":1,"quality_percentage":99,"mos":4.492027,"errorLog":[{"start":1521025783725905,"stop":1521025788366141,"flaws":10763,"consecutiveFlaws":0,"durationMS":4640}]},"outbound":{"raw_bytes":43344,"media_bytes":43344,"packet_count":252,"media_packet_count":252,"skip_packet_count":0,"dtmf_packet_count":0,"cng_packet_count":0,"rtcp_packet_count":0,"rtcp_octet_count":0}}},"variables":{"uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","session_id":"1","sip_from_user":"1001","sip_from_uri":"1001@192.168.56.202","sip_from_host":"192.168.56.202","channel_name":"sofia/internal/1001@192.168.56.202","ep_codec_string":"mod_spandsp.G722@8000h@20i@64000b,CORE_PCM_MODULE.PCMU@8000h@20i@64000b,CORE_PCM_MODULE.PCMA@8000h@20i@64000b,mod_spandsp.GSM@8000h@20i@13200b","sip_local_network_addr":"192.168.56.202","sip_network_ip":"192.168.56.1","sip_network_port":"5060","sip_invite_stamp":"1521025758006702","sip_received_ip":"192.168.56.1","sip_received_port":"5060","sip_via_protocol":"udp","sip_authorized":"true","Event-Name":"REQUEST_PARAMS","Core-UUID":"63e2315b-d538-4dfa-9ed5-af73ba6210b6","FreeSWITCH-Hostname":"teo","FreeSWITCH-Switchname":"teo","FreeSWITCH-IPv4":"10.0.2.15","FreeSWITCH-IPv6":"::1","Event-Date-Local":"2018-03-14 07:09:18","Event-Date-GMT":"Wed, 14 Mar 2018 11:09:18 GMT","Event-Date-Timestamp":"1521025758006702","Event-Calling-File":"sofia.c","Event-Calling-Function":"sofia_handle_sip_i_invite","Event-Calling-Line-Number":"10096","Event-Sequence":"1025","sip_number_alias":"1001","sip_auth_username":"1001","sip_auth_realm":"192.168.56.202","number_alias":"1001","requested_user_name":"1001","requested_domain_name":"192.168.56.202","record_stereo":"true","transfer_fallback_extension":"operator","toll_allow":"domestic,international,local","accountcode":"1001","user_context":"default","effective_caller_id_name":"Extension 1001","effective_caller_id_number":"1001","callgroup":"techsupport","cgr_reqtype":"*prepaid","cgr_flags":"*resources,*attributes,*sessions,*routes","user_name":"1001","domain_name":"192.168.56.202","sip_from_user_stripped":"1001","sofia_profile_name":"internal","recovery_profile_name":"internal","sip_req_user":"1002","sip_req_uri":"1002@192.168.56.202","sip_req_host":"192.168.56.202","sip_to_user":"1002","sip_to_uri":"1002@192.168.56.202","sip_to_host":"192.168.56.202","sip_contact_params":"transport=udp;registering_acc=192_168_56_202","sip_contact_user":"1001","sip_contact_port":"5060","sip_contact_uri":"1001@192.168.56.1:5060","sip_contact_host":"192.168.56.1","sip_via_host":"192.168.56.1","sip_via_port":"5060","presence_id":"1001@192.168.56.202","cgr_resource_allocation":"ResGroup1","cgr_suppliers":"ARRAY::3|:supplier2|:supplier3|:supplier1","cgr_notify":"AUTH_OK","max_forwards":"69","transfer_history":"1521025758:86c9ebb2-888f-42d5-9afa-2101449a4b86:bl_xfer:1002/default/XML","transfer_source":"1521025758:86c9ebb2-888f-42d5-9afa-2101449a4b86:bl_xfer:1002/default/XML","DP_MATCH":"ARRAY::1002|:1002","call_uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","call_timeout":"30","current_application_data":"user/1002@192.168.56.202","current_application":"bridge","dialed_user":"1002","dialed_domain":"192.168.56.202","originated_legs":"ARRAY::9c1afb4f-1d4a-4e45-84a3-d25721981bf5;Outbound Call;1002|:9c1afb4f-1d4a-4e45-84a3-d25721981bf5;Outbound Call;1002","switch_m_sdp":"v=0\r\no=1002-jitsi.org 0 0 IN IP4 192.168.56.1\r\ns=-\r\nc=IN IP4 192.168.56.1\r\nt=0 0\r\nm=audio 5004 RTP/AVP 9 0 8 3 101\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:3 GSM/8000\r\na=rtpmap:101 telephone-event/8000\r\n","rtp_use_codec_name":"G722","rtp_use_codec_rate":"8000","rtp_use_codec_ptime":"20","rtp_use_codec_channels":"1","rtp_last_audio_codec_string":"G722@8000h@20i@1c","read_codec":"G722","original_read_codec":"G722","read_rate":"16000","original_read_rate":"16000","write_codec":"G722","write_rate":"16000","local_media_ip":"192.168.56.202","local_media_port":"29014","advertised_media_ip":"192.168.56.202","rtp_use_timer_name":"soft","rtp_use_pt":"9","rtp_use_ssrc":"2729250253","endpoint_disposition":"ANSWER","originate_causes":"ARRAY::9c1afb4f-1d4a-4e45-84a3-d25721981bf5;NONE|:9c1afb4f-1d4a-4e45-84a3-d25721981bf5;NONE","originate_disposition":"SUCCESS","DIALSTATUS":"SUCCESS","last_bridge_to":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","bridge_channel":"sofia/internal/1002@192.168.56.1:5060","bridge_uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","signal_bond":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","last_sent_callee_id_name":"Outbound Call","last_sent_callee_id_number":"1002","switch_r_sdp":"v=0\r\no=1001-jitsi.org 0 2 IN IP4 192.168.56.1\r\ns=-\r\nc=IN IP4 192.168.56.1\r\nt=0 0\r\nm=audio 5000 RTP/AVP 96 97 98 9 100 102 0 8 103 3 104 4 101\r\na=rtpmap:96 opus/48000/2\r\na=fmtp:96 usedtx=1\r\na=rtpmap:97 SILK/24000\r\na=rtpmap:98 SILK/16000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:100 speex/32000\r\na=rtpmap:102 speex/16000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:103 iLBC/8000\r\na=rtpmap:3 GSM/8000\r\na=rtpmap:104 speex/8000\r\na=rtpmap:4 G723/8000\r\na=fmtp:4 annexa=no;bitrate=6.3\r\na=rtpmap:101 telephone-event/8000\r\na=ptime:20\r\na=extmap:1 urn:ietf:params:rtp-hdrext:csrc-audio-level\r\na=extmap:2 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=rtcp-xr:voip-metrics\r\na=zrtp-hash:1.10 8e8dd2fa6803f32845f26e55879c776a4bc015ee05b41630313aee27ef77fb30\r\nm=video 5006 RTP/AVP 105 99\r\na=rtpmap:105 H264/90000\r\na=fmtp:105 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:105 send * recv [x=[1:1920],y=[1:1080]]\r\na=imageattr:99 send * recv [x=[1:1920],y=[1:1080]]\r\n","rtp_use_codec_string":"G722,PCMU,PCMA,GSM","r_sdp_audio_zrtp_hash":"1.10 8e8dd2fa6803f32845f26e55879c776a4bc015ee05b41630313aee27ef77fb30","audio_media_flow":"sendrecv","remote_media_ip":"192.168.56.1","remote_media_port":"5000","rtp_audio_recv_pt":"9","dtmf_type":"rfc2833","rtp_2833_send_payload":"101","rtp_2833_recv_payload":"101","video_possible":"true","video_media_flow":"sendonly","rtp_local_sdp_str":"v=0\r\no=FreeSWITCH 1520996753 1520996756 IN IP4 192.168.56.202\r\ns=FreeSWITCH\r\nc=IN IP4 192.168.56.202\r\nt=0 0\r\nm=audio 29014 RTP/AVP 9 101\r\na=rtpmap:9 G722/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-16\r\na=ptime:20\r\na=sendrecv\r\nm=video 0 RTP/AVP 19\r\n","sip_to_tag":"aDUZXF1Z1vD6p","sip_from_tag":"df94d020","sip_cseq":"4","sip_call_id":"985e365faa0ec79a7fa75d001ef2449f@0:0:0:0:0:0:0:0","sip_full_via":"SIP/2.0/UDP 192.168.56.1:5060;branch=z9hG4bK-323230-ab335b3491dd24f5ec251b9700716b97","sip_from_display":"1001","sip_full_from":"\"1001\" ;tag=df94d020","sip_full_to":";tag=aDUZXF1Z1vD6p","sip_term_status":"200","proto_specific_hangup_cause":"sip:200","sip_term_cause":"16","last_bridge_role":"originator","sip_user_agent":"Jitsi2.10.5550Windows 10","sip_hangup_disposition":"recv_bye","bridge_hangup_cause":"NORMAL_CLEARING","hangup_cause":"NORMAL_CLEARING","hangup_cause_q850":"16","digits_dialed":"none","start_stamp":"2018-03-14 07:09:18","profile_start_stamp":"2018-03-14 07:09:18","answer_stamp":"2018-03-14 07:09:27","bridge_stamp":"2018-03-14 07:09:27","hold_stamp":"2018-03-14 07:09:27","progress_stamp":"2018-03-14 07:09:18","progress_media_stamp":"2018-03-14 07:09:27","hold_events":"{{1521025767847893,1521025783334494}}","end_stamp":"2018-03-14 07:09:48","start_epoch":"1521025758","start_uepoch":"1521025758006702","profile_start_epoch":"1521025758","profile_start_uepoch":"1521025758026167","answer_epoch":"1521025767","answer_uepoch":"1521025767766321","bridge_epoch":"1521025767","bridge_uepoch":"1521025767766321","last_hold_epoch":"1521025767","last_hold_uepoch":"1521025767847892","hold_accum_seconds":"15","hold_accum_usec":"15486602","hold_accum_ms":"15486","resurrect_epoch":"0","resurrect_uepoch":"0","progress_epoch":"1521025758","progress_uepoch":"1521025758116123","progress_media_epoch":"1521025767","progress_media_uepoch":"1521025767766321","end_epoch":"1521025788","end_uepoch":"1521025788366141","last_app":"bridge","last_arg":"user/1002@192.168.56.202","caller_id":"\"1001\" <1001>","duration":"30","billsec":"21","progresssec":"0","answersec":"9","waitsec":"9","progress_mediasec":"9","flow_billsec":"30","mduration":"30360","billmsec":"20600","progressmsec":"110","answermsec":"9760","waitmsec":"9760","progress_mediamsec":"9760","flow_billmsec":"30360","uduration":"30359439","billusec":"20599820","progressusec":"109421","answerusec":"9759619","waitusec":"9759619","progress_mediausec":"9759619","flow_billusec":"30359439","rtp_audio_in_raw_bytes":"174156","rtp_audio_in_media_bytes":"166416","rtp_audio_in_packet_count":"1033","rtp_audio_in_media_packet_count":"988","rtp_audio_in_skip_packet_count":"7","rtp_audio_in_jitter_packet_count":"0","rtp_audio_in_dtmf_packet_count":"0","rtp_audio_in_cng_packet_count":"0","rtp_audio_in_flush_packet_count":"45","rtp_audio_in_largest_jb_size":"0","rtp_audio_in_jitter_min_variance":"0.50","rtp_audio_in_jitter_max_variance":"31.77","rtp_audio_in_jitter_loss_rate":"0.00","rtp_audio_in_jitter_burst_rate":"0.00","rtp_audio_in_mean_interval":"20.17","rtp_audio_in_flaw_total":"1","rtp_audio_in_quality_percentage":"99.00","rtp_audio_in_mos":"4.49","rtp_audio_out_raw_bytes":"43344","rtp_audio_out_media_bytes":"43344","rtp_audio_out_packet_count":"252","rtp_audio_out_media_packet_count":"252","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":"info","app_data":"","app_stamp":"1521025758010697"},{"app_name":"park","app_data":"","app_stamp":"1521025758011143"},{"app_name":"set","app_data":"ringback=","app_stamp":"1521025758057183"},{"app_name":"set","app_data":"call_timeout=30","app_stamp":"1521025758057474"},{"app_name":"bridge","app_data":"user/1002@192.168.56.202","app_stamp":"1521025758057698"}]},"callflow":[{"dialplan":"XML","profile_index":"2","extension":{"name":"Local_Extension","number":"1002","applications":[{"app_name":"set","app_data":"ringback=${us-ring}"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"bridge","app_data":"user/${destination_number}@${domain_name}"}]},"caller_profile":{"username":"1001","dialplan":"XML","caller_id_name":"1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"1002","destination_number":"1002","uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.202","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":"1002","destination_number":"1002","uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","source":"mod_sofia","context":"default","chan_name":"sofia/internal/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":"1002","destination_number":"1002","uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1002@192.168.56.1:5060"}]}},"times":{"created_time":"1521025758006702","profile_created_time":"1521025758026167","progress_time":"1521025758116123","progress_media_time":"1521025767766321","answered_time":"1521025767766321","bridged_time":"1521025767766321","last_hold_time":"1521025767847892","hold_accum_time":"15486602","hangup_time":"1521025788366141","resurrect_time":"0","transfer_time":"0"}},{"dialplan":"XML","profile_index":"1","extension":{"name":"CGRateS_Auth","number":"1002","applications":[{"app_name":"info","app_data":""},{"app_name":"park","app_data":""}]},"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":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.202"},"times":{"created_time":"1521025758006702","profile_created_time":"1521025758006702","progress_time":"0","progress_media_time":"0","answered_time":"0","bridged_time":"0","last_hold_time":"0","hold_accum_time":"0","hangup_time":"0","resurrect_time":"0","transfer_time":"1521025758026167"}}]} `) +{"core-uuid":"63e2315b-d538-4dfa-9ed5-af73ba6210b6","switchname":"teo","channel_data":{"state":"CS_REPORTING","state_number":"11","flags":"0=1;1=1;3=1;20=1;37=1;38=1;40=1;43=1;48=1;53=1;75=1;77=1;106=1;112=1;113=1;122=1;134=1","caps":"1=1;2=1;3=1;4=1;5=1;6=1"},"callStats":{"audio":{"inbound":{"raw_bytes":174156,"media_bytes":166416,"packet_count":1033,"media_packet_count":988,"skip_packet_count":7,"jitter_packet_count":0,"dtmf_packet_count":0,"cng_packet_count":0,"flush_packet_count":45,"largest_jb_size":0,"jitter_min_variance":0.500000,"jitter_max_variance":31.769231,"jitter_loss_rate":0,"jitter_burst_rate":0,"mean_interval":20.171779,"flaw_total":1,"quality_percentage":99,"mos":4.492027,"errorLog":[{"start":1521025783725905,"stop":1521025788366141,"flaws":10763,"consecutiveFlaws":0,"durationMS":4640}]},"outbound":{"raw_bytes":43344,"media_bytes":43344,"packet_count":252,"media_packet_count":252,"skip_packet_count":0,"dtmf_packet_count":0,"cng_packet_count":0,"rtcp_packet_count":0,"rtcp_octet_count":0}}},"variables":{"uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","session_id":"1","sip_from_user":"1001","sip_from_uri":"1001@192.168.56.202","sip_from_host":"192.168.56.202","channel_name":"sofia/internal/1001@192.168.56.202","ep_codec_string":"mod_spandsp.G722@8000h@20i@64000b,CORE_PCM_MODULE.PCMU@8000h@20i@64000b,CORE_PCM_MODULE.PCMA@8000h@20i@64000b,mod_spandsp.GSM@8000h@20i@13200b","sip_local_network_addr":"192.168.56.202","sip_network_ip":"192.168.56.1","sip_network_port":"5060","sip_invite_stamp":"1521025758006702","sip_received_ip":"192.168.56.1","sip_received_port":"5060","sip_via_protocol":"udp","sip_authorized":"true","Event-Name":"REQUEST_PARAMS","Core-UUID":"63e2315b-d538-4dfa-9ed5-af73ba6210b6","FreeSWITCH-Hostname":"teo","FreeSWITCH-Switchname":"teo","FreeSWITCH-IPv4":"10.0.2.15","FreeSWITCH-IPv6":"::1","Event-Date-Local":"2018-03-14 07:09:18","Event-Date-GMT":"Wed, 14 Mar 2018 11:09:18 GMT","Event-Date-Timestamp":"1521025758006702","Event-Calling-File":"sofia.c","Event-Calling-Function":"sofia_handle_sip_i_invite","Event-Calling-Line-Number":"10096","Event-Sequence":"1025","sip_number_alias":"1001","sip_auth_username":"1001","sip_auth_realm":"192.168.56.202","number_alias":"1001","requested_user_name":"1001","requested_domain_name":"192.168.56.202","record_stereo":"true","transfer_fallback_extension":"operator","toll_allow":"domestic,international,local","accountcode":"1001","user_context":"default","effective_caller_id_name":"Extension 1001","effective_caller_id_number":"1001","callgroup":"techsupport","cgr_reqtype":"*prepaid","cgr_flags":"*resources,*attributes,*sessions,*routes","user_name":"1001","domain_name":"192.168.56.202","sip_from_user_stripped":"1001","sofia_profile_name":"internal","recovery_profile_name":"internal","sip_req_user":"1002","sip_req_uri":"1002@192.168.56.202","sip_req_host":"192.168.56.202","sip_to_user":"1002","sip_to_uri":"1002@192.168.56.202","sip_to_host":"192.168.56.202","sip_contact_params":"transport=udp;registering_acc=192_168_56_202","sip_contact_user":"1001","sip_contact_port":"5060","sip_contact_uri":"1001@192.168.56.1:5060","sip_contact_host":"192.168.56.1","sip_via_host":"192.168.56.1","sip_via_port":"5060","presence_id":"1001@192.168.56.202","cgr_resource_allocation":"ResGroup1","cgr_route":"ARRAY::3|:supplier2|:supplier3|:supplier1","cgr_notify":"AUTH_OK","max_forwards":"69","transfer_history":"1521025758:86c9ebb2-888f-42d5-9afa-2101449a4b86:bl_xfer:1002/default/XML","transfer_source":"1521025758:86c9ebb2-888f-42d5-9afa-2101449a4b86:bl_xfer:1002/default/XML","DP_MATCH":"ARRAY::1002|:1002","call_uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","call_timeout":"30","current_application_data":"user/1002@192.168.56.202","current_application":"bridge","dialed_user":"1002","dialed_domain":"192.168.56.202","originated_legs":"ARRAY::9c1afb4f-1d4a-4e45-84a3-d25721981bf5;Outbound Call;1002|:9c1afb4f-1d4a-4e45-84a3-d25721981bf5;Outbound Call;1002","switch_m_sdp":"v=0\r\no=1002-jitsi.org 0 0 IN IP4 192.168.56.1\r\ns=-\r\nc=IN IP4 192.168.56.1\r\nt=0 0\r\nm=audio 5004 RTP/AVP 9 0 8 3 101\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:3 GSM/8000\r\na=rtpmap:101 telephone-event/8000\r\n","rtp_use_codec_name":"G722","rtp_use_codec_rate":"8000","rtp_use_codec_ptime":"20","rtp_use_codec_channels":"1","rtp_last_audio_codec_string":"G722@8000h@20i@1c","read_codec":"G722","original_read_codec":"G722","read_rate":"16000","original_read_rate":"16000","write_codec":"G722","write_rate":"16000","local_media_ip":"192.168.56.202","local_media_port":"29014","advertised_media_ip":"192.168.56.202","rtp_use_timer_name":"soft","rtp_use_pt":"9","rtp_use_ssrc":"2729250253","endpoint_disposition":"ANSWER","originate_causes":"ARRAY::9c1afb4f-1d4a-4e45-84a3-d25721981bf5;NONE|:9c1afb4f-1d4a-4e45-84a3-d25721981bf5;NONE","originate_disposition":"SUCCESS","DIALSTATUS":"SUCCESS","last_bridge_to":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","bridge_channel":"sofia/internal/1002@192.168.56.1:5060","bridge_uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","signal_bond":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","last_sent_callee_id_name":"Outbound Call","last_sent_callee_id_number":"1002","switch_r_sdp":"v=0\r\no=1001-jitsi.org 0 2 IN IP4 192.168.56.1\r\ns=-\r\nc=IN IP4 192.168.56.1\r\nt=0 0\r\nm=audio 5000 RTP/AVP 96 97 98 9 100 102 0 8 103 3 104 4 101\r\na=rtpmap:96 opus/48000/2\r\na=fmtp:96 usedtx=1\r\na=rtpmap:97 SILK/24000\r\na=rtpmap:98 SILK/16000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:100 speex/32000\r\na=rtpmap:102 speex/16000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:103 iLBC/8000\r\na=rtpmap:3 GSM/8000\r\na=rtpmap:104 speex/8000\r\na=rtpmap:4 G723/8000\r\na=fmtp:4 annexa=no;bitrate=6.3\r\na=rtpmap:101 telephone-event/8000\r\na=ptime:20\r\na=extmap:1 urn:ietf:params:rtp-hdrext:csrc-audio-level\r\na=extmap:2 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=rtcp-xr:voip-metrics\r\na=zrtp-hash:1.10 8e8dd2fa6803f32845f26e55879c776a4bc015ee05b41630313aee27ef77fb30\r\nm=video 5006 RTP/AVP 105 99\r\na=rtpmap:105 H264/90000\r\na=fmtp:105 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:105 send * recv [x=[1:1920],y=[1:1080]]\r\na=imageattr:99 send * recv [x=[1:1920],y=[1:1080]]\r\n","rtp_use_codec_string":"G722,PCMU,PCMA,GSM","r_sdp_audio_zrtp_hash":"1.10 8e8dd2fa6803f32845f26e55879c776a4bc015ee05b41630313aee27ef77fb30","audio_media_flow":"sendrecv","remote_media_ip":"192.168.56.1","remote_media_port":"5000","rtp_audio_recv_pt":"9","dtmf_type":"rfc2833","rtp_2833_send_payload":"101","rtp_2833_recv_payload":"101","video_possible":"true","video_media_flow":"sendonly","rtp_local_sdp_str":"v=0\r\no=FreeSWITCH 1520996753 1520996756 IN IP4 192.168.56.202\r\ns=FreeSWITCH\r\nc=IN IP4 192.168.56.202\r\nt=0 0\r\nm=audio 29014 RTP/AVP 9 101\r\na=rtpmap:9 G722/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-16\r\na=ptime:20\r\na=sendrecv\r\nm=video 0 RTP/AVP 19\r\n","sip_to_tag":"aDUZXF1Z1vD6p","sip_from_tag":"df94d020","sip_cseq":"4","sip_call_id":"985e365faa0ec79a7fa75d001ef2449f@0:0:0:0:0:0:0:0","sip_full_via":"SIP/2.0/UDP 192.168.56.1:5060;branch=z9hG4bK-323230-ab335b3491dd24f5ec251b9700716b97","sip_from_display":"1001","sip_full_from":"\"1001\" ;tag=df94d020","sip_full_to":";tag=aDUZXF1Z1vD6p","sip_term_status":"200","proto_specific_hangup_cause":"sip:200","sip_term_cause":"16","last_bridge_role":"originator","sip_user_agent":"Jitsi2.10.5550Windows 10","sip_hangup_disposition":"recv_bye","bridge_hangup_cause":"NORMAL_CLEARING","hangup_cause":"NORMAL_CLEARING","hangup_cause_q850":"16","digits_dialed":"none","start_stamp":"2018-03-14 07:09:18","profile_start_stamp":"2018-03-14 07:09:18","answer_stamp":"2018-03-14 07:09:27","bridge_stamp":"2018-03-14 07:09:27","hold_stamp":"2018-03-14 07:09:27","progress_stamp":"2018-03-14 07:09:18","progress_media_stamp":"2018-03-14 07:09:27","hold_events":"{{1521025767847893,1521025783334494}}","end_stamp":"2018-03-14 07:09:48","start_epoch":"1521025758","start_uepoch":"1521025758006702","profile_start_epoch":"1521025758","profile_start_uepoch":"1521025758026167","answer_epoch":"1521025767","answer_uepoch":"1521025767766321","bridge_epoch":"1521025767","bridge_uepoch":"1521025767766321","last_hold_epoch":"1521025767","last_hold_uepoch":"1521025767847892","hold_accum_seconds":"15","hold_accum_usec":"15486602","hold_accum_ms":"15486","resurrect_epoch":"0","resurrect_uepoch":"0","progress_epoch":"1521025758","progress_uepoch":"1521025758116123","progress_media_epoch":"1521025767","progress_media_uepoch":"1521025767766321","end_epoch":"1521025788","end_uepoch":"1521025788366141","last_app":"bridge","last_arg":"user/1002@192.168.56.202","caller_id":"\"1001\" <1001>","duration":"30","billsec":"21","progresssec":"0","answersec":"9","waitsec":"9","progress_mediasec":"9","flow_billsec":"30","mduration":"30360","billmsec":"20600","progressmsec":"110","answermsec":"9760","waitmsec":"9760","progress_mediamsec":"9760","flow_billmsec":"30360","uduration":"30359439","billusec":"20599820","progressusec":"109421","answerusec":"9759619","waitusec":"9759619","progress_mediausec":"9759619","flow_billusec":"30359439","rtp_audio_in_raw_bytes":"174156","rtp_audio_in_media_bytes":"166416","rtp_audio_in_packet_count":"1033","rtp_audio_in_media_packet_count":"988","rtp_audio_in_skip_packet_count":"7","rtp_audio_in_jitter_packet_count":"0","rtp_audio_in_dtmf_packet_count":"0","rtp_audio_in_cng_packet_count":"0","rtp_audio_in_flush_packet_count":"45","rtp_audio_in_largest_jb_size":"0","rtp_audio_in_jitter_min_variance":"0.50","rtp_audio_in_jitter_max_variance":"31.77","rtp_audio_in_jitter_loss_rate":"0.00","rtp_audio_in_jitter_burst_rate":"0.00","rtp_audio_in_mean_interval":"20.17","rtp_audio_in_flaw_total":"1","rtp_audio_in_quality_percentage":"99.00","rtp_audio_in_mos":"4.49","rtp_audio_out_raw_bytes":"43344","rtp_audio_out_media_bytes":"43344","rtp_audio_out_packet_count":"252","rtp_audio_out_media_packet_count":"252","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":"info","app_data":"","app_stamp":"1521025758010697"},{"app_name":"park","app_data":"","app_stamp":"1521025758011143"},{"app_name":"set","app_data":"ringback=","app_stamp":"1521025758057183"},{"app_name":"set","app_data":"call_timeout=30","app_stamp":"1521025758057474"},{"app_name":"bridge","app_data":"user/1002@192.168.56.202","app_stamp":"1521025758057698"}]},"callflow":[{"dialplan":"XML","profile_index":"2","extension":{"name":"Local_Extension","number":"1002","applications":[{"app_name":"set","app_data":"ringback=${us-ring}"},{"app_name":"set","app_data":"call_timeout=30"},{"app_name":"bridge","app_data":"user/${destination_number}@${domain_name}"}]},"caller_profile":{"username":"1001","dialplan":"XML","caller_id_name":"1001","ani":"1001","aniii":"","caller_id_number":"1001","network_addr":"192.168.56.1","rdnis":"1002","destination_number":"1002","uuid":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.202","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":"1002","destination_number":"1002","uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","source":"mod_sofia","context":"default","chan_name":"sofia/internal/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":"1002","destination_number":"1002","uuid":"9c1afb4f-1d4a-4e45-84a3-d25721981bf5","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1002@192.168.56.1:5060"}]}},"times":{"created_time":"1521025758006702","profile_created_time":"1521025758026167","progress_time":"1521025758116123","progress_media_time":"1521025767766321","answered_time":"1521025767766321","bridged_time":"1521025767766321","last_hold_time":"1521025767847892","hold_accum_time":"15486602","hangup_time":"1521025788366141","resurrect_time":"0","transfer_time":"0"}},{"dialplan":"XML","profile_index":"1","extension":{"name":"CGRateS_Auth","number":"1002","applications":[{"app_name":"info","app_data":""},{"app_name":"park","app_data":""}]},"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":"5a3a1d91-90d3-4db4-af5c-cc3ae15d93a4","source":"mod_sofia","context":"default","chan_name":"sofia/internal/1001@192.168.56.202"},"times":{"created_time":"1521025758006702","profile_created_time":"1521025758006702","progress_time":"0","progress_media_time":"0","answered_time":"0","bridged_time":"0","last_hold_time":"0","hold_accum_time":"0","hangup_time":"0","resurrect_time":"0","transfer_time":"1521025758026167"}}]} `) hangUp := `Event-Name: CHANNEL_HANGUP_COMPLETE Core-UUID: 63e2315b-d538-4dfa-9ed5-af73ba6210b6 FreeSWITCH-Hostname: teo @@ -797,7 +797,7 @@ variable_sip_via_host: 192.168.56.1 variable_sip_via_port: 5060 variable_presence_id: 1001%40192.168.56.202 variable_cgr_resource_allocation: ResGroup1 -variable_cgr_suppliers: ARRAY%3A%3A3%7C%3Asupplier2%7C%3Asupplier3%7C%3Asupplier1 +variable_cgr_route: ARRAY%3A%3A3%7C%3Asupplier2%7C%3Asupplier3%7C%3Asupplier1 variable_cgr_notify: AUTH_OK variable_max_forwards: 69 variable_transfer_history: 1521025758%3A86c9ebb2-888f-42d5-9afa-2101449a4b86%3Abl_xfer%3A1002/default/XML diff --git a/agents/kamevent.go b/agents/kamevent.go index 8f0c40b99..fbeff4d5e 100644 --- a/agents/kamevent.go +++ b/agents/kamevent.go @@ -242,7 +242,7 @@ func (kev KamEvent) AsKamAuthReply(authArgs *sessions.V1AuthorizeArgs, kar.MaxUsage = int(utils.Round(authReply.MaxUsage.Seconds(), 0, utils.ROUNDING_MIDDLE)) } if authArgs.GetRoutes && authReply.Routes != nil { - kar.Suppliers = authReply.Routes.Digest() + kar.Routes = authReply.Routes.Digest() } if authArgs.ProcessThresholds && authReply.ThresholdIDs != nil { @@ -335,7 +335,7 @@ func (kev KamEvent) AsKamProcessMessageReply(procEvArgs *sessions.V1ProcessMessa kar.MaxUsage = int(utils.Round(procEvReply.MaxUsage.Seconds(), 0, utils.ROUNDING_MIDDLE)) } if procEvArgs.GetRoutes && procEvReply.Routes != nil { - kar.Suppliers = procEvReply.Routes.Digest() + kar.Routes = procEvReply.Routes.Digest() } if procEvArgs.ProcessThresholds { @@ -405,7 +405,7 @@ type KamReply struct { Attributes string ResourceAllocation string MaxUsage int // Maximum session time in case of success, -1 for unlimited - Suppliers string // List of suppliers, comma separated + Routes string // List of routes, comma separated Thresholds string StatQueues string Error string // Reply in case of error diff --git a/agents/kamevent_test.go b/agents/kamevent_test.go index 2b178dd91..c6e409cef 100644 --- a/agents/kamevent_test.go +++ b/agents/kamevent_test.go @@ -31,7 +31,7 @@ import ( var kamEv = KamEvent{KamTRIndex: "29223", KamTRLabel: "698469260", "callid": "ODVkMDI2Mzc2MDY5N2EzODhjNTAzNTdlODhiZjRlYWQ", "from_tag": "eb082607", "to_tag": "4ea9687f", "cgr_account": "dan", "cgr_reqtype": utils.META_PREPAID, "cgr_subject": "dan", "cgr_destination": "+4986517174963", "cgr_tenant": "itsyscom.com", - "cgr_duration": "20", utils.CGR_SUPPLIER: "suppl2", utils.CGR_DISCONNECT_CAUSE: "200", "extra1": "val1", "extra2": "val2"} + "cgr_duration": "20", utils.CGR_ROUTE: "suppl2", utils.CGR_DISCONNECT_CAUSE: "200", "extra1": "val1", "extra2": "val2"} func TestNewKamEvent(t *testing.T) { evStr := `{"event":"CGR_CALL_END", @@ -43,7 +43,7 @@ func TestNewKamEvent(t *testing.T) { "cgr_destination":"1002", "cgr_answertime":"1419839310", "cgr_duration":"3", - "cgr_supplier":"supplier2", + "cgr_route":"supplier2", "cgr_disconnectcause": "200", "cgr_pdd": "4"}` eKamEv := KamEvent{ @@ -57,7 +57,7 @@ func TestNewKamEvent(t *testing.T) { "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200", utils.OriginHost: utils.KamailioAgent, } @@ -74,7 +74,7 @@ func TestKamEvMissingParameter(t *testing.T) { "from_tag": "bf71ad59", "to_tag": "7351fecf", "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} if missingParam := kamEv.MissingParameter(); missingParam != true { t.Errorf("Expecting: true, received:%+v ", missingParam) @@ -88,14 +88,14 @@ func TestKamEvAsMapStringInterface(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} expMp := make(map[string]interface{}) expMp["cgr_account"] = "1001" expMp["cgr_duration"] = "3" expMp["cgr_pdd"] = "4" expMp["cgr_destination"] = "1002" - expMp[utils.CGR_SUPPLIER] = "supplier2" + expMp[utils.CGR_ROUTE] = "supplier2" expMp["cgr_answertime"] = "1419839310" expMp[utils.CGR_DISCONNECT_CAUSE] = "200" expMp["callid"] = "46c01a5c249b469e76333fc6bfa87f6a@0:0:0:0:0:0:0:0" @@ -117,7 +117,7 @@ func TestKamEvAsCGREvent(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { @@ -149,7 +149,7 @@ func TestKamEvV1AuthorizeArgs(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200", utils.CGRFlags: "*accounts,*routes,*routes_event_cost,*routes_ignore_errors"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) @@ -199,7 +199,7 @@ func TestKamEvAsKamAuthReply(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { @@ -275,7 +275,7 @@ func TestKamEvV1InitSessionArgs(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { @@ -313,7 +313,7 @@ func TestKamEvV1TerminateSessionArgs(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { @@ -351,7 +351,7 @@ func TestKamEvV1ProcessMessageArgs(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { @@ -386,7 +386,7 @@ func TestKamEvAsKamProcessEventReply(t *testing.T) { "cgr_reqtype": utils.META_POSTPAID, "cgr_account": "1001", "cgr_destination": "1002", "cgr_answertime": "1419839310", "cgr_duration": "3", "cgr_pdd": "4", - utils.CGR_SUPPLIER: "supplier2", + utils.CGR_ROUTE: "supplier2", utils.CGR_DISCONNECT_CAUSE: "200"} sTime, err := utils.ParseTimeDetectLayout(kamEv[utils.AnswerTime], timezone) if err != nil { diff --git a/data/tutorial_tests/asterisk_ari/asterisk/etc/asterisk/extensions.conf b/data/tutorial_tests/asterisk_ari/asterisk/etc/asterisk/extensions.conf index 63cf346e3..eb14fe62a 100755 --- a/data/tutorial_tests/asterisk_ari/asterisk/etc/asterisk/extensions.conf +++ b/data/tutorial_tests/asterisk_ari/asterisk/etc/asterisk/extensions.conf @@ -2,7 +2,7 @@ exten => _1XXX,1,NoOp() same => n,Set(CGRMaxSessionTime=0); use it to disconnect automatically the call if CGRateS is not active same => n,DumpChan() - same => n,Stasis(cgrates_auth,cgr_reqtype=*prepaid,cgr_supplier=supplier1,"cgr_flags=*accounts,*attributes,*resources,*stats,*routes,*thresholds") + same => n,Stasis(cgrates_auth,cgr_reqtype=*prepaid,cgr_routes=supplier1,"cgr_flags=*accounts,*attributes,*resources,*stats,*routes,*thresholds") same => n,Dial(PJSIP/${EXTEN},30,L(${CGRMaxSessionTime})) same => n,Hangup() diff --git a/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg b/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg index 2dbd48671..1ac9641fd 100644 --- a/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg +++ b/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg @@ -140,8 +140,8 @@ route[CGR_SESSIONAUTH_REPLY] { json_get_field("$evapi(msg)", "MaxUsage", "$var(MaxUsage)"); $var(cgrMaxUsage) = $(var(MaxUsage){s.int}); - json_get_field("$evapi(msg)", "Suppliers", "$var(cgrSuppliers)"); - $var($var(cgrSuppliers)) = $(var(cgrSuppliers){s.rm,"}); + json_get_field("$evapi(msg)", "Routes", "$var(cgrRoutes)"); + $var($var(cgrRoutes)) = $(var(cgrRoutes){s.rm,"}); json_get_field("$evapi(msg)", "Error", "$var(cgrError)"); $var(cgrError) = $(var(cgrError){s.rm,"}); diff --git a/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio.cfg b/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio.cfg index 452cd9d0d..40ca2bab4 100644 --- a/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio.cfg +++ b/data/tutorial_tests/kamevapi/kamailio/etc/kamailio/kamailio.cfg @@ -225,8 +225,8 @@ route[CGRATES_SESSIONAUTH_REPLY] { exit; } - if $var(cgrSuppliers) != "" { # Enforce the supplier variable to the first one received from CGRateS, here more for demo purposes - $dlg_var(cgrSupplier) = $(var(cgrSuppliers){s.select,0,,}); + if $var(cgrRoutes) != "" { # Enforce the route variable to the first one received from CGRateS, here more for demo purposes + $dlg_var(cgrRoutes) = $(var(cgrRoutes){s.select,0,,}); } # user location service diff --git a/data/tutorials/asterisk_ari/asterisk/etc/asterisk/extensions.conf b/data/tutorials/asterisk_ari/asterisk/etc/asterisk/extensions.conf index 63cf346e3..dc00ee75e 100755 --- a/data/tutorials/asterisk_ari/asterisk/etc/asterisk/extensions.conf +++ b/data/tutorials/asterisk_ari/asterisk/etc/asterisk/extensions.conf @@ -2,7 +2,7 @@ exten => _1XXX,1,NoOp() same => n,Set(CGRMaxSessionTime=0); use it to disconnect automatically the call if CGRateS is not active same => n,DumpChan() - same => n,Stasis(cgrates_auth,cgr_reqtype=*prepaid,cgr_supplier=supplier1,"cgr_flags=*accounts,*attributes,*resources,*stats,*routes,*thresholds") + same => n,Stasis(cgrates_auth,cgr_reqtype=*prepaid,cgr_route=supplier1,"cgr_flags=*accounts,*attributes,*resources,*stats,*routes,*thresholds") same => n,Dial(PJSIP/${EXTEN},30,L(${CGRMaxSessionTime})) same => n,Hangup() diff --git a/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg b/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg index 2dbd48671..1ac9641fd 100644 --- a/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg +++ b/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio-cgrates.cfg @@ -140,8 +140,8 @@ route[CGR_SESSIONAUTH_REPLY] { json_get_field("$evapi(msg)", "MaxUsage", "$var(MaxUsage)"); $var(cgrMaxUsage) = $(var(MaxUsage){s.int}); - json_get_field("$evapi(msg)", "Suppliers", "$var(cgrSuppliers)"); - $var($var(cgrSuppliers)) = $(var(cgrSuppliers){s.rm,"}); + json_get_field("$evapi(msg)", "Routes", "$var(cgrRoutes)"); + $var($var(cgrRoutes)) = $(var(cgrRoutes){s.rm,"}); json_get_field("$evapi(msg)", "Error", "$var(cgrError)"); $var(cgrError) = $(var(cgrError){s.rm,"}); diff --git a/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio.cfg b/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio.cfg index 452cd9d0d..40ca2bab4 100644 --- a/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio.cfg +++ b/data/tutorials/kamevapi/kamailio/etc/kamailio/kamailio.cfg @@ -225,8 +225,8 @@ route[CGRATES_SESSIONAUTH_REPLY] { exit; } - if $var(cgrSuppliers) != "" { # Enforce the supplier variable to the first one received from CGRateS, here more for demo purposes - $dlg_var(cgrSupplier) = $(var(cgrSuppliers){s.select,0,,}); + if $var(cgrRoutes) != "" { # Enforce the route variable to the first one received from CGRateS, here more for demo purposes + $dlg_var(cgrRoutes) = $(var(cgrRoutes){s.select,0,,}); } # user location service diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index cae13f2d7..b73879534 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -92,7 +92,6 @@ var ( CategoryLow = strings.ToLower(utils.Category) AccountLow = strings.ToLower(utils.Account) SubjectLow = strings.ToLower(utils.Subject) - SupplierLow = strings.ToLower(utils.SUPPLIER) DisconnectCauseLow = strings.ToLower(utils.DISCONNECT_CAUSE) SetupTimeLow = strings.ToLower(utils.SetupTime) AnswerTimeLow = strings.ToLower(utils.AnswerTime) diff --git a/migrator/derived_chargers.go b/migrator/derived_chargers.go index d28d7886f..530bc1b50 100644 --- a/migrator/derived_chargers.go +++ b/migrator/derived_chargers.go @@ -115,7 +115,7 @@ func derivedChargers2AttributeProfile(dc *v1DerivedCharger, tenant, key string, attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.PDD, dc.PDDField) attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.AnswerTime, dc.AnswerTimeField) attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.Usage, dc.UsageField) - attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.SUPPLIER, dc.SupplierField) + attr.Attributes = fieldinfo2Attribute(attr.Attributes, SUPPLIER, dc.SupplierField) attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.DISCONNECT_CAUSE, dc.DisconnectCauseField) attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.Cost, dc.CostField) attr.Attributes = fieldinfo2Attribute(attr.Attributes, utils.PreRated, dc.PreRatedField) diff --git a/migrator/migrator_utils.go b/migrator/migrator_utils.go index 06649fdde..13f9cadce 100644 --- a/migrator/migrator_utils.go +++ b/migrator/migrator_utils.go @@ -28,6 +28,10 @@ import ( "github.com/cgrates/cgrates/utils" ) +var ( + SUPPLIER = "Supplier" +) + func NewMigratorDataDB(db_type, host, port, name, user, pass, marshaler string, cacheCfg *config.CacheCfg, sentinelName string, itemsCacheCfg map[string]*config.ItemOpt) (db MigratorDataDB, err error) { diff --git a/sessions/libsessions_test.go b/sessions/libsessions_test.go index f9bb8b493..16e68f728 100644 --- a/sessions/libsessions_test.go +++ b/sessions/libsessions_test.go @@ -44,7 +44,7 @@ func TestLibSessionSGetSetCGRID(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", }) diff --git a/sessions/sessions_test.go b/sessions/sessions_test.go index 10bb37952..390f407f5 100644 --- a/sessions/sessions_test.go +++ b/sessions/sessions_test.go @@ -109,7 +109,7 @@ func TestSessionSIndexAndUnindexSessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", "Extra1": "Value1", @@ -429,7 +429,7 @@ func TestSessionSRegisterAndUnregisterASessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.OriginHost: "127.0.0.1", }) s := &Session{ @@ -487,7 +487,7 @@ func TestSessionSRegisterAndUnregisterASessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier2", + utils.ROUTE: "supplier2", utils.OriginHost: "127.0.0.1", }) s2 := &Session{ @@ -553,7 +553,7 @@ func TestSessionSRegisterAndUnregisterASessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier2", + utils.ROUTE: "supplier2", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", }) @@ -647,7 +647,7 @@ func TestSessionSRegisterAndUnregisterPSessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.OriginHost: "127.0.0.1", }) s := &Session{ @@ -708,7 +708,7 @@ func TestSessionSRegisterAndUnregisterPSessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier2", + utils.ROUTE: "supplier2", utils.OriginHost: "127.0.0.1", }) s2 := &Session{ @@ -774,7 +774,7 @@ func TestSessionSRegisterAndUnregisterPSessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier2", + utils.ROUTE: "supplier2", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", }) @@ -1401,7 +1401,7 @@ func TestSessionStransitSState(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.OriginHost: "127.0.0.1", }) s := &Session{ @@ -1447,7 +1447,7 @@ func TestSessionSrelocateSessionS(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.OriginHost: "127.0.0.1", }) initialCGRID := GetSetCGRID(sSEv) @@ -1659,7 +1659,7 @@ func TestSessionSgetSessionIDsMatchingIndexes(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", "Extra1": "Value1", @@ -1943,7 +1943,7 @@ func TestSessionSgetSession(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.OriginHost: "127.0.0.1", }) s := &Session{ @@ -1990,7 +1990,7 @@ func TestSessionSfilterSessions(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", "Extra1": "Value1", @@ -2050,7 +2050,7 @@ func TestSessionSfilterSessions(t *testing.T) { "Extra3": "", "LastUsed": "21s", "PDD": "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", }, NodeID: sSCfg.GeneralCfg().NodeID, } @@ -2075,7 +2075,7 @@ func TestSessionSfilterSessions(t *testing.T) { "Extra3": "", "LastUsed": "21s", "PDD": "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", }, NodeID: sSCfg.GeneralCfg().NodeID, } @@ -2166,7 +2166,7 @@ func TestSessionSfilterSessionsCount(t *testing.T) { utils.Usage: "1m23s", utils.LastUsed: "21s", utils.PDD: "300ms", - utils.SUPPLIER: "supplier1", + utils.ROUTE: "supplier1", utils.DISCONNECT_CAUSE: "NORMAL_DISCONNECT", utils.OriginHost: "127.0.0.1", "Extra1": "Value1", diff --git a/utils/consts.go b/utils/consts.go index e7d32ffa8..9571ce72c 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -209,7 +209,7 @@ const ( Value = "Value" LastUsed = "LastUsed" PDD = "PDD" - SUPPLIER = "Supplier" + ROUTE = "Route" RunID = "RunID" AttributeIDs = "AttributeIDs" MetaReqRunID = "*req.RunID" @@ -1557,7 +1557,7 @@ const ( //cgr_ variables const ( CGR_ACCOUNT = "cgr_account" - CGR_SUPPLIER = "cgr_supplier" + CGR_ROUTE = "cgr_route" CGR_DESTINATION = "cgr_destination" CGR_SUBJECT = "cgr_subject" CGR_CATEGORY = "cgr_category"