diff --git a/agents/agentreq.go b/agents/agentreq.go index 319498c25..717c875f0 100644 --- a/agents/agentreq.go +++ b/agents/agentreq.go @@ -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 diff --git a/data/conf/samples/httpagent/httpagent.json b/data/conf/samples/httpagent/httpagent.json index f279138d7..3fbec266d 100644 --- a/data/conf/samples/httpagent/httpagent.json +++ b/data/conf/samples/httpagent/httpagent.json @@ -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},