Diameter - Fix pubsub issue

This commit is contained in:
DanB
2016-01-24 18:11:01 +01:00
parent afb7160257
commit ccda93af48
4 changed files with 24 additions and 2 deletions

View File

@@ -23,6 +23,7 @@ import (
"strconv"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
"github.com/cgrates/rpcclient"
"github.com/fiorix/go-diameter/diam"
@@ -99,7 +100,7 @@ func (self DiameterAgent) processCCR(ccr *CCR, reqProcessor *config.DARequestPro
return nil
}
var reply string
if err := self.pubsubs.Call("PubSubV1.Publish", evt, reply); err != nil {
if err := self.pubsubs.Call("PubSubV1.Publish", engine.CgrEvent(evt), &reply); err != nil {
utils.Logger.Err(fmt.Sprintf("<DiameterAgent> Processing message: %+v failed publishing event, error: %s", ccr.diamMessage, err))
return nil
}

View File

@@ -455,7 +455,7 @@ func TestDmtAgentDryRun1(t *testing.T) {
ccr.NewAVP(avp.OriginHost, avp.Mbit, 0, datatype.DiameterIdentity("CGR-DA"))
ccr.NewAVP(avp.OriginRealm, avp.Mbit, 0, datatype.DiameterIdentity("cgrates.org"))
ccr.NewAVP(avp.AuthApplicationID, avp.Mbit, 0, datatype.Unsigned32(4))
ccr.NewAVP(avp.ServiceContextID, avp.Mbit, 0, datatype.UTF8String("dryrun1")) // Match specific DryRun profile
ccr.NewAVP(avp.ServiceContextID, avp.Mbit, 0, datatype.UTF8String("pubsub1")) // Match specific DryRun profile
ccr.NewAVP(avp.CCRequestType, avp.Mbit, 0, datatype.Enumerated(4))
ccr.NewAVP(avp.CCRequestNumber, avp.Mbit, 0, datatype.Unsigned32(0))
ccr.NewAVP(avp.EventTimestamp, avp.Mbit, 0, datatype.Time(time.Date(2016, 1, 5, 11, 30, 10, 0, time.UTC)))

View File

@@ -53,6 +53,7 @@
"diameter_agent": {
"enabled": true,
"pubsubs": "internal",
},
}

View File

@@ -21,6 +21,26 @@
{"tag": "ResultCode", "field_id": "Result-Code", "type": "*constant", "value": "300"},
],
},
{
"id": "pubsub1", // formal identifier of this processor
"dry_run": true, // do not send the events to SMG, just log them
"publish_event": true,
"request_filter": "Service-Context-Id(pubsub1)", // filter requests processed by this processor
"continue_on_success": false, // continue to the next template if executed
"ccr_fields":[ // import content_fields template, tag will match internally CDR field, in case of .csv value will be represented by index of the field value
{"tag": "TOR", "field_id": "ToR", "type": "*composed", "value": "^*sms", "mandatory": true},
{"tag": "OriginID", "field_id": "OriginID", "type": "*composed", "value": "Session-Id", "mandatory": true},
{"tag": "RequestType", "field_id": "RequestType", "type": "*composed", "value": "^*prepaid", "mandatory": true},
{"tag": "Direction", "field_id": "Direction", "type": "*composed", "value": "^*out", "mandatory": true},
{"tag": "Tenant", "field_id": "Tenant", "type": "*composed", "value": "^cgrates.org", "mandatory": true},
{"tag": "Category", "field_id": "Category", "type": "*composed", "value": "^call", "mandatory": true},
{"tag": "SetupTime", "field_id": "SetupTime", "type": "*composed", "value": "Event-Timestamp", "mandatory": true},
{"tag": "AnswerTime", "field_id": "AnswerTime", "type": "*composed", "value": "Event-Timestamp", "mandatory": true},
],
"cca_fields":[ // fields returned in CCA
{"tag": "ResultCode", "field_id": "Result-Code", "type": "*constant", "value": "300"},
],
},
{
"id": "*default", // formal identifier of this processor
"dry_run": false, // do not send the events to SMG, just log them