Voximplant. Blog

Step-by-step call center tutorial part 7

Operator status and temporary ban

While Voximplant ACD framework provides only essential call center backbone, it also has some out-of-the-box features for most popular use cases. One of such features is “Operator Status” that can be set to “Ready” if operator is available to handle a call, or any one of non-“Ready” if calls should not be forwarded to that operator.

All statuses except “Ready” and “Offline” works the same, different names can be used to track statistics. Web SDK is used to manage operator status. For example, status can be changed via setOperatorACDStatus method. In our demo web phone, operator status can be changed via a buttons row:


Operator that is not logged in has an “Offline” status. After login, the status is automatically changed to “Online”. If all operators has “Offline” status, queuing new request will fail with the ACDEvents.Offline event.

Important: Since “Online” is not “Ready”, all new logged-in operators will not receive any calls until they status is set to “Ready”. This mechanic is implemented to protect new developers from accident calls toward operators who don’t expect them. Status need to be explicitly set to “Ready” either by developer or operator.

Another out-of-the-box feature is “automatic operator ban”. If operator does not answer the call, such operator is marked as “banned” and will not receive calls for 12 hours. For non-answered call the ACDEvents.OperatorFailed event will be fired and call will be dispatched to the next available operator.

This is the second “safety net” so calls are not constantly directed to operators who don’t answer them. In order to “unban” operator, status should be changed to “Ready” from “non-Ready” via Web SDK API. With our phone.voximplant.com example app this is done by clicking on any non-“Ready” status button and then on the “Ready” status button.

Queue info and operator status can be received via HTTP API:

curl "https://api.voximplant.com/platform_api/GetACDState?account_id=123456&api_key=12345678-1234-1234-1234-123456789012"

For example, with one “banned” operator and one call waiting, following response will be received:

  1. {
  2. "result":{
  3. "acd_queues":[
  4. {
  5. "outgoing":{
  6. "waiting_call_count":0,
  7. "max_waiting_time":0,
  8. "servicing_calls":[],
  9. "servicing_call_count":0,
  10. "waiting_calls":[]
  11. },
  12. "waiting_call_count":1,
  13. "max_waiting_time":112,
  14. "acd_queue_name":"main",
  15. "ready_operators":[],
  16. "ready_operator_count":0,
  17. "locked_operators":[
  18. {
  19. "unreached":"2016-11-21 11:47:34",
  20. "user_id":170857,
  21. "acd_calls":[],
  22. "user_name":"user",
  23. "locks":[],
  24. "user_display_name":"user"
  25. }
  26. ],
  27. "servicing_calls":[],
  28. "servicing_call_count":0,
  29. "acd_queue_id":207,
  30. "waiting_calls":[
  31. {
  32. "acd_session_history_id":87746,
  33. "is_incoming":true,
  34. "minutes_to_submit":719,
  35. "waiting_time":112,
  36. "acd_request_id":"1V4TTW8dREyxTc0DFvcQBwJdNWXvyEAqnmh4AvHEfQw",
  37. "begin_time":"2016-11-21 11:46:32",
  38. "callerid":"79262251608",
  39. "priority":100
  40. }
  41. ]
  42. }
  43. ]
  44. }
  45. }

Note the locked_operators list that contains info about unavailable operators. Operators in that list with unreached field are banned. Other HTTP API methods can be used to manage queue, collect statistics, etc.

Tagged in