b. Campaigns v5





Creation

 

 Campaigns

 

Menu where system campaigns are created.

 

New campaigns:

Campaigns allow you to define different groups of agents , both for attention and for outgoing calls to outside the organization.

Here will be defined the behaviours of the campaigns, such as music on hold, notifications , the ACD strategy in the different agents, control thresholds, etc.

 

Grouping within campaigns:

As explained in the point of creation of agents it is always necessary to add the agent to the campaigns that will be working.

It is assumed that the agent will be added depending on the type of work he is doing which may be taking calls as well as making them.

This point is important as it will allow to generate operative statistics of the campaign itself as well as the agent, referring to time, quantities, etc.

 

Voice Campaigns

 

Inbound

 

 

Outbound

 

 

Definition of the direction of the campaign: The type of campaign must be specified (inbound or outbound).

Name: Campaign name.

Email: Campaigns email.

DID: DID (phone number) associated with the campaign for identification purposes.

Music on Hold: Name of the type of music on hold (default: default) (inbound).

Timeout: How much time the agent's phone rings (inbound).

Retry: How long to wait before trying again to all members (inbound).

Wrapup: Time not to send another call after hanging up, allows the agent to finish what he is doing (ex. data entry) (inbound).

Dial String: Provider used on the outgoing calls that are dialed manually (outbound).

Max : Maximum number of people waiting in line (0 for no limit) (inbound).

Service Level: Threshold to calculate service level (inbound/ outbound).

Weight: Weight of the campaign, priority (inbound).

Member Delay: Wait before being able to speak or listen (inbound).

 

For incomming calls: The answered inside the service level in seconds.

For outgoing: Estimated duration of the call, good for management.

 

Context: Context so that if something is typed while being in the campaign, to go to that context (inbound).

Announce Time: How often report the position in the campaign to the caller or estimated time (0 is off) (inbound)

Periodic Announce: name of audio to be played from time to time during the wait. It uses the parámeter "Announce time" to reproduce. (inbound)

Strategy (inbound):

  •  ringall :Ring to everyone until one answers.

  •  leastrecent : Ring at that time was called over from the last time.

  •  fewestcalls: Which has fewer calls answered.

  •  random : Random.

  •  rrmemory:Round robin with memory.

  •  linear:Ring in order.

  •  wrandom : Random but used as a weight penalty, skills.

 Round Seconds: Round seconds in 0, 5, 10, 15, 20 or 30 for report to the caller (inbound).

 Join Empty (inbound): 

Comma separated list of:

  •  

    • paused: Members are considered unavailable if they are paused.

    • penalty: Members are considered unavailable if their penalties are less than QUEUE_MAX_PENALTY.

    • inuse: Members are considered unavailable if their device status is In Use.

    • ringing: Members are considered unavailable if their device status is Ringing.

    • unavailable: Applies primarily to agent channels; if the agent is not logged in but is a member of the queue it is considered unavailable.

    • invalid: Members are considered unavailable if their device status is Invalid. This is typically an error condition.

    • unknown: Members are considered unavailable if device status is unknown.

    • wrap-up: Members are considered unavailable if they are currently in the wrapup time after the completion of a call.

Leave When empty: leave if the campaign is empty (inbound).

Following status separated by comma:

  •  

    • paused: Members are considered unavailable if they are paused.

    • penalty: Members are considered unavailable if their penalties are less than QUEUE_MAX_PENALTY.

    • inuse: Members are considered unavailable if their device status is In Use.

    • ringing: Members are considered unavailable if their device status is Ringing.

    • unavailable: Applies primarily to agent channels; if the agent is not logged in but is a member of the queue it is considered unavailable.

    • invalid: Members are considered unavailable if their device status is Invalid. This is typically an error condition.

    • unknown: Members are considered unavailable if device status is unknown.

    • wrap-up: Members are considered unavailable if they are currently in the wrapup time after the completion of a call.

 

Schedule: The schedule of the campaign.

Welcome: Audio name that will be used as a welcoming music within the flow as a parameter.

 Out of time: Name of the audio that will be used as a Out of Time music within the flow as a parameter.

Thresholds: This section allows you to set thresholds for monitoring the campaign, including:

Service level (Ex. 40-80 percentage):

  •  First range Red (Ex. 0-40), second Yellow (Ex. 40.80), hird Green (Ex. > 80).

Abandon rate  (Ex. 20-60 porcentage):

  • First range Green (Ex. 0-20), second Yellow (Ex. 20-60), third Red (Ex. > 60).

