HowTo: Configure Dynamic Queue Login via Status

Introduction

Example of use

A callcenter wants to use the status of an agent to define if the phone has to be in a queue. For example, when the agent is in status 'office', the phone should be placed in the callcenter queue. If the agent changes his status to 'outofoffice', the phone should be taken out of the queue. If the status is 'Pause', the phone should be paused in the queue. The callcenter has number 02123456, the agent also has a direct (internal) number 300. The administrator wants to achieve the following scenario :

status Office OutOfOffice Lunch Pause ToiletBreak SigaretBreak
reachable on callcenter number yes no no no no no
reachable on direct number yes no no yes no no

At first sight, it seems that there is absolutely no difference between the statuses ToiletBreak, SigaretBreak, OutOfOffice and Lunch:
  • the phone is not in the callcenter queue, which means he won't receive calls from the callcenter
  • the agent is not reachable on his direct number
The difference is that, via Advanced Reporting, a report can be made to see for how long an extension has been in a specific status, meaning you can monitor how much time agents loose on specific breaks during the day

How to implement ?

When changing the status, the SOP API will launch a call towards a number that can be defined in the SOP API module. The number that will be called will launch a callflow which handles all the logic of pausing/adding/removing queue members. In order to be flexible, this callflow uses parameters to define following criteria:
  • Does the user has to be added to a queue (you don't want the manager to be logged in when he changes his status) (can be defined per profile)
  • In which queues should the user be logged in/out / paused (can be defined per extension)
  • What should happen for every status (log in/ log out/ pause) (this can be defined globally, meaning that you can not define 'office means login for the profile agent, but means pause for profile Agent2')

Create the parameters

Remarks:
  • If a parameter can have multiple values, they need to be separated by a dash (ex: value1-value2-value3)
  • Asterisk is case sensitive so be careful to use the right case
  • The following parameters need to exist. If the parameters already exist, you do not need to add them anymore

dbSetProfileUserType

DONE Navigate to:  Communication Flow Studio > Global parameters > all
  • Parameter name : dbSetProfileUserType
  • Friendly name : dbSetProfileUserType
  • Value : This should contain a list of all profiles that should have automatic queue actions (for example: Agent)
  • Type : String
  • Owner type : AdminConst

StdResult

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : StdResult
  • Friendly name : StdResult
  • Value :
  • Type : String
  • Owner type : UserVar

StdProfile

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : StdProfile
  • Friendly name : StdProfile
  • Value :
  • Type : String
  • Owner type : UserVar

StdQueue

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : StdQueue
  • Friendly name : StdQueue
  • Value :
  • Type : Queue
  • Owner type : UserVar

dbSetProfilePresentStatus

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : dbSetProfilePresentStatus
  • Friendly name : dbSetProfilePresentStatus
  • Value : This should contain a list of all statuses that require the phone to be logged in (ex: Office)
  • Type : String
  • Owner type : AdminConst

dbSetProfilePausedStatus

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : dbSetProfilePauseStatus
  • Friendly name : dbSetProfilePauseStatus
  • Value : This should contain a list of all statuses that require the phone to be paused (ex: Lunch-Pause-ToiletBreak-SigaretBreak)
  • Type : String
  • Owner type : AdminConst

dbSetProfileAwayStatus

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : dbSetProfileAwayStatus
  • Friendly name : dbSetProfileAwayStatus
  • Value : This should contain a list of all statuses that require the phone to be logged out (ex: OutOfOffice)
  • Type : String
  • Owner type : AdminConst

Queue_subscriptions_<ext>

You will probably have multiple agents who might belong to different queues. Example:
  • the agent with extension 100 belongs to queues CallcenterQueue1 and CallcenterQueue2
  • the agent with extension 101 belongs to queues CallcenterQueue3 and CallcenterQueue4 and CallcenterQueue5
You will have to define a parameter for each extension that needs to be logged in to the queue. The name should be Queue_subscriptions_<ext> where you replace <ext> with the extension of the agent (ex: Queue_subscriptions_101)
DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : Queue_subscriptions_<ext> (replace <ext> with the actual extension)
  • Friendly name : Queue_subscriptions_<ext> (replace <ext> with the actual extension)
  • Value : This should contain a list of all queues the extension belongs to (ex: CallcenterQueue3-CallcenterQueue4-CallcenterQueue5)
  • Type : String
  • Owner type : AdminConst

CallcenterQueues

Agents will be logged in to their queues automatically. However, they could also have the possibility to log them into a certain queue by hand. Example: a little callcenter with 2 agents:
  • Agent1 (who belongs to queues CallcenterQueue1 and CallcenterQueue2)
  • Agent2 (who belongs to queues CallcenterQueue3 and CallcenterQueue4 and CallcenterQueue5)
Agent1 is sick and can't come to work. Agent2 arrives and changes his status to office (his phone is logged in in his own queues). In order to guarantee the service, Agent2 logs in to the queues of Agent1. In the evening, Agent2 changes his status to '!OutOfOffice'. This means that his phone should be taken out of all callcenter queues in order to stop receiving calls. As you can see, the phone should be logged out of all callcenter queues (callcenterQueues) and not just logged out of the queues of the agent (Queue_subscriptions_<ext>) Please note that the user might also belong to other queues in which he is logged in 24/7 that have nothing to with the callcenter. Do not add these queues to the parameter as he will be removed when he logs out

DONE Navigate to:  Communication Flow Studio > Global parameters
  • Parameter name : CallcenterQueues
  • Friendly name : CallcenterQueues
  • Value : This should contain a list of all callcenter queues
  • Type : String
  • Owner type : AdminConst

Create the profile

DONE Navigate to:  Communication Flow Studio > Profiles
Click on add and fill in the following fields:
  • profile name : dbSetProfileAgentLogger
  • type: static
press save

Import the callflow

Import callflow *055 from the library SOP using the system task ImportCallflow

Assign the callflow

DONE Navigate to:  Communication Flow Studio > Callflow assignment
click on add and fill in the following fields:
  • Application Selector : STARTAPPLICATION
  • Profile : dbSetProfileAgentLogger
  • Status : Office
  • CallFlow Root : *055
Press save

Create the extension

DONE Navigate to:  Directory > Internal directory
Click on add and fill in the following fields:
  • Extension : 8855
  • First Name : dbSetProfileAgentLogger
  • Last Name : Service
  • CallFlow : dbSetProfileAgentLogger.Service
Press save

Push the configuration

DONE Navigate to:  Apply changes > Apply changes

Configure the SOP API module

DONE Navigate to:  Advanced > Modules configuration
The SOP API module should already be present. It should have at least version 2.28.0. If this is not the case:
  1. Upgrade the version:
    • click on the change icon next to the SOP API module
    • change the version to at least 2.28.0
    • remember to take care of dependencies
    • press save
  2. Configure the SOP API module:
    • click on the change icon next to the SOP API module
    • set dbSetProfile callback service extension to 8855
    • press save
  3. Reinstall the module:
    • At the top of the page, click on 'here' in the sentence 'To schedule none of the modules for installation, click here'
    • change the action for the SOP API module to INSTALL by clicking on the word 'nothing' just next to the SOP API module
    • click on 'Install modules' at the end of the page

Test

In the asterisk console, you can use the command 'show queues' to see which phones are in which queues.

Known limitations

  • Profiles that use this functionality should have a default status (Communication Flow Studio -> profiles) in which the phone is not logged in and not in pause. If you fail to configure this and you add a new extension (ex: default status office which means the phone should be in the queue), the phone will not be logged in to the queue as the extension didn't actually change status

  • This does currently not work with changing the status via the SMP when the SMP version is prior to version 5.3.0
Copyright © Escaux SA