Segmentar atendimentos por equipes no Builder validando horário

Olá, prezados!

Tenho várias equipes que funcionam em horários diferentes. Basicamente equipes que funcionam em horários comerciais e outras que funcionam em horários não comerciais.
Preciso segmentar No Builder, em algum bloco pertinente, a seguinte lógica:

Verifica data e hora agora(real-time),
Se {data} for entre {seg a sexta}
e {hora} for entre {08:00} e {18:00}
transfere para atendimento humano na equipe {comercial}

 Se não, transfere para atendimento humano na equipe {não-comercial}

Podem me ajudar com os passos de como fazer isso no Builder?

Alguém disponível pra ajudar?

Oi @Daniel_Madureira

O Blip oferece a variavel {{calendar.time}} que traz o horário no formato HH:mm, lembrando que está em GMT 0 então será necessário tratar para trazer pro GMT -3.

Você pode fazer isso dentro de um script e retornar true se estiver dentro do horario comercial e false se estiver fora do horário comercial. E então tomar as decisões que forem necessárias.

Abaixo eu vou deixar um script de outra aplicação que também faz isso lembrando que a função nowDate poderia ser substituída pela variavel {{calendar.time}}:

var workDays = '{{config.workDays}}'; //Varivel global criada que pode assumir os valores 0,1,2,3,4,5,6. Sendo 0 domingo e 6 sabado
var endDate = '{{config.endDate}}'; //Varivel global que assume hora no padrao HH:mm
var startDate = '{{config.startDate}}'; //Varivel global que assume hora no padrao HH:mm
var saturdayEndDate = '{{config.saturdayEndDate}}'; //caso sabado seja usado um horario diferente pode ser informado


let timezone_hours = 3;
let timezone_month = 1;


function nowDate(){
 var now = new Date()  
 var day = now.getUTCDate();
 var minute = now.getUTCMinutes();
 var year = now.getUTCFullYear();
 var month = now.getUTCMonth();
 var hour = now.getUTCHours();
 var weekDay = now.getDay(); //workDays, dia da semana, comeca em 0 no domingo até 6 no sabado

month = month+timezone_month; //Conversão necessária pois UTC trabalha de 0-11 e não 1-12
hour = hour-timezone_hours; //Conversão necessária para timezone de brasilia
if(hour == '-3') {hour = '21'}
if(hour == '-2') {hour = '22'}
if(hour == '-1') {hour = '23'}

return obj = {
     'diaS'   : weekDay,
     'diaM'   : day,
     'mes'    : month,
     'ano'    : year,
     'hora'   : hour,
     'minuto' : minute
 }
}
function run(){
   var horaInicio = startDate.slice(0,2);
   var minutoInicio = startDate.slice(3,5);
if (nowDate().diaS === 6){
   var horaFinal = saturdayEndDate.slice(0,2)
   var minutoFinal = saturdayEndDate.slice(3,5)
}else{
   var horaFinal = endDate.slice(0,2)
   var minutoFinal = endDate.slice(3,5)
}
if ( nowDate().diaS === 0){ //Valida se é domingo
   return obj = {
     'atendimento' : false,
     'hora' : nowDate().hora
  }
}else{ //Dias de semana
//console.log(nowDate());
//---Faz as validações de regra de negocio dos horários
if (nowDate().hora < horaInicio){
 return obj = {
  'atendimento' : false,
  'hora' : nowDate().hora
 }
} 
else if(nowDate().hora == horaInicio && nowDate().minuto < minutoInicio)
{
 return obj = {
   'atendimento' : false,
   'hora' : nowDate().hora
  }
}
else if (nowDate().hora > horaFinal)
 {
 return obj = {
   'atendimento' : false,
   'hora' : nowDate().hora
  }
}
else if(nowDate().hora == horaFinal && nowDate().minuto > minutoFinal )
{
 return obj = {
   'atendimento' : false,
   'hora' : nowDate().hora
  }
}
else
{
 return obj = {
   'atendimento' : true,
   'hora' : nowDate().hora
  }
 }
}
}

No final você recebera uma variavel com dois parametros, o parametro atendimento irá ser true dentro do horário e false fora.
E o parametro hora vai trazer a hora que o cliente interagiu, usamos esse parametro para realizar um registro de eventos que vai nos dizer quais os horários de pico.

Espero ter ajudado!!

1 curtida

Pelo que li das documentações, só é possível fazer por script, mas tem um documento no help center que te ajuda a fazer de forma simples e rápida, no meu caso tenho 3 equipes com horários diferentes, setei uma variável extra de contato para definir para qual dos blocos de validação de horário o cliente é encaminhado (após o bot identificar para qual equipe ele será transferido), ou seja é só duplicar a estrutura no documento abaixo quantas vezes for necessário (setores e horários de operação diferentes) :

A estrutura do meu está assim:

1 curtida

@Thiago_Alberto_da_Si preciso criar um bot que ao entrar em contato com o mesmo, se estiver antes das 18h direcionar para um bloco, após esse horário direcionar para outra. Seria dessa forma que explicou? Poderia detalhar melhor como fazer?

Quando o cliente entra em contato fora do horário de atendimento, nós informamos que não tem nenhum atendente disponível, porém realizamos um agendamento(schedule) de mensagem dentro da janela de 24 horas do cliente, dessa forma assim que dá o horário de atendimento, é enviado uma mensagem para o cliente informando que temos atendentes disponíveis e se eles desejam continuar, dessa forma não perdemos o contato e não pagamos por notificação ativa.