Call and no call time  (Ex. 60-180-300 time in seconds):

  • First range without alert (Ex. 0-60 seconds), second range, yellow phone (Ex. calls between 60 and 180 seconds of duration), third range, red phone (Ex. > 180 seconds).

  • If the agent does not answer any call in more that X seconds a Warning in red will appear (Ex. > 300 seconds without a call).

ACD (Ex. ammount 3-6)

  • Until the first value, the ACD will be green, between the same will be Yellow, Red for higher values.

Breaks (Ex 300-400-100-200):

  • Every break the system has, should have a maximum limit in seconds, otherwise in the alert column will appear the break icon in red indicating that the agent is past time.

TimeOut Restart: If selected to true, the timeout for an agent to answer is reset if busy or congestion can reject the call or cancel (inbound).

Announce Position: Yes, no, once, in the announcement include the position in the ACD. (Inbound).

Announce Hold: If the hold (wait) time is announced or not to the client. (Inbound) 

Virtual Hold: If the Virtual hold functionality is active or not (inbound). This functionality allows to recall clients that for any reason they abandoned the waiting queue.

 Just need to change the workflows (virtualhold → .XXX) to configure the outbound route)

Record: Whether record or not incoming calls to the internal campaigns. Recording the definition is made in the outbound call flow directly (set starting guid as recording name in the flow before entering the campaign).

Ring in Use: True, send other call even if is InUse, if they have answered more than one line and want to attend more than one at a time (inbound).

Form: Here you can define the Form or URL that is displayed when clicking the forms button for a specific campaign.

  • Option 1: uContact Form: Only the name of the Form or Name of the form | true (this is to enable the cross of the form, to be able to close it)

    Examples: Codigos | true

                     Codigos

  • Option 2: uContact URL: URL well formed | name to show on Tab or URL well formed | name of the Tab | true (this is to enable the cross of the form, to be able to close it)

    Examples: http://www.observador.com.uy | Observa

                     http://www.observador.com.uy | Observa | true

 

 Campaign Members

Menu where assigned members in campaigns are managed.

 

Voice Members 

 

 

