Como configurar horário de atendimento e feriados 18 de agosto de 2026 19:54 Atualizado Resumo Configurando seu horário de atendimento Como configurar períodos sem atendimento Configurando o horário de atendimento via Script (opcional) Dicas ResumoEsta documentação explica detalhadamente como criar e configurar a programação de horários da sua operação de atendimento. Você aprenderá a definir filas, estabelecer períodos sem operação e configurar a condição de saída no Builder para direcionar os contatos quando a equipe não estiver disponível. Configurando seu horário de atendimento Acesse o submenu Horário de atendimento, que está localizado no menu Atendimento no cabeçalho do Portal. Na nova tela, crie um horário definido os seguintes parâmetros: Nome e descrição; Filas pertencentes; Programação (dias e horários da operação); Períodos sem atendimento. Salve a configuração. O horário estará criado, porém, exigirá a configuração de uma condição de saída no seu Builder para passar a funcionar. Após salvar, seu horário estará criado, mas ainda não estará funcionando. Para que a validação de seu horário de atendimento passe a ser aplicada, é obrigatório INDICAR UMA A CONDIÇÃO DE SAÍDA na caixa de atendimento do seu Builder. Acesse o menu Builder. Selecione o bloco de atendimento humano do seu bot. Navegue até a aba Condições de saída. Localize e clique na opção + Condição para horário de atendimento. Defina para qual bloco a conversa seguirá caso a sua equipe de atendimento não esteja disponível. Publique o seu bot para que o horário de atendimento passe a funcionar ativamente na sua operação. Com isso, basta publicar o seu bot para que o horário de atendimento passe a funcionar na sua operação. Como configurar períodos sem atendimentoEsta configuração é útil para feriados, recessos ou pausas específicas na operação.Navegue no horário de atendimento desejado até a seção Períodos sem atendimento. Clique no botão Cadastrar período. Preencha os componentes de configuração apresentados na tela: Nome do período: Campo obrigatório para personalizar o título do período. Dia completo: Caso esteja ativado, o período sem atendimento será bloqueado e configurado para iniciar às 00:00 e encerrar às 23:59, nos respectivos dias de início e finalização. Ou seja, o período sempre começará às 00:00 do dia inicial e terminará às 23:59 do dia final. Dia inicial: Data de começo do período sem atendimento. Dia final: Data de término do período sem atendimento. Definir hora (início): Horário em que o período sem atendimento passa a operar. Definir hora (fim): Horário em que o período sem atendimento é finalizado. Exemplos práticos de configuração de períodos Operação sem atendimento nos dias 10/01 e 11/01: Clique no botão Cadastrar período para adicionar um novo período. Preencha o campo com um título para o seu período. Mantenha a opção Dia completo habilitada. Defina a data de início para o dia 10 e a data de término para o dia 11. Operação sem atendimento no dia 20/01, com retorno no dia 21/01, às 13h: Clique no botão Cadastrar período para adicionar um novo período. Preencha o campo com um título para o seu período. Desabilite a opção Dia completo. Defina a data de início para o dia 20/01. Defina a hora de início para as 00:00. Defina a data de término para o dia 21/01. Defina a hora de fim para as 12:59. Configurando o horário de atendimento via Script (opcional)Caso opte por realizar essa configuração através de Script, siga os seguintes passos:1. Adicionando o script SetWorkSchedule Acesse o bloco 2.0 - Verifica Horário Atendimento. Crie uma ação de entrada do tipo executar um script. Altere a nomenclatura do script para SetWorkSchedule. O script SetWorkSchedule deve ser executado obrigatoriamente antes do script CheckWorkTime. Não defina variáveis de entrada para este script. Salve o retorno na variável workSchedule. O script resultante é apresentado logo abaixo e pode ser customizado conforme necessidade: function run() { let workSchedule = [ { num: 0, name: "Sunday", portugueseName: "Domingo", workTime: [ { start: "8:30", end: "12:00" } ] }, { num: 1, name: "Monday", portugueseName: "Segunda-feira", workTime: [ { start: "8:30", end: "12:00" }, { start: "13:00", end: "15:00" }, { start: "15:30", end: "18:00" } ] }, { num: 2, name: "Tuesday", portugueseName: "Terça-feira", workTime: [ { start: "8:30", end: "18:00" } ] }, { num: 3, name: "Wednesday", portugueseName: "Quarta-feira", workTime: [ { start: "8:30", end: "12:00" }, { start: "13:00", end: "18:00" } ] }, { num: 4, name: "Thursday", portugueseName: "Quinta-feira", workTime: [ { start: "8:30", end: "12:00" }, { start: "13:00", end: "18:00" } ] }, { num: 5, name: "Friday", portugueseName: "Sexta-feira", workTime: [ { start: "8:30", end: "12:00" }, { start: "13:00", end: "18:00" } ] }, { num: 6, name: "Saturday", portugueseName: "Sábado", workTime: [ { start: "8:30", end: "12:00" } ] } ]; return JSON.stringify(workSchedule); }2. Adicionando o script CheckWorkTime Acesse novamente o bloco 2.0 - Verifica Horário Atendimento. Crie uma segunda ação de entrada do tipo executar um script. Altere a nomenclatura do script para CheckWorkTime. Configure as variáveis de entrada passando estritamente: config.dateTimeOffset e workSchedule. Salve o retorno na variável isWorkTime. Transfira o script abaixo para o seu bot: // Receive the variables as parameters function run(offset, weekSchedule) { offset = parseInt(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 = []; for (let i = 0; i < todaySchedule.workTime.length; i++) { intervalTime.push({ start: utcDate(todaySchedule.workTime[i].start, today), end: utcDate(todaySchedule.workTime[i].end, today) }); } return intervalTime; } function checkTime(intervalTime, today) { for (let i = 0; i < intervalTime.length; i++) { if (today - intervalTime[i].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.getUTCDay()) return weekSchedule[i]; } } //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; }3. Publicando o fluxoPublique o fluxo para aplicar todas as configurações.Para seguir com a configuração de feriados via Script, siga os passos abaixo:1. Criação do script de verificação Acesse o fluxo do bot. Crie um novo bloco chamado 1.0 - Verifica feriado. Acesse o bloco 1.0 - Verifica feriado. Crie uma ação de entrada do tipo executar um script. Altere a nomenclatura do script para checkHoliday. Não é necessário passar variáveis de entrada. Salve o retorno do script em uma variável chamada isHoliday. Apague o script que vem por padrão. Cole o código abaixo: function run() { const today = new Date(); const holidays = ["01-01", "15-04", "21-04", "01-05", "16-06", "07-09", "12-10", "02-11", "15-11", "25-12", "14-10"]; const month = ((today.getUTCMonth() + 1) <= 9) ? "0" + (today.getUTCMonth() + 1) : (today.getUTCMonth() + 1); const day = today.getUTCDate() <= 9 ? "0" + today.getUTCDate() : today.getUTCDate(); const monthDay = day + "-" + month; return holidays.includes(monthDay); }Pressione as teclas control + s para salvar. 2. Configurando as condições de saída de feriado Ainda no bloco 1.0 - Verifica feriado, vá até a aba condições de saída. Crie uma condição verificando se a variável isHoliday é igual a true. Direcione a condição true para um novo bloco chamado 1.1 - É feriado. No bloco 1.1 - É feriado, configure uma mensagem informando que no dia determinado não existe atendimento devido ao feriado. Direcione a saída padrão do bloco 1.1 - É feriado para o Início do fluxo ou para o redirecionamento do bot principal, em caso de uso de roteador. Crie uma segunda condição no bloco 1.0 - Verifica feriado verificando se a variável isHoliday é igual a false. Direcione a condição false para seguir para o bloco de verificação de horário (recomendamos a nomenclatura 2.0 - Verifica Horário Atendimento).3. Personalizando feriadosQualquer alteração de datas deve ser realizada apenas no comando let holidays.let holidays = ["01-01", "15-04", "21-04", "01-05", "16-06", "07-09","12-10", "02-11", "15-11", "25-12"]; Por padrão, o script já traz alguns feriados nacionais, abaixo algumas orientações sobre como incluir ou excluir feriados.IncluirA inclusão de uma nova data deve ser realizada sempre no formato “dd-MM”, caso utilize outro símbolo como barra (/) no lugar do hífen (-) não irá funcionar, exemplo de inclusão do dia 31-12. Adicione uma vírgula Insira a data desejada no padrão “dd-MM” entre aspas duplas Pressione ctrl+ s para salvar o script Publique o fluxo let holidays = ["01-01", "15-04", "21-04", "01-05", "16-06", "07-09","12-10", "02-11", "15-11", "25-12", “31-12”];Obs: Como boa prática, é sugerido incluir a data em ordem cronológica para facilitar futuras alterações, exemplo: feriado 28-02 (carnaval), deve ser incluído entre 01-01 e 15-04, conforme abaixo. ["01-01", “28-02”, "15-04", "21-04", "01-05", "16-06", "07-09","12-10", "02-11", "15-11", "25-12"]; ExclusãoA exclusão de alguma data específica, deve ser acompanhada da exclusão de uma vírgula, pois cada feriado deve ser separado apenas por uma vírgula. Exemplo antes: let holidays = ["01-01", "15-04", "21-04", "01-05", "16-06", "07-09","12-10", "02-11", "15-11", "25-12"];Exemplo após excluir 15-04let holidays = ["01-01", "21-04", "01-05", "16-06", "07-09","12-10", "02-11", "15-11", "25-12"]; Sugestão de estruturaA sugestão abaixo utiliza o bot de template de atendimento humano disponibilizado, é importante que a implementação seja adequada a estrutura de cada bot. Crie um novo bloco chamado 1.0 - Verifica feriado que vai receber as configurações que foram detalhadas acima. Crie um novo bloco chamado 1.1 - É feriado que vai ter uma mensagem informando que no dia determinado não existe atendimento devido ao feriado e direcionando sua saída padrão o Início do fluxo, ou redirecionamento para o bot principal, em caso de uso de roteador. No bloco 1.0 - Verifica feriado crie duas condições de saída para verificar a variável isHoliday, caso seja true, envia para 1.1 - É feriado, caso seja false, envia, segue para o bloco de verificação de horário. Dicas Como boa prática, é sugerido incluir as datas de feriados em ordem cronológica para facilitar futuras alterações. Exemplo: feriado 28-02 (carnaval) deve ser incluído entre 01-01 e 15-04. Altere no script SetWorkSchedule, caso queira adicionar, alterar ou retirar dias e horários de atendimento. Altere nas variáveis de configuração do chatbot, caso queira alterar o fuso horário. Uma vez que este exemplo foi utilizado para verificação de horários para atendimento humano, o local de alteração para definição de horário de atendimento não será o mesmo do template de atendimento oficial. Precisa de mais ajuda? Explore nossos conteúdos na Blip Academy ou Blip Community, assista a tutoriais no nosso canal do YouTube ou tire suas dúvidas em nosso canal de atendimento 😃 Artigos relacionados Ajustando horário do Builder Pausas Personalizadas Criando mensagens interativas no WhatsApp Envio de Mensagens Ativas do WhatsApp no Blip Desk Configuração do arquivo de audiência - Envio de notificações em massa