mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Adding cgr_type variable set in channel variables even if not there, log customizations for easier troubleshooting
This commit is contained in:
@@ -282,7 +282,7 @@ func (cd *CallDescriptor) GetCost() (*CallCost, error) {
|
||||
Cost: cost,
|
||||
ConnectFee: connectionFee,
|
||||
Timespans: timespans}
|
||||
Logger.Info(fmt.Sprintf("Get Cost: %s => %v", cd.GetKey(), cc))
|
||||
Logger.Info(fmt.Sprintf("<Rater> Get Cost: %s => %v", cd.GetKey(), cc))
|
||||
return cc, err
|
||||
}
|
||||
|
||||
@@ -347,11 +347,15 @@ func (cd *CallDescriptor) GetMaxSessionTime() (seconds float64, err error) {
|
||||
func (cd *CallDescriptor) Debit() (cc *CallCost, err error) {
|
||||
cc, err = cd.GetCost()
|
||||
if err != nil {
|
||||
Logger.Err(fmt.Sprintf("error getting cost for key %v: %v", cd.GetUserBalanceKey(), err))
|
||||
Logger.Err(fmt.Sprintf("<Rater> Error getting cost for account key %v: %v", cd.GetUserBalanceKey(), err))
|
||||
return
|
||||
}
|
||||
Logger.Debug(fmt.Sprintf("Debiting from %v, value: %v", cd.GetUserBalanceKey(), cc.Cost+cc.ConnectFee))
|
||||
if userBalance, err := cd.getUserBalance(); err == nil && userBalance != nil {
|
||||
Logger.Err(fmt.Sprintf("<Rater> Error retrieving user balance: %v", err))
|
||||
} else if userBalance == nil {
|
||||
Logger.Debug(fmt.Sprintf("<Rater> No user balance defined: %v",cd.GetUserBalanceKey()))
|
||||
} else {
|
||||
Logger.Debug(fmt.Sprintf("<Rater> Attempting to debit from %v, value: %v", cd.GetUserBalanceKey(), cc.Cost+cc.ConnectFee))
|
||||
defer storageGetter.SetUserBalance(userBalance)
|
||||
if cc.Cost != 0 || cc.ConnectFee != 0 {
|
||||
userBalance.debitBalance(CREDIT, cc.Cost+cc.ConnectFee, true)
|
||||
|
||||
@@ -181,16 +181,25 @@ func (sm *FSSessionManager) OnChannelPark(ev Event) {
|
||||
}
|
||||
|
||||
func (sm *FSSessionManager) OnChannelAnswer(ev Event) {
|
||||
rater.Logger.Info("freeswitch answer")
|
||||
rater.Logger.Info("<SessionManager> FreeSWITCH answer.")
|
||||
s := NewSession(ev, sm)
|
||||
if s != nil {
|
||||
sm.sessions = append(sm.sessions, s)
|
||||
}
|
||||
// Make sure cgr_type is enforced even if not set by FreeSWITCH
|
||||
cgrType := ev.GetReqType()
|
||||
if cgrType != "" {
|
||||
err := fsock.FS.SendApiCmd(fmt.Sprintf("uuid_setvar %s cgr_type %s\n\n", s.uuid, cgrType))
|
||||
if err != nil {
|
||||
rater.Logger.Err("<SessionManager> Could not enforce cgr_type variable on FreeSWITCH uuid")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (sm *FSSessionManager) OnChannelHangupComplete(ev Event) {
|
||||
rater.Logger.Info("freeswitch hangup")
|
||||
rater.Logger.Info("<SessionManager> FreeSWITCH hangup.")
|
||||
s := sm.GetSession(ev.GetUUID())
|
||||
sm.RemoveSession(s)
|
||||
if ev.GetReqType() == REQTYPE_POSTPAID {
|
||||
startTime, err := ev.GetStartTime(START_TIME)
|
||||
if err != nil {
|
||||
@@ -337,10 +346,9 @@ func (sm *FSSessionManager) Shutdown() (err error) {
|
||||
}
|
||||
rater.Logger.Info("Shutting down all sessions...")
|
||||
fsock.FS.SendApiCmd("hupall MANAGER_REQUEST cgr_reqtype prepaid")
|
||||
fsock.FS.SendApiCmd("hupall MANAGER_REQUEST cgr_reqtype postpaid")
|
||||
for guard := 0; len(sm.sessions) > 0 && guard < 20; guard++ {
|
||||
time.Sleep(100 * time.Millisecond) // wait for the hungup event to be fired
|
||||
rater.Logger.Info(fmt.Sprintf("sessions: %s", sm.sessions))
|
||||
rater.Logger.Info(fmt.Sprintf("<SessionManager> Shutdown waiting on sessions: %s", sm.sessions))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user