Responder.GetSessionRuns considering cgr_flags for CallDescriptor, Diameter adding flags to generic event

This commit is contained in:
DanB
2016-03-01 14:10:52 +01:00
parent cbea3ec603
commit 2ff2d0d781
3 changed files with 13 additions and 1 deletions

View File

@@ -94,6 +94,9 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro
utils.Logger.Err(fmt.Sprintf("<DiameterAgent> Processing message: %+v AsSMGenericEvent, error: %s", ccr.diamMessage, err))
return cca
}
if len(reqProcessor.Flags) != 0 {
smgEv[utils.CGRFlags] = reqProcessor.Flags.String() // Populate CGRFlags automatically
}
if reqProcessor.PublishEvent && self.pubsubs != nil {
evt, err := smgEv.AsMapStringString()
if err != nil {

View File

@@ -445,6 +445,7 @@ func (rs *Responder) GetSessionRuns(ev *CDR, sRuns *[]*SessionRun) error {
})
return errors.New("Error parsing answer event end time")
}
extraFields := ev.GetExtraFields()
cd := &CallDescriptor{
CgrID: ev.GetCgrId(rs.Timezone),
RunID: ev.RunID,
@@ -457,7 +458,13 @@ func (rs *Responder) GetSessionRuns(ev *CDR, sRuns *[]*SessionRun) error {
Destination: ev.GetDestination(dc.DestinationField),
TimeStart: startTime,
TimeEnd: endTime,
ExtraFields: ev.GetExtraFields()}
ExtraFields: extraFields}
if flagsStr, hasFlags := extraFields[utils.CGRFlags]; hasFlags { // Force duration from extra fields
flags := utils.StringMapFromSlice(strings.Split(flagsStr, utils.INFIELD_SEP))
if _, hasFD := flags[utils.FlagForceDuration]; hasFD {
cd.ForceDuration = true
}
}
sesRuns = append(sesRuns, &SessionRun{DerivedCharger: dc, CallDescriptor: cd})
}
*sRuns = sesRuns

View File

@@ -229,6 +229,7 @@ const (
CGR_DISCONNECT_CAUSE = "cgr_disconnectcause"
CGR_COMPUTELCR = "cgr_computelcr"
CGR_SUPPLIERS = "cgr_suppliers"
CGRFlags = "cgr_flags"
KAM_FLATSTORE = "kamailio_flatstore"
OSIPS_FLATSTORE = "opensips_flatstore"
MAX_DEBIT_CACHE_PREFIX = "MAX_DEBIT_"
@@ -270,6 +271,7 @@ const (
CreatedAt = "CreatedAt"
UpdatedAt = "UpdatedAt"
HandlerArgSep = "|"
FlagForceDuration = "fd"
)
var (