- This method allows the changing of an agent Status to another Status.
- The attempt to execute this method will return an error if attempting to change an Agent's status FROM "busy - On Call" or "Busy - On Email" TO any other status
- The Attempt to execute this method MAY fail if attempting to change status for an agent who's status is already in the process of transitioning to a conflicting status
- Status transitions allowed are as follows:
Previous Status | New Status |
---|---|
Busy - On Call | N/A |
Busy - On email | N/A |
Busy - Chatting | Available |
Accept Internal Calls | |
Wrapup | Busy - On Break |
Busy - Other | |
Busy - On Break | Busy - On Break |
Busy - Other | |
Available | |
Accept Internal Calls | |
Busy - Other | Busy On Break |
Busy - Other | |
Available | |
Accept Internal Calls |
- when attempting to transition an agent Status to "Busy - Other" The "availability" and the "activity" are optional.
- The "availability" must be specified if the "activity" is specified.
- Possible values for status are:
- 0 (not ready); in this case availability code is assumed 0 and activity String.Empty regardless
- 16 (available); in this case availability code is assumed 1 and activity String.Empty regardless
- 17 (accept internal calls); in this case availability code is assumed 2 and activity String.Empty regardless
- 34 (on break); in this case availability code is assumed 0 and activity String.Empty regardless
- 36 (other)
- Other values submitted for "Status" are going to be considered not valid and the request will be declined (logged).
- The supplied availability code and/or activity will be used if and only if the supplied status is 36.
- If not specified, they will be assumed 0 and String.Empty respectively.
In order to use this method, you must first be aware of the Agent's current session ID which can be obtained from this method:
Then use this method to change the desired Agent's status:
"processRemoteInCallStatusChangeRequest" within "frmMainWindow"
ChangeAgentStatusResponse TryForceAgentStatusTransition(string sessionId, string targetAgentSessionId, TransferableAgentStatus status, byte availabilityCode, string activityName)
{
switch (status)
{
case TransferableAgentStatus.Available:
return tryForceAgentStatusTransition(sessionId, targetAgentSessionId, CallTransferStatus.Available, 1, String.Empty);
case TransferableAgentStatus.AcceptInternalCalls:
return tryForceAgentStatusTransition(sessionId, targetAgentSessionId, CallTransferStatus.AcceptInternalCalls, 2, String.Empty);
case TransferableAgentStatus.OnBreak:
return tryForceAgentStatusTransition(sessionId, targetAgentSessionId, CallTransferStatus.BusyOnBreak, 0, String.Empty);
default:
return tryForceAgentStatusTransition(sessionId, targetAgentSessionId, CallTransferStatus.BusyOther, availabilityCode, activityName);
}
}
ChangeAgentStatusResponse TryForceAgentStatusTransition(string sessionId, string targetAgentSessionId, TransferableAgentStatus status, byte availabilityCode, string activityName)
public enum TransferableAgentStatus
{
[EnumMember]
Available,
[EnumMember]
AcceptInternalCalls,
[EnumMember]
OnBreak,
[EnumMember]
Other
}