Here the agents are assigned to campaigns, set its state (if it's paused) and skill (penalty).

 

Campaigns: The campaign is selected.

Agents: Agents who want to be added to the campaign are selected.

Inside of members, in their configuration: Paused: 0 (no) 1(yes), if the extension is paused.

Penalty: The less penalty have an agent, the more calls you entered ir.  If it is taken, the less penalty.  

Members Displays the extensions assigned to the selected campaign, allows to remove from the campaign one or a group of agents.

Find: Allows searches by internal name (may be partial to display similar names). When looking for an Agent , you can see the campaigns to which it belongs.

 

 

Funcionality to select multiple campaigns:

When selecting multiple campaigns, all agents that belongs to those campaigns are shown.

It is possible to add agents to the selected campaigns. The agents must be selected and then they will be added by pressing the add button.

Note: In case that the agent that is wanted to be added does not appear on the Agents table (on the right), it is because he belongs to all the selected campaigns.

If there are multiple selected campaigns and one of the agents is deleted, it will be deleted from all those selected campaigns. .

 

Holidays

Registers holidays for campaigns.

 

 

To add a holiday click on a day of the calendar where the next screen will appear.

 

 

Description: A description of the holiday..

Start time: Start time of the holiday.

End time: End time of the holiday.

Sound: Sound that the event will have.

Campaign: Select the campaign that will have the holiday. To add all campaigns select *.

Recurrent: The event will repet anually. 

Non recurrent: The event will not repeat.

 

When clicking on save, the event will be added to the list that appears at the right of the calendar.

 

 

Within the list of events, if the pointer on one of the events is placed , it will be highlighted in the calendar.

The recurrent events are displayed with a loop icon next to the event name. 

If you want to delete an event , you must point the event that will be deleted and press the cross that appears on the corner.

 

Do not call registry

The do not call registry (DNCR) can add numbers to a campaign in which you do not want to make calls.

This feature allows you to manage DNCR of campaigns by adding or removing specific numbers. These features are detailed below .

 

 

Campaign: Campaign name to be changed . You can select all campaigns choosing the *.

Number: Number to add or remove from the list.

File: File containing phone numbers to add.

File format .csv

blacklist.csv

23578408;campaign

23113758;campaign 

 

Empty a list

To empty a list, the campaign must be selected and then click the cross next to the campaign name.

 

 

This will remove all numbers from the DNCR of the selected campaign.

 

Remove a number from the list

To remove a number from the list, the campaign must be selected and the number must be placed. Then press the Delete button.

Another way is by searching the number on the list and then press the Delete button.

 

Add a number to the list

To add a number to the list, the campaign must be selected, indicate the number and press the Save button.

If you want to upload multiple phones you can upload a file containing the numbers of the files in the format specified above.

 

Outbound

 

Agent with Hardphone

 

2 Step call, calls the agent and when answered calls the destination.

 

${OUTGUID}: Guid of the call ${OUTAGENT}: Agent Name  ${OUTQUEUE}: Campaign Name (Queue) ${OUTDID}: DID to use as callerid  ${OUDIDALED}: Dialed Number

 

With Our Softphone

1 Step call.

 

 

${SIP_HEADER(OUTGUID)}: Guid of the call ${CDR(accountcode)}:  Agent Name ${SIP_HEADER(OUTQUEUE)}: Campaign Name (Queue) ${SIP_HEADER(OUTDID)}: DID to use as callerid ${EXTEN}: Dialed Number

 

Full Example of the Standard Workflow

 

Always set __Ani to be able to find calls in logs.

QueueUpdate always for update the values on Oubound campaigns.

 Set(CDR(userfield)=${userfield})  to Tag recording

 

exten=> _9XXXXXXXX,1,Set(VOLUME(TX)=2) exten=> _9XXXXXXXX,2,Set(VOLUME(RX)=2) exten=> _9XXXXXXXX,3,GotoIf($["${OUTQUEUE}"= ""]?48:4) exten=> _9XXXXXXXX,4,Set(__OUTQUEUE=${OUTQUEUE}) exten=> _9XXXXXXXX,5,Set(__DIALED=${OUTDIALED}) exten=> _9XXXXXXXX,6,Set(__AGENT=${OUTAGENT}) exten=> _9XXXXXXXX,7,Set(CALLERID(num)=${OUTDID}) exten=> _9XXXXXXXX,8,Set(CALLERID(name-pres)=allowed_passed_screen) exten=> _9XXXXXXXX,9,Set(event=${ODBC_Data(select event from queue_log where agent = '${OUTAGENT}' and queuename= '${OUTQUEUE}' and event in ('PAUSE', 'UNPAUSE') ORDER BY id DESC LIMIT 1)}) exten=> _9XXXXXXXX,10,GotoIf($["${event}" = "PAUSE"]?46:11) exten=> _9XXXXXXXX,11,GotoIf($["${OUTGUID}" = ""]?41:12) exten=> _9XXXXXXXX,12,Set(__guid=${OUTGUID}) exten=> _9XXXXXXXX,13,Set(CDR(guid)=${guid}) exten=> _9XXXXXXXX,14,Set(CDR(type)=record) exten=> _9XXXXXXXX,15,MixMonitor(${guid}.gsm,b,) exten=> _9XXXXXXXX,16,Set(CDR(campaign)=${OUTQUEUE}) exten=> _9XXXXXXXX,17,Set(CDR(accountcode)=${AGENT}) exten=> _9XXXXXXXX,18,Set(__idLlamada=${guid}) exten=> _9XXXXXXXX,19,Set(__REALDIALED=${EXTEN:1}) exten=> _9XXXXXXXX,20,Set(existeNum=${ODBC_Data(SELECT COUNT(*) FROM black_list WHERE (campaign like '${OUTQUEUE}%' || campaign like '*%') AND phone ='${EXTEN}')}) exten=> _9XXXXXXXX,21,GotoIf($["${existeNum}"!= "0"]?38:22) exten=> _9XXXXXXXX,22,Dial(SIP/DINSTAR/${EXTEN:1},180,TKkc,) exten=> _9XXXXXXXX,23,Set(CDR(causecode)=${HANGUPCAUSE}) exten=> _9XXXXXXXX,24,NoOp(${DIALSTATUS}) exten=> _9XXXXXXXX,25,NoOp(${HASH(SIP_CAUSE,${CDR(dstchannel)})}) exten=> _9XXXXXXXX,26,NoOp(${HANGUPCAUSE}) exten=> _9XXXXXXXX,27,GotoIf($["${DIALSTATUS}" = "BUSY"]?36:28) exten=> _9XXXXXXXX,28,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?36:29) exten=> _9XXXXXXXX,29,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?34:30) exten=> _9XXXXXXXX,30,GotoIf($["${DIALSTATUS}" = "CANCEL"]?32:31) exten=> _9XXXXXXXX,31,Hangup() exten=> _9XXXXXXXX,32,Playback(outofservice,) exten=> _9XXXXXXXX,33,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,34,Playback(outofservice,) exten=> _9XXXXXXXX,35,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,36,Playback(busy,) exten=> _9XXXXXXXX,37,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,38,Set(dummy=${ODBC_Repo(INSERT INTO black_list_history(calldate\,src\,dst) VALUES (now()\,'${AGENT}'\,'${EXTEN}'))}) exten=> _9XXXXXXXX,39,Playback(DNCRaudio,) exten=> _9XXXXXXXX,40,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,41,GotoIf($["${SIP_HEADER(OUTGUID)}" = ""]?44:42) exten=> _9XXXXXXXX,42,Set(__guid=${SIP_HEADER(OUTGUID)}) exten=> _9XXXXXXXX,43,Goto(agentes,${EXTEN},13) exten=> _9XXXXXXXX,44,GUID(__guid) exten=> _9XXXXXXXX,45,Goto(agentes,${EXTEN},13) exten=> _9XXXXXXXX,46,Playback(pausaerror,) exten=> _9XXXXXXXX,47,Hangup() exten=> _9XXXXXXXX,48,GotoIf($[$["${SIP_HEADER(OUTQUEUE)}"= ""]|$["${SIP_HEADER(OUTQUEUE)}"= "null"]]?54:49) exten=> _9XXXXXXXX,49,Set(__AGENT=${CDR(accountcode)}) exten=> _9XXXXXXXX,50,Set(__DIALED=${EXTEN}) exten=> _9XXXXXXXX,51,Set(__OUTQUEUE=${SIP_HEADER(OUTQUEUE)}) exten=> _9XXXXXXXX,52,Set(CALLERID(num)=${SIP_HEADER(OUTDID)}) exten=> _9XXXXXXXX,53,Goto(agentes,${EXTEN},8) exten=> _9XXXXXXXX,54,Set(HASH(Result)=${ODBC_Data(select did\,name from queues where name in (select queue_name from queue_members where membername = '${CDR(accountcode)}') and direction = 'Outbound')}) exten=> _9XXXXXXXX,55,GotoIf($["${HASH(Result,name)}"= ""]?61:56) exten=> _9XXXXXXXX,56,Set(__AGENT=${CDR(accountcode)}) exten=> _9XXXXXXXX,57,Set(__DIALED=${EXTEN}) exten=> _9XXXXXXXX,58,Set(__OUTQUEUE=${HASH(Result,name)}) exten=> _9XXXXXXXX,59,Set(CALLERID(num)=${HASH(Result,did)}) exten=> _9XXXXXXXX,60,Goto(agentes,${EXTEN},8) exten=> _9XXXXXXXX,61,Background(llamadasincola,,,) exten=> _9XXXXXXXX,62,Hangup()   exten=> h,1,Set(CDR(userfield)=${userfield}) exten=> h,2,QueueUpdate(${OUTQUEUE},${UNIQUEID},${AGENT},${DIALSTATUS},${ANSWEREDTIME},${DIALEDTIME}|${DIALED}|${IdLlamada}|)

 

