Como informar a posição de fila e tempo médio de espera para o seu cliente
Fala blippers, gostaria de compartilhar uma implementação que fiz lá em dezembro/2020 com vocês - uma forma de informar ao seu cliente a posição na fila e tempo médio de espera para atendimento humano. Legal né?
Antes de começar,se inscreva, dê joinha e ative o sininho!!
Informe a posição de fila e tempo médio de espera para o seu cliente
O conceito por trás dessa implementação é informar os valores que são apresentados na tela de Monitoramento do seu bot:
Passo a passo de como informar a posição de fila e tempo médio de espera para o seu cliente:
Criar um bloco antes do Atendimento Humano
Adicione um Processar Comando nas Ações de Entrada do bloco e utilize o método Get Ticket Metrics , armazenando a resposta em uma variável (neste exemplo a variável será getTicketsMetrics)
Adicione um Processar Comando nas Ações de Entrada do bloco e utilize o método Get Waiting Tickets Metrics , armazenando a resposta em uma variável (neste exemplo a variável será getWaitingTicketsMetrics)
Agora, adicione uma ação de Executar script 4.1. Informe em Variáveis de entrada as variáveis de resposta das suas requisições HTTP (getTicketsMetrics & getWaitingTicketsMetrics) 4.2. No corpo do seu script, adicione o seguinte código:
function run(getTicketsMetrics, getWaitingTicketsMetrics) {
var metric = JSON.parse(getTicketsMetrics);
var queue = queuePos(getWaitingTicketsMetrics);
if (queue == 1) {
var queueText = "Sua posição na fila é: " + queue + ".";
return queueText;
} else {
var waitTime = metric.resource.avgWaitTime;
var queueText = "Sua posição na fila é: " + queue + ". Tempo médio de espera: " + waitTime.split(".") 0];
return queueText;
}
}
function queuePos(getWaitingTicketsMetrics) {
var queue = JSON.parse(getWaitingTicketsMetrics);
var queueCount = queue.resource.total;
if (queueCount === undefined) {
queueCount = 1;
return queueCount;
} else {
queueCount = queueCount + 1;
return queueCount;
}
}
4.3. Salve o retorno com uma variável (neste exemplo a variável será queueText)
Agora, adicione a variável de resposta do script no Conteúdo do seu Bloco:
Não se esqueça de transferir o seu cliente para o próximo bloco (atendimento humano) sem aguardar uma resposta, hein!
O resultado será:
Quando você for o primeiro na fila de atendimento:
Quando você for o segundo ou + na fila de atendimento
Olá @GabrielPetrone, estou tendo problema com a posição da fila, esta retornando sempre como primeiro da fila mesmo tendo outras pessoas na fila. Fiz o sugerido acima para o mesmo problema porem ainda sim persistiu, poderia me auxiliar se estou fazendo algum passo errado?
Olá @Rangel.Alves primeiramente, bem vindo à community!
Pelo log que você apresentou, deveria trazer a posição “7”
A falha provavelmente está no script que você está passando, pode colar o/os script(s) aqui pra nós?
@GabrielPetrone muito obrigado, Gabriel! Porém eu estava precisando daquele que a fila é por equipe, se não me engano, esse é uma fila para todas equipes, correto?
ola @ChatBot_Trivento, no link abaixo você consegue o download do atendimento por equipes.
Após esses passos, você deve montar uma ação de entrada selecionando, “executar script”, colocar o script fornecido pelo Gabriel, com a variável de entrada “getTeamsMetrics”. Lembrando das ressalvas que o mesmo faz para a utilização do script de forma automática.
se não foi essa a sua duvida peço desculpas.
Vacilo o meu @ChatBot_Trivento . Acabei de atualizar o arquivo com o fluxo atualizado (com todas as opções discutidas por aqui).
Boa noite, primeiramente obrigado pelo post, vai nos ajudar bastante, porém estou com um problema, fiz conforme o tutorial porém o getWaitingTicketsMetrics está retornando no “total” sempre com o valor “4” mesmo não tendo 4 pessoas na fila.
Será algum erro na consulta?
Trouxe o getWaitingTicketsMetrics pra dentro do bloco (ver anexo) só pra ver o que estava retornando e percebi que ele sempre retorna um valor fixo de 4.
Alguém pode me ajudar?
Descobri aqui, na verdade estava usando a key de outro bot (hehehe) obrigado
Hmm, rapaz! Parece que você está usando a KEY do meu bot de exemplo, rsrs… pelo menos o nome do bot que está aparecendo é o meu:
haha, é só você corrigir isso que vai ser sucesso.
Agora, não era minha intenção disponibilizar essa Key, por segurança. Vou dar uma olhada nisso, até para evitar que ocorra novamente.
Veja se alterando a Key vai resolver e nos avise.
Abraços!
Exatamente rs rs rs usei o seu bot de exemplo e esqueci de alterar a key, obrigado viu valeu d+
Qual endpoint do BliP posso filtrar o time que o cliente foi atribuído para conseguir informar na fila somente para o time que está atendendo ele?
Fala meu querido, veja se é isso que você precisa:
Qualquer coisa me avise.
Viu, na verdade quero fazer aquele script para passar o time de atendimento automaticamente.
Tem como eu filtrar pelo número do cliente qual o ticket tem em espera e pegar o time a partir daí?
Rapaz, sabe qual é o problema? Não tem uma forma (via builder) que permita que você transborde o cliente e posteriormente execute scripts e requisições no bot. Por isso é preciso construir “a regra de atendimento” em um script que retorne o nome do time. Entendeu? Qualquer outra dúvida me avise.
Isso serve para Atendimento WhatsApp? 😃
Sim, funciona em qualquer canal!
Boa tarde!
Essa solução é maravilhosa!! Parabéns!
No entanto, e se eu quisesse informar a posição na fila somente a partir de um determinado número de tickets já em atendimento, por exemplo:
Tenho 2 Agentes que trabalham com distribuição automática e 3 tickets simultâneos cada, logo, eu só gostaria de informar a posição na fila a partir do 7º ticket.
Sei que consigo fazer uma requisição HTTP e pegar os “open tickets”, mas depois não sei como complementar seu código.
Sabe como poderia fazer?
Hey @camila.rocha , obrigado pela sugestão. Pensei em algo aqui, veja se te atende.
Você precisa fazer as mesmas instruções que explico lá em cima (criar as Requisições HTTP…) e por conta de termos alterado o método, você vai precisar passar o seguinte script:
function run(getTicketsMetrics, getAllActiveTickets) {
var open = JSON.parse(getAllActiveTickets);
var openCount = open.resource.open;
if (openCount <= 5 || openCount === undefined) {
return "Você está sendo transferido para nossa equipe de atendimento.";
} else {
var queue = queuePos(getAllActiveTickets);
}
var metric = JSON.parse(getTicketsMetrics);
var waitTime = metric.resource.avgWaitTime;
minutes = convertH2M(waitTime);
if (minutes == 0) {
minutesText = "aproximadamente menos de um minuto.";
Para explicar melhor, uma vez que temos vários formatos de mensagem disponíveis… o que mudou foi o seguinte:
Eu verifico a quantidade de tickets com status open (em atendimento) e enquanto for menor ou igual à 5, retorno a mensagem dizendo que está transferindo para a equipe de atendimento. Se a quantidade de tickets for maior que 5, daí vai ser enviado pra função que vai validar quantos clientes estão na fila:
var open = JSON.parse(getAllActiveTickets);
var openCount = open.resource.open;
if (openCount <= 5 || openCount === undefined) {
return "Você está sendo transferido para nossa equipe de atendimento.";
} else {
var queue = queuePos(getAllActiveTickets);
}
O que mudou na função foram apenas as 3 primeiras linhas, alterando a variável de entrada e o objeto que agora passa a ser a chave waiting (antes usávamos a chave total da outra requisição):
function queuePos(getAllActiveTickets) {
var queue = JSON.parse(getAllActiveTickets);
var queueCount = queue.resource.waiting;
É isso! Nos testes que eu fiz aqui simulando o cenário de 2 atendentes com 3 tickets simultâneos, rodou perfeitamente.
Espero que te ajude e qualquer dúvida, corre aqui!
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.
A analisar o ficheiro em busca de vírus
Lamentamos, mas ainda estamos a analisar o conteúdo deste ficheiro, a fim de nos certificarmos de que o mesmo é seguro para descarregar. Agradecemos que tentes de novo dentro de poucos minutos.