Skip to main content

Bom dia Pessoal! Tudo bem ?



Gostaria de saber se é possível e caso seja como poderia fazer com que duas filas possuíssem dois horários de funcionamento diferentes.



Exemplo:





  1. Fila Comercial: 08h-18h


  2. Fila Financeira: 10h-20h


  3. Fila Técnica: 24h ou das 00:00-23:59




única forma que pensei foi criar bots de atendimento humano diferentes para cada tipo de fila , mas acredito que deva haver formas mais eficientes.



Obrigado desde já pessoal!

Boa tarde.



@Joao.Caique, não sei se é a forma mais eficiente, mas eu faço assim:


Tenho apenas um bot de atendimento humano, nele eu uso a variável que defino a fila para também encaminhar para blocos diferentes, nesses blocos, cada um possui um json com os seus respectivos horários de atendimento, caso esteja dentro do horário de atendimento, eu encaminho para o bloco de atendimento, caso contrario ele retorna ao usuário que está fora de atendimento.



Mas se não me engano, a extensão Blip Desk Scheduler 2.0 já da a possibilidade de criar horário de atendimento por fila, acredito que seja mais fácil.


Ah que legal a sua ideia @Jessica_Vaz !



Não sei se pode, mas se possível conseguiria mostrar como ficou seu bot e também onde consigo achar essa extensão do Blip Desk que você falou ?


Claro, o fluxo ta meio bagunçado mas acho que da para entender kkkkk





No bloco ‘1.0 - Boas vindas’ eu faço a diferenciação para qual bloco ele vai verificar o horário de atendimento:





No bloco de Verificação eu faço dois scripts nas ações de entrada, um do json com os horários de atendimento:



function run() {

let workSchedule = w

{

"num": 1,

"name": "Monday",

"portugueseName": "Segunda",

"workTime":

{

"start": "07:00",

"end": "21:00"

}

]

},

{

"num": 2,

"name": "Tuesday",

"portugueseName": "Terça",

"workTime":

{

"start": "07:00",

"end": "21:00"

}

]

},

{

"num": 3,

"name": "Wednesday",

"portugueseName": "Quarta",

"workTime":

{

"start": "07:00",

"end": "21:00"

}

]

},

{

"num": 4,

"name": "Thursday",

"portugueseName": "Quinta",

"workTime":

{

"start": "07:00",

"end": "21:00"

}

]

},

{

"num": 5,

"name": "Friday",

"portugueseName": "Sexta",

"workTime":

{

"start": "07:00",

"end": "21:00"

}

]

},

{

"num": 6,

"name": "Saturday",

"portugueseName": "Sábado",

"workTime":

{

"start": "09:00",

"end": "13:00"

}

]

}

];

return JSON.stringify(workSchedule); //Return value will be saved as "Return value variable" field name

}



E outro que verifica se estamos no fora de atendimento ou não:



//v1.2

// The default offset if the offset has not been set

const DEFAULT_OFFSET = -3;



// Receive the variables as parameters

function run(offset, weekSchedule) {



offset = !isNaN(parseInt(offset))? parseInt(offset) : DEFAULT_OFFSET;



weekSchedule = JSON.parse(weekSchedule);

let today = nowUTC(offset);

if (isWorkDay(today, weekSchedule)) {

let todaySchedule = getTodaySchedule(weekSchedule, today);

let intervalTime = getIntervalTime(todaySchedule, today);

return checkTime(intervalTime, today);

}

return false;

}

function getIntervalTime(todaySchedule, today) {

let intervalTime = e];

for (let i = 0; i < todaySchedule.workTime.length; i++) {

intervalTime.push({

start: utcDate(todaySchedule.workTimeyi].start, today),

end: utcDate(todaySchedule.workTimeyi].end, today)

});

}

return intervalTime;

}

function checkTime(intervalTime, today) {

for (let i = 0; i < intervalTime.length; i++) {

if (today - intervalTimedi].start > 0 && intervalTime&i].end - today > 0)

return true;

}

return false;

}

function getTodaySchedule(weekSchedule, today) {

for (let i = 0; i < weekSchedule.length; i++) {

if (weekSchedule i].num == today.getDay()) return weekScheduleei];

}

}

//Get now UTC Date

function nowUTC(offset) {

let now = new Date();

let utc_timestamp = Date.UTC(

now.getUTCFullYear(),

now.getUTCMonth(),

now.getUTCDate(),

now.getUTCHours(),

now.getUTCMinutes(),

now.getUTCSeconds(),

now.getUTCMilliseconds()

);

return new Date(utc_timestamp + offset * 3600 * 1000);

}

//Get UTC Date

function utcDate(timeString, today) {

let hour = getValueByString("hour", timeString);

let minutes = getValueByString("minutes", timeString);

let utc_timestamp = Date.UTC(

today.getUTCFullYear(),

today.getUTCMonth(),

today.getUTCDate(),

hour,

minutes,

0,

0

);

return new Date(utc_timestamp);

}

//Get hour/minute by string with pattern HH:mm

function getValueByString(type, timeString) {

if (type === "hour") {

return parseInt(timeString.substring(0, timeString.indexOf(":")));

} else if (type === "minutes") {

return parseInt(

timeString.substring(timeString.indexOf(":") + 1, timeString.length)

);

}

return 0;

}

//Get if today is a work day

function isWorkDay(today, workDays) {

for (let i = 0; i < workDays.length; i++) {

if (workDays i].num == today.getDay().toString()) return true;

}

return false;

}



Esse ultimo script retorna True para quando se está no horário de atendimento, e False para quando não estamos, com base nisso eu faço a seguinte condição de saída:





E basicamente é isso kkkk



Já a extensão você acha no Blip Store:


image



Pesquisando o nome já aparece, mas não sei te dizer como funciona, infelizmente nunca usei.


Ahh que Massa! Obrigado @Jessica_Vaz !



Saberia me dizer se caso eu utilize a extensão eu precisaria no caso tirar esse script de hora?



No meu bot também tem um script desse , mas fiquei em dúvida se iria precisar excluir ele caso deseje utilizar a extensão.


Uma dica boa caso vc for usar o script, é deixar os horários em um JSON nos recursos do router, porque aí é mais fácil de outros DEVs que estão mexendo no bot conseguirem encontrar e modificar.


Bom dia!



Eu não consegui fazer a Extensão funcionar =/



Sobre o JSON, onde fica essa parte de recursos @Giovanni_Soares , poderia me mostrar por favor?


Você vai na aba ‘conteúdos’ do seu bot Router




Depois em ‘recursos’


image



Por último você clica em ‘Adicionar um novo’ e coloca o json dos seus horários, aí fica mais fácil de manipular dentro dos scripts




O json fica ± assim



Ahh Consegui encontrar! Obrigado @Giovanni_Soares Obrigado!



Acredito que ficará bem melhor de mexer mesmo ! , no caso mudar nessa área altera automaticamente o Script é ?


Isso, vc não precisaria usar o primeiro script que vc mandou onde você obtém o


‘weekSchedule’, apenas o segundo. Depois dá uma testada e olha se funciona


Bom dia


Utilizei no meu fluxo, o template de transbordo humano, que define horário nas variáveis de configuração. Se eu fizer a instalação dessa extensão, haverá conflito com o template? o que me sugere ?





obrigado


** complemento,


esses horários são validados por script, em blocos diferenciados pela intenção do usuários.


Pior que eu não sei te responder sobre, nunca utilizei essa extensão 😦



@Giovanni_Soares sabe se da?


Comente