Informe 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!! deixe seu voto aqui na Ideia para que isso se torne uma funcionalidade oficial no Blip:
https://ideas.blip.ai/forums/916174-blip-ideas/suggestions/37873717-exibir-posição-na-fila-de-espera-após-ser-transfer

O conceito por trás dessa implementação é informar os valores que são apresentados na tela de Monitoramento do seu bot:

Hand’s On :blippanther:

  1. Criar um bloco antes do Atendimento Humano

  2. Adicione uma Requisição HTTP 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)

  3. Adicione uma Requisição HTTP 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)

  4. 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)
5. Agora, adicione a variável de resposta do script no Conteúdo do seu Bloco:

  1. 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:
    20210406_4244_%pn

  • Quando você for o segundo ou + na fila de atendimento:
    20210406_4246_%pn


Caso você queira exibir apenas os minutos (ao invés de HH:MM <-> MM), basta usar o código que está neste link aqui. :point_left:


Gostaria de fazer um teste? Clique aqui e fale com o Bob da Fila de Atendimento

Como tudo são flores :sunflower: segue o fluxo completo para download e caso você achar mais fácil, basta importá-lo. Só tome cuidado para não sobreescrever o seu bot:
https://www.bots2u.com.br/templates/filadeatendimentohumano.json

Espero que tenham gostado e que isso ajude. Em caso de dúvidas, chame o Pedro :pedrolucas:

:blipinlove::thuglifeblip:

31 Curtidas

Mandou bem demaisss! :gabrielpetrone::blipinlove:

3 Curtidas

Gabriel, vc pode me ajudar pfv? Eh mto importante pra mim e eu nao sou taaao familiarizado assim

2 Curtidas

Fala blippers, o @Marlon_Freitas_Salat me alertou que havia algo errado no código que passei anteriormente, muito obrigado por isso meu querido!
Diante disso, aproveitei para dar uma revisada e melhorada no código.

O que eu mudei:

  • Adicionei as duas funções em um único script, para facilitar o código.
  • Criei um chatbot com o modelo
  • Disponibilizei o modelo para o download

Então é isso! Obrigado novamente Marlon.

7 Curtidas

O Engajamento de vocês é algo sem igual! Você e o @Pedro_Lucas, são exemplos pra mim! :rocket:

5 Curtidas

Uau Gabriel! Mandou bem demais :rocket: :rocket: :rocket:

2 Curtidas

Uma função simples mas de extrema utilidade, meus parabéns! :clap:

2 Curtidas

Valeu pessoal! Acima de tudo, o importante é a gente utilizar e sempre buscar uma forma de melhorar. Então espero sugestões e melhorias do código pra comunidade!

#vqv #onestepbeyond #foguetenãotemré

2 Curtidas

Mandou bem demais, Gabriel!

3 Curtidas

Boa tarde!
Vcê pode colocar as melhorias que você aqui também?
Pois estou tentando seguir o código que você passou e não estou conseguindo, sou nova na plataforma ainda, ai fico travando em algumas partes.
Pelo que me parece, não tenho autorização.

1 Curtida

Bom, as melhorias estão no primeiro post, é só seguir ele que está 100% funcional e “melhorado”.

Estou vendo pelo seu log que o erro é no Authorization Header, ou seja, você está passando a sua Chave de Autorização errada ou incompleta.

Dá uma olhada nesse artigo explicando como pegar a API-KEY do seu Bot:

O Authorization você passa dessa forma (tanto pro tópico 2 quanto o 3 no tutorial):

Qualquer dúvida me avise, se preferir, estou disponível para fazer uma call e te ajudar, só mandar uma PM.

2 Curtidas

Nossa muito obrigada! Agora deu certo!!
Eu estava pegando o Key de outro local, ai estava sem os dois últimos caracteres.

Só pra aproveitar a mensagem, já viu de acontecer, de só aparecer na mensagem que estou na posição 1, mesmo tendo 3 pessoas para a tendimento?

2 Curtidas

\o/ :partyparrot:

Não vi acontecer, mas pode ser alguma falha na Requisição e/ou Function GetWaitingTicketsMetrics. Quando o retorno é “undefined”, eu passo o valor pra 1, e pode ser que está sempre retornando undefined pra você.

Temos que investigar o motivo. Uma forma é você me passar o retorno de resposta dessa Requisição HTTP. Acredito que se você me passar o print desse log novamente, já vai ser possível capturarmos algo.

2 Curtidas

Vou te mandar a tela aqui então

1 Curtida

Veja só, o retorno da GetTicketsMetrics e GetWaitingTicketsMetrics está exatamente igual, mas são métodos diferentes:

O primeiro GetTicketsMetrics você precisa passar o body:

{
  "id": "{{random.guid}}",
  "to": "postmaster@desk.msging.net",
  "method": "get",
  "uri": "/monitoring/ticket-metrics?version=2"
}

No segundo GetWaitingTicketsMetrics você passa o body:

{
  "id": "{{random.guid}}",
  "to": "postmaster@desk.msging.net",
  "method": "get",
  "uri": "/monitoring/waiting-tickets?version=2"
}

Agora vai dar bom hein! Faz aí e me fala, estou por aqui.

Dica, vi que você está passando o ID: {{$guid}} nas suas requisições. Não sei muito detalhe sobre mas isso é um código para gerar um ID aleatório que funciona no Postman (não sei de outras ferramentas mas creio que seja um padrão). Porém aqui no Blip você tem que passar {{random.guid}} para obter um ID aleatório.

2 Curtidas

:wave: :dash: :dash: :dash:
Muuuuito obrigada mesmo. Deu super certo agora!

4 Curtidas

Bom dia @GabrielPetrone tudo bem?
Deu tudo certo obrigado pela solução.
Tenho uma duvida somente…
Como eu retiro as casas após o “.” por exemplo aparece o tempo: 00:02:41.333333
esses valores “333xx” como retira?

Olá @Cristian_Oliveira tudo bem? Primeiramente, bem-vindo à nossa comunidade! :giveaway: :giveaway:

Vou deixar o @GabrielPetrone te responder com mais precisão, afinal, é a solução dele, não é mesmo? :joy:

Mas dá pra diminuir o número de casas direto lá no script onde monta a variável queueText

3 Curtidas

Olá @Cristian_Oliveira, seja muito bem-bindo ao fórum do Blip!!
O @Bruno é um cara fera, tenho certeza que vai poder sugerir outras formas de remover isso…

Mas a mais fácil que pensei aqui foi dar um split na var waitTime. Vamos lá:
Lá na linha 12 do script, substitua por:

var queueText = "Sua posição na fila é: " + queue + ". Tempo médio de espera: " + waitTime.split(".")[0];

Fiz um teste aqui e funcionou perfeitamente com o seu exemplo :blipmarvel:

Editei o script completo ali na primeira resposta, caso achar mais fácil, é só copiá-lo.

E acima de tudo, fique à vontade para nos trazer feedbacks!! :blipinlove:

Abraços.

4 Curtidas

Sensacional @GabrielPetrone Show demais.!
Funcionou perfeito.!

Muito Obrigado…

3 Curtidas