From 3d4d02a23b65f65b7fa82a48fc8ec6bdf9a2c59a Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Wed, 19 Sep 2012 14:10:17 +0300 Subject: [PATCH] new un-park command --- sessionmanager/fssessionmanager.go | 5 ++--- sessionmanager/sessiondelegate.go | 8 ++++---- sessionmanager/sessionmanager.go | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sessionmanager/fssessionmanager.go b/sessionmanager/fssessionmanager.go index d0c8b807f..f1433a91e 100644 --- a/sessionmanager/fssessionmanager.go +++ b/sessionmanager/fssessionmanager.go @@ -131,9 +131,8 @@ func (sm *FSSessionManager) DisconnectSession(s *Session) { } // Sends the transfer command to unpark the call to freeswitch -func (sm *FSSessionManager) UnparkCall(uuid, call_dest_nb, reply string) { - fmt.Fprint(sm.conn, fmt.Sprintf("api uuid_setvar %s cgr_notify %s\n\n", uuid, reply)) - fmt.Fprint(sm.conn, fmt.Sprintf("api uuid_transfer %s %s\n\n", uuid, call_dest_nb)) +func (sm *FSSessionManager) UnparkCall(uuid, reply string) { + fmt.Fprint(sm.conn, fmt.Sprintf("api uuid_transfer %s 'set:cgr_notify=%s' inline\n\n", uuid, reply)) } // Called on freeswitch's hearbeat event diff --git a/sessionmanager/sessiondelegate.go b/sessionmanager/sessiondelegate.go index faba42925..35b8dff65 100644 --- a/sessionmanager/sessiondelegate.go +++ b/sessionmanager/sessiondelegate.go @@ -46,7 +46,7 @@ func (rsd *SessionDelegate) OnChannelPark(ev Event, sm SessionManager) { return } if ev.MissingParameter() { - sm.UnparkCall(ev.GetUUID(), ev.GetCallDestNb(), MISSING_PARAMETER) + sm.UnparkCall(ev.GetUUID(), MISSING_PARAMETER) } cd := timespans.CallDescriptor{ Direction: ev.GetDirection(), @@ -60,15 +60,15 @@ func (rsd *SessionDelegate) OnChannelPark(ev Event, sm SessionManager) { err = rsd.Connector.GetMaxSessionTime(cd, &remainingSeconds) if err != nil { timespans.Logger.Err(fmt.Sprintf("Could not get max session time for %v: %v", ev.GetUUID(), err)) - sm.UnparkCall(ev.GetUUID(), ev.GetCallDestNb(), SYSTEM_ERROR) + sm.UnparkCall(ev.GetUUID(), SYSTEM_ERROR) return } if remainingSeconds == 0 { timespans.Logger.Info(fmt.Sprintf("Not enough credit for trasferring the call %v.", ev.GetUUID())) - sm.UnparkCall(ev.GetUUID(), ev.GetCallDestNb(), INSUFFICIENT_FUNDS) + sm.UnparkCall(ev.GetUUID(), INSUFFICIENT_FUNDS) return } - sm.UnparkCall(ev.GetUUID(), ev.GetCallDestNb(), AUTH_OK) + sm.UnparkCall(ev.GetUUID(), AUTH_OK) } func (rsd *SessionDelegate) OnChannelAnswer(ev Event, s *Session) { diff --git a/sessionmanager/sessionmanager.go b/sessionmanager/sessionmanager.go index f28c780f2..54bf6b342 100644 --- a/sessionmanager/sessionmanager.go +++ b/sessionmanager/sessionmanager.go @@ -24,7 +24,7 @@ import ( type SessionManager interface { DisconnectSession(*Session) - UnparkCall(string, string, string) + UnparkCall(string, string) GetSessionDelegate() *SessionDelegate GetDbLogger() timespans.DataStorage }