diff --git a/config/config_json_test.go b/config/config_json_test.go index 04461b3cb..1d8b385c4 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -638,24 +638,24 @@ func TestDiameterAgentJsonCfg(t *testing.T) { utils.MetaErr: { {Tag: utils.StringPointer("SessionId"), Field_id: utils.StringPointer("Session-Id"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.Session-Id"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("OriginHost"), Field_id: utils.StringPointer("Origin-Host"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*vars.OriginHost"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("OriginRealm"), Field_id: utils.StringPointer("Origin-Realm"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*vars.OriginRealm"), Mandatory: utils.BoolPointer(true)}, }, utils.MetaCCA: { {Tag: utils.StringPointer("SessionId"), Field_id: utils.StringPointer("Session-Id"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.Session-Id"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("ResultCode"), @@ -664,27 +664,27 @@ func TestDiameterAgentJsonCfg(t *testing.T) { Value: utils.StringPointer("2001")}, {Tag: utils.StringPointer("OriginHost"), Field_id: utils.StringPointer("Origin-Host"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*vars.OriginHost"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("OriginRealm"), Field_id: utils.StringPointer("Origin-Realm"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*vars.OriginRealm"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("AuthApplicationId"), Field_id: utils.StringPointer("Auth-Application-Id"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*vars.*appid"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("CCRequestType"), Field_id: utils.StringPointer("CC-Request-Type"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.CC-Request-Type"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("CCRequestNumber"), Field_id: utils.StringPointer("CC-Request-Number"), - Type: utils.StringPointer(utils.META_COMPOSED), + Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.CC-Request-Number"), Mandatory: utils.BoolPointer(true)}, }, @@ -1598,27 +1598,27 @@ func TestDfApierCfg(t *testing.T) { func TestDfEventReaderCfg(t *testing.T) { cdrFields := []*FcTemplateJsonCfg{ - {Tag: utils.StringPointer("TOR"), Field_id: utils.StringPointer(utils.ToR), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("TOR"), Field_id: utils.StringPointer(utils.ToR), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.2"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("OriginID"), Field_id: utils.StringPointer(utils.OriginID), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("OriginID"), Field_id: utils.StringPointer(utils.OriginID), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.3"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("RequestType"), Field_id: utils.StringPointer(utils.RequestType), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("RequestType"), Field_id: utils.StringPointer(utils.RequestType), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.4"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Tenant"), Field_id: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Tenant"), Field_id: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.6"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Category"), Field_id: utils.StringPointer(utils.Category), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Category"), Field_id: utils.StringPointer(utils.Category), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.7"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Account"), Field_id: utils.StringPointer(utils.Account), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Account"), Field_id: utils.StringPointer(utils.Account), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.8"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Subject"), Field_id: utils.StringPointer(utils.Subject), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Subject"), Field_id: utils.StringPointer(utils.Subject), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.9"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Destination"), Field_id: utils.StringPointer(utils.Destination), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Destination"), Field_id: utils.StringPointer(utils.Destination), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.10"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("SetupTime"), Field_id: utils.StringPointer(utils.SetupTime), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("SetupTime"), Field_id: utils.StringPointer(utils.SetupTime), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.11"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("AnswerTime"), Field_id: utils.StringPointer(utils.AnswerTime), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("AnswerTime"), Field_id: utils.StringPointer(utils.AnswerTime), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.12"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("Usage"), Field_id: utils.StringPointer(utils.Usage), Type: utils.StringPointer(utils.META_COMPOSED), + {Tag: utils.StringPointer("Usage"), Field_id: utils.StringPointer(utils.Usage), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~*req.13"), Mandatory: utils.BoolPointer(true)}, } eCfg := &ERsJsonCfg{ diff --git a/config/config_test.go b/config/config_test.go index ffc15d9f0..c89d4c254 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -1628,27 +1628,27 @@ func TestCgrCdfEventReader(t *testing.T) { Filters: []string{}, Flags: utils.FlagsWithParams{}, Fields: []*FCTemplate{ - {Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED, + {Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED, + {Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED, + {Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED, + {Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED, + {Tag: "Category", FieldId: "Category", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED, + {Tag: "Account", FieldId: "Account", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED, + {Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED, + {Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED, + {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED, + {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED, + {Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true}, }, }, @@ -1674,27 +1674,27 @@ func TestCgrCfgEventReaderDefault(t *testing.T) { Filters: nil, Flags: utils.FlagsWithParams{}, Fields: []*FCTemplate{ - {Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED, + {Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED, + {Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED, + {Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED, + {Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED, + {Tag: "Category", FieldId: "Category", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED, + {Tag: "Account", FieldId: "Account", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED, + {Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED, + {Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED, + {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED, + {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED, + {Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true}, }, CacheDumpFields: make([]*FCTemplate, 0), diff --git a/config/erscfg_test.go b/config/erscfg_test.go index cff731d87..a4ce4d238 100644 --- a/config/erscfg_test.go +++ b/config/erscfg_test.go @@ -112,27 +112,27 @@ func TestEventReaderLoadFromJSON(t *testing.T) { Filters: []string{}, Flags: utils.FlagsWithParams{}, Fields: []*FCTemplate{ - {Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED, + {Tag: "TOR", FieldId: "ToR", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED, + {Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED, + {Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED, + {Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED, + {Tag: "Category", FieldId: "Category", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED, + {Tag: "Account", FieldId: "Account", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED, + {Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED, + {Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED, + {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED, + {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED, + {Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true}, }, }, @@ -149,28 +149,27 @@ func TestEventReaderLoadFromJSON(t *testing.T) { Timezone: utils.EmptyString, Filters: nil, Flags: utils.FlagsWithParams{}, - Fields: []*FCTemplate{ - {Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED, + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED, + {Tag: "OriginID", FieldId: "OriginID", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED, + {Tag: "RequestType", FieldId: "RequestType", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED, + {Tag: "Tenant", FieldId: "Tenant", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED, + {Tag: "Category", FieldId: "Category", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED, + {Tag: "Account", FieldId: "Account", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED, + {Tag: "Subject", FieldId: "Subject", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED, + {Tag: "Destination", FieldId: "Destination", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED, + {Tag: "SetupTime", FieldId: "SetupTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED, + {Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED, + {Tag: "Usage", FieldId: "Usage", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Mandatory: true}, }, CacheDumpFields: make([]*FCTemplate, 0), diff --git a/data/conf/samples/ers_mysql/cgrates.json b/data/conf/samples/ers_mysql/cgrates.json index 0f97a8abf..e35f49437 100644 --- a/data/conf/samples/ers_mysql/cgrates.json +++ b/data/conf/samples/ers_mysql/cgrates.json @@ -273,23 +273,23 @@ {"tag": "RequestType", "field_id": "RequestType", "type": "*constant", "value": "*rated", "mandatory": true}, {"tag": "Tenant", "field_id": "Tenant", "type": "*constant", "value": "cgrates.org", "mandatory": true}, {"tag": "Category", "field_id": "Category", "type": "*constant", "value": "call", "mandatory": true}, - {"tag": "Account", "field_id": "Account", "type": "*variable", "value": "~*req.0:s/^49([1-9]\\d+)$/0$1/", "mandatory": true}, - {"tag": "Destination", "field_id": "Destination", "type": "*variable", "value": "~*req.1:s/^00(\\d+)$/+$1/", "mandatory": true}, - {"tag": "SetupTime", "field_id": "SetupTime", "type": "*variable", "value": "~*req.4", "mandatory": true}, - {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*variable", "value": "~*req.4", "mandatory": true}, - {"tag": "Usage", "field_id": "Usage", "type": "*variable", "value": "~*req.6:s/^(\\d+)$/${1}s/", "mandatory": true}, + {"tag": "Account", "field_id": "Account", "type": "*composed", "value": "~*req.0:s/^49([1-9]\\d+)$/0$1/", "mandatory": true}, + {"tag": "Destination", "field_id": "Destination", "type": "*composed", "value": "~*req.1:s/^00(\\d+)$/+$1/", "mandatory": true}, + {"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "~*req.4", "mandatory": true}, + {"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "~*req.4", "mandatory": true}, + {"tag": "Usage", "field_id": "Usage", "type": "*composed", "value": "~*req.6:s/^(\\d+)$/${1}s/", "mandatory": true}, {"tag": "Partial", "field_id": "Partial", "type": "*constant", "value": "true", "filters":["*string:~*req.10:partial"]}, ], "cache_dump_fields": [ - {"tag": "OriginID", "type": "*variable", "value": "~OriginID"}, - {"tag": "OrderID", "type": "*variable", "value": "~OrderID"}, - {"tag": "RequestType", "type": "*variable", "value": "~RequestType"}, - {"tag": "Account", "type": "*variable", "value": "~Account"}, - {"tag": "Destination", "type": "*variable", "value": "~Destination"}, - {"tag": "SetupTime", "type": "*variable", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, - {"tag": "AnswerTime", "type": "*variable", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, - {"tag": "Usage", "type": "*variable", "value": "~Usage"}, - {"tag": "Cost", "type": "*variable", "value": "~Cost","rounding_decimals":5}, + {"tag": "OriginID", "type": "*composed", "value": "~OriginID"}, + {"tag": "OrderID", "type": "*composed", "value": "~OrderID"}, + {"tag": "RequestType", "type": "*composed", "value": "~RequestType"}, + {"tag": "Account", "type": "*composed", "value": "~Account"}, + {"tag": "Destination", "type": "*composed", "value": "~Destination"}, + {"tag": "SetupTime", "type": "*composed", "value": "~SetupTime", "layout": "2006-01-02T15:04:05Z07:00"}, + {"tag": "AnswerTime", "type": "*composed", "value": "~AnswerTime", "layout": "2006-01-02T15:04:05Z07:00"}, + {"tag": "Usage", "type": "*composed", "value": "~Usage"}, + {"tag": "Cost", "type": "*composed", "value": "~Cost","rounding_decimals":5}, ], }, {