Skip to main content

ola pessoal, gostaria de saber, alguem ja conseguiu trabalhar com horas no desk?



por exemplo



pessoa manda msg na sexta feira as 18:00


o desk abre somente na segunda feira, sendo assim preciso direcionar essa pessoa para um bloco que verifica quanto tempo falta para abrir o atendimento. se faltar menos de 20 horas ele vai p um local, se faltar mais de 20h vai p outro.



alguem tem ideia?

Bom @Jeferson_Assis , acredito que esse tópico aqui pode te ajudar com sua dúvida sobre horario de atendimento Como configurar horário de atendimento


opa na vdd nao, esse caso ai consigo ajustr a hora de atendimento,



eu preciso entender como fazer para ver essa hora ai, e ver se falta menos de 20h ou mais de 20h para abrir o desk.


@Jeferson_Assis ah sim, é possível fazer isso por meio de um script. Vamos lá então:



Essa condição de faltar menos de 20h só vai ser atendida se o usuário mandar uma mensagem no domingo, então primeiro temos que verificar isso. Esse script abaixo pega a data atual e olha que dia da semana estamos O método getDay() retorna o dia da semana para a data especificada de acordo com a hora local, onde 0 representa o Domingo.



function run() {

var offset = -3;

var date = nowUTC(offset);

var day = date.getDay()



return day

}



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);

}



Agora, sabendo que se ‘day == 0’ (domingo), vamos checar a hora. Para atender a condição de <20h, a hora atual tem que ser 12:00 (supondo que o desk abra as 08:00). Complementando o código anterior ficaria assim.



function run() {

var offset = -3;

var date = nowUTC(offset);

var day = date.getDay()

if(day == 0){ //Olha se é Domingo

var hourOK = isHourOK(date.getUTCHours()); //Checa se falta 20h

return hourOK;

}

return "Não";

}



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);

}



function isHourOK(hour) {

return hour < 12 ? "Não" : "Sim"; // Vai retornar 'Não' caso não falte 20h para o tempo do desk abrir

}



Agora é só fazer uma comparação do input desse script, se for ‘Não’ você redireciona para o bloco que você decidiu para quem falta +20h para o atendimento, se for ‘sim’ vai para o lugar que falta menos de 20 horas


opa, showw isso mesmo, agora se eu tenho um recurso com os dias de trabalho e horas de abertura , podeira colocar ali?



pois tentando dessa forma, ele mostra o nao e o sim, porem preciso que mostre tipo quanto tempo falta sabe? 10h, 20h. que ele retorne em tempo e nao em sim/nao


Boa tarde @Jeferson_Assis, eu sei que é possível fazer isso, mas não sei como. @GabrielPetrone consegue dar um help aqui?


Agradeço mto se puderem dar norte.



Obrigado @Giovanni_Soares


Hey @Jeferson_Assis , para retornar o horário restante basta ajustar os retornos dos scripts do @Giovanni_Soares , calculando as diferenças por meio da function de Date.



No caso você quer usar alguma outra condição além dessa de 20hrs de diferença? Por isso precisa do valor ao invés de “Sim/Não” ?


Oi, isso msm quero ver ali onde ta Sim/ Nao


Retornar tipo 1200, 120, 90, 60 ou seja numeros do tempo p abrir o desk, sendo assim consigo colocar na condições de saida e jogar p cada local. @GabrielPetrone


Fala @Jeferson_Assis , tudo bem?


Conseguiu destravar isso? Me desculpe, eu não consegui acompanhar o fórum nas últimas semanas.



Eu montei um script aqui que calcula quantos minutos faltam para o próximo dia útil na janela de 08:00 da manhã. Acho que pode te ajudar… segue:



function run() {

var offset = -3;

var date1 = nowUTC(offset);

let date2 = new Date(nextWorkDay(date1));

//you get the difference in ms

let difference = Math.abs(date1.valueOf() - date2.valueOf())

//you can then convert to any format



var min = Math.floor((difference / 1000 / 60) << 0);



return min;

}





function nextWorkDay(date) {



var formattedDate;

var nextDate = tformatMonth(date.getUTCMonth()), date.getUTCDate(), date.getUTCFullYear()].join("/");

nextDate = addDays(nextDate, 1);



if (nextDate.getUTCDay() == 6) {

nextDate = addDays(nextDate, 2);

}

if (nextDate.getUTCDay() == 0) {

nextDate = addDays(nextDate, 1);

}



formattedDate = dnextDate.getUTCFullYear(), formatMonth(nextDate.getUTCMonth()), formatDay(nextDate.getUTCDate())].join("-");

return formattedDate + "T08:00:00"; // 08:00 significa que seus atendentes vão iniciar o trabalho às 8h do próximo dia útil. Altere para o horário correto





}



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);

}



function formatDay(day) {

return day < 10 ? `0${day}` : day;;

}



function formatMonth(month) {

month = parseInt(month) + 1;

return month < 10 ? `0${month}` : month;

}



function addDays(date, days) {

var result = new Date(date);

result.setDate(result.getDate() + days);

return result;

}



O script retorna quantos segundos faltam do momento atual, até o próximo dia útil às 8h da manhã:


image



Faça alguns testes, veja se te ajuda.


Na dúvida, marca um @ no meu nome.



Abraços e feliz ano novo.


Comente