mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Properly handle *concatenated type, fixes #1268
This commit is contained in:
@@ -121,14 +121,29 @@ func (ar *AgentRequest) AsNavigableMap(tplFlds []*config.FCTemplate) (
|
||||
}
|
||||
var valSet []*config.NMItem
|
||||
fldPath := strings.Split(tplFld.FieldId, utils.NestingSep)
|
||||
nMItm := &config.NMItem{Data: out, Path: fldPath, Config: tplFld}
|
||||
if nMFields, err := nM.FieldAsInterface(fldPath); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
valSet = nMFields.([]*config.NMItem) // start from previous stored fields
|
||||
if tplFld.Type == utils.META_COMPOSED {
|
||||
prevNMItem := valSet[len(valSet)-1]
|
||||
prevDataStr, err := utils.IfaceAsString(prevNMItem.Data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
outStr, err := utils.IfaceAsString(out)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
*nMItm = *prevNMItem // inherit the particularities, ie AttributeName
|
||||
nMItm.Data = prevDataStr + outStr
|
||||
valSet = valSet[:len(valSet)-1] // discard the last item
|
||||
}
|
||||
}
|
||||
valSet = append(valSet, &config.NMItem{Data: out, Path: fldPath, Config: tplFld})
|
||||
valSet = append(valSet, nMItm)
|
||||
nM.Set(fldPath, valSet, true)
|
||||
if tplFld.Blocker { // useful in case of processing errors first
|
||||
break
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
"reply_fields":[
|
||||
{"tag": "Allow", "field_id": "response.Allow", "type": "*constant",
|
||||
"value": "1", "mandatory": true},
|
||||
{"tag": "Concatenated1", "field_id": "Concatenated", "type": "*composed",
|
||||
{"tag": "Concatenated1", "field_id": "response.Concatenated", "type": "*composed",
|
||||
"value": "~*req.MCC;/", "mandatory": true},
|
||||
{"tag": "Concatenated2", "field_id": "Concatenated", "type": "*composed",
|
||||
{"tag": "Concatenated2", "field_id": "response.Concatenated", "type": "*composed",
|
||||
"value": "Val1"},
|
||||
{"tag": "MaxDuration", "field_id": "response.MaxDuration", "type": "*constant",
|
||||
"value": "1200", "blocker": true},
|
||||
|
||||
Reference in New Issue
Block a user