When you create a campaing you define the Form or URL you want to display when you click in the Forms button in the agent for that campaigns.

Option 1:  uContact Form:  Name of the Form or  Name of the Form and | true (this to be able to close the Form Tab)

Example:  Codigos | true

                Codigos

Option 2: uContact URL:   URL and | name to show on the Tab or URL | name to show on the Tab  | true (this to be able to close the Form Tab)

Examples:   http://www.observador.com.uy | Observa

                 http://www.observador.com.uy | Observa | true

Inbound

Always set __Ani to be able to find calls in logs.

In SIP HEADER we set the CTI values this is persistent to all the call even when transfered if desired you can Remove the Header CTI.

Example

 

 

For hardphones autoanswer set SIP Header: P-Auto-Answer: normal

SIPAddHeader set the Form or URL to PopUp in an incoming call .

Option 1:  uContact Form:   Name of the Form or   Name of the Form | true (this to be able to close the Tab)

Example:  Codigos | true

                Codigos

 

Option 2: uContact URL:   URL and | name to show on the Tab or URL | name to show on the Tab  | true (this to be able to close the Form Tab) (you can also concat variables on the URL example ${CALLERID(num)})

Examples:   http://www.observador.com.uy | Observa

                 http://www.observador.com.uy | Observa | true

          http://www.observador.com.uy/phone=${CALLERID(num)} | Observa | true

 

 

Advanced

 

Go first to an agent

  • Set penalization same as the phone number for each agent on that campaign.

  • Set strategy wrandom.

  • On the workflow set the following variables with the same number of the phone for the agent you want to go first. Set a Queue Rule on the Queue Actibity name tath is between  [] in  queuerules.conf.

     

  •  /etc/asterisk/queuerules.conf  add rule so the call is not always waiting for that agent and can move on the queue.


 

Means: 

After 30 seconds,adjust QUEUE_MAX_PENALTY with +1000 and QUEUE_MIN_PENALTY with - 1000, so the call can jump with other penalizations.

 

ejemplo