Sticky

Como informar a posição de fila e tempo médio de espera para o seu cliente



Mostre a primeira mensagem

74 comentários

@GabrielPetrone, ficou top! Implementei na nossa estrutura de atendimento.


Conseguimos alterar para que a variável da equipe de atendimento seja dinâmica, de acordo com a equipe atribuída ao cliente inicialmente.


Tenho na verdade outro desafio, hahaha!


Pensa comigo, what if, a contagem de posição na fila, fosse interativa, se ao passar alguns minutos que ele está aguardando, fosse realizado outra requisição para atualizar a posição dele na fila.


image


Tá tá, sei que aparentemente é meio impossível, pq ao entrar no bloco de atendimento, não conseguimos fazer requisições, mas e se validarmos a resposta do cliente, exibindo tipo uma mensagem, exemplo; “Parça, se vc quiser atualizar sua posição na fila, me fala atualizarr”.


E com base na resposta, direcionar para um novo bloco, onde faríamos outra requisição e outro script para atualizar a posição.


Think About It Reaction GIF by Identity


PS: Nem sei se falei coisas com sentido. Mas fica ai o desafio, valeu abraço…

Reputação 7
Crachá +1

Muito obrigado Xará @Gabriel_Braz !! Que bom que implementou com equipes dinâmicas, fica show demais né?


Hammm, já pensei um pouco sobre isso também e a única solução que me veio na cabeça foi ter uma API intermediária que vai fazendo esse check. A sua sugestão me fez refletir um pouco mas segue um ponto de atenção:

Como podemos calcular quantas posições um contato andou, uma vez que não sabemos exatamente quem é quem na fila?


Compartilha o código com nos! rsrs

Também estou com dificuldade em executar esse script.


Tenho certeza que o problema é o usuario aqui.


Poderiam dar uma luz ?


Failed: ExecuteScript action in 65 milliseconds


order: 0


type: “ExecuteScript”


parsedSettings: {“function”:“run”,“source”:"/**\n * All input variables needs to be passed as function param;\n * Objects received as param needs to be parsed. Ex.: JSON.parse(inputVariable1);\n * Objects returned needs to be stringfied. Ex.: JSON.stringify(inputVariable1);\n **/\n \n function run(getTicketsMetrics, getWaitingTicketsMetrics) {\n\n var metric = JSON.parse(getTicketsMetrics);\n\n var queue = queuePos(getWaitingTicketsMetrics);\n \n if (queue == 1) {\n var queueText = “Sua posição na fila é: " + queue + “.”;\n return queueText; \n } else {\n var waitTime = metric.resource.avgWaitTime;\n var queueText = “Sua posição na fila é: " + queue + “. Tempo médio de espera: " + waitTime.split(”.”)[0];\n return queueText;\n }\n }\n\n\n function queuePos(getWaitingTicketsMetrics) {\n \n var queue = JSON.parse(getWaitingTicketsMetrics);\n var queueCount = queue.resource.total;\n \n if (queueCount === undefined) {\n queueCount = 1;\n return queueCount; \n } else {\n queueCount = queueCount + 1;\n return queueCount;\n }\n }”,“inputVariables”:[“getTicketsMetrics”,“getWaitingTicketsMetrics”],“outputVariable”:“queueText”,“LocalTimeZoneEnabled”:false}


continueOnError: true


timestamp: “2021-11-15T20:12:07.342Z”


elapsedMilliseconds: 65


error: “TypeError: resource is undefined”

Reputação 7
Crachá +1

Fala @DivinoDr_Suporte !

Humm, veja bem… nas suas duas requisições (getTicketsMetricse getWaitingTicketsMetrics) você passou a variável para corpo de resposta com o nome de: response.


Dessa forma, uma substituiu a outra e consequentemente o script não localizou os objetos esperados no JSON.


Dá uma olhada no item 4.1 do primeiro tópico. 😉


Faz um teste e corre aqui se precisar de mais ajuda!


Abraços.

Cara, era isso mesmo;


Obrigado

Fala galera, boa segunda pra todos…


O campo que está sendo considerado no script para apresentar o tempo médio de espera é: averageAttendanceTime que de acordo com a documentação do BLip, representa a duração média dos atendimentos:


image


Porém, analisando os demais indicadores, notei que talvez o campo que deveria ser utilizado, fosse o: averageWaitTime que representa o tempo médio que o cliente aguarda para ser atendido + tempo para primeira resposta:


image


No nosso caso, fez mais sentido, pq também devemos considerar o tempo que ele ficou em fila, aguardando ser direciona para um atendente. E nos nossos monitoramentos o averageWaitTime é sempre maior que o averageAttendanceTime.


Não sei se meu raciocínio está 100% correto, mas achei importante compartilhar…


Um abraço quentinho:


image

Reputação 7
Crachá +1

Hey Xará @Gabriel_Braz , faz todo sentido seu raciocínio. Obrigado por compartilhá-lo conosco!

Como durante as conversas aqui surgiram várias modificações, pode ter ocorrido alguma necessidade de utilizar o avgAttendanceTime, mas originalmente estamos passando o avgWaitTime.


Acima de tudo vale a experimentação e modificação conforme cada necessidade, já dizia o Tio Bruce:

image


Tmj meu querido! Continue compartilhando e contando conosco!


Abraços.

Oi, pessoal! Bom dia!


Muito bom, nos ajudou bastante mesmo!! Muito obrigado!


Usamos aqui mas precisamos de mais uma melhoria kkkk ao invés do número na fila ser sempre o do inicio do contato (ex: entrei na fila e tinha 2 pessoas, meu número na fila será 2), porém, depois que a fila começa a andar, precisaria que o número na fila mudasse (no caso seria para o 1).


Vocês conseguem me ajudar com isso??


Obrigado gente!

Reputação 7
Crachá +1

Hey @Caio_Lima , tudo bem?

Antes de qualquer coisa, gostaríamos de te dar boas-vindas à Comunidade! 💙




Poutz, isso seria lindo né?


A única forma de fazer isso hoje, seria através de um monitoramento externo ao Blip :sadblip: .

Em outras palavras, precisaria de ter uma API que monitore a fila de atendimento, disparando uma mensagem cada vez que a fila andasse. Parte da solução está aqui no tópico, mas como eu disse precisaria externalizá-la.


Qualquer outra dúvida, fique à vontade pra nos chamar.


Abraços.

Bom dia, tudo bem?


Muito legal, nós ajudou muito a postagem.


Apliquei em meu bot e deu tudo certo, mas gostaria de uma opção onde depois que o cliente escoasse para fila de atendimento e ele mandasse uma mensagem, eu conseguir devolver novamente a posição da fila dele atualizado, você consegue nós ajudar com isso???


Obrigada!

Reputação 6

Ei, @Kalolayna_Millaqueo 💜

A Dell Brasil está fazendo isso…

Não a posição em si, mas enviar mensagem dentro do atendimento humano para avisar que o atendimento não foi esquecido.

Reputação 7
Crachá +1

Hey pessoal @Kalolayna_Millaqueo @Bruno_Gabriel !

Pois é, essa questão é top demais e não é complicada de ser feita! Foi o que expliquei um pouco mais acima pro @Caio_Lima. Para reforçar, só precisa de externalizar a solução através de uma API intermediária.


@Bruno_Gabriel , você que é fera poderia desenvolver isso pra comunidade hein?

Fica a dica!


Abraços.


Dá para fazer pelo Integromat rsrs

Quando tiver tempo vou testar.

Gabriel,


Vi a parte que voce menciona que seu script seria para a fila DEFAULT, no meu caso que possuo varias filas oque eu precisaria fazer ?


Segue em anexo um print das minhas filas

Reputação 7
Crachá +1

Hey @carlos_clayton_olive !


Tem uma resposta nesse tópico que auxilia justamente no caso de várias filas, dê uma olhada e veja se te ajuda:



Abraços.

Gabriel,


Eu consegui, agora está mostrando corretamente.

Queria agradecer muito sua ajuda e sua rapidez de resposta, vai nos ajudar muito.

Nosso bot ta ficando bonito rsrs

Boa tarde Gabriel,


Tentei utilizar esse codigo mas para mim deu erro, consegue me ajudar ver se tem algum erro da minha parte.


Subi um video no google drive com a explicaçao: https://drive.google.com/file/d/13QDpE33eSXCq3fpf39heDepoQDmdodWO/view?usp=sharing

Gabriel,


No meu caso esse codigo que utilizei ta pegando o “Tempo médio de atendimento” e nao o “Tempo médio de espera”


Segue evidencia em anexo


Codigo utilizado:


function run(getTeamsMetrics) {


var teamsMetrics = JSON.parse(getTeamsMetrics);
var team = "Default";
var teamsTotal = teamsMetrics.resource.total;

for (i=0; i < teamsTotal; i++){
if (teamsMetrics.resource.items[i].name == team) {
var queuePosi = teamsMetrics.resource.items[i].waitingTickets;
var queueTimes = teamsMetrics.resource.items[i].averageAttendanceTime;
}
}

queuePosi = queuePosi + 1;
var minutes = convertH2M(queueTimes);

if (minutes == 0) {
minutesText = "aproximadamente menos de um minuto.";
} else {
minutesText = "aproximadamente " + minutes + " minutos."
}

var queueText = "Sua posição na fila é: " + queuePosi + ".\n Tempo médio de espera: " + minutesText;
return queueText;

}


function convertH2M(timeInHour){

var timeParts = timeInHour.split(":");

return Number(timeParts[0]) * 60 + Number(timeParts[1]);

}



Reputação 7
Crachá +1

Hey @carlos_clayton_olive , obrigado pelo feedback!


Bem notado, no script eu uso o campo averageAttendanceTime que é o tempo médio de atendimento, e era o campo disponível para uso na época.

Mas o @Bruno_Luz me deu uma luz (ba-dum-tiss!) de que a API do Get Teams Metrics, agora retorna também o campo averageWaitTime.


Então teoricamente você precisa apenas trocar no script onde tem estes campos. Porém, eu fiz um teste aqui e pra mim o campo não apareceu :cryingblip:, estou tentando descobrir o comportamento para te passar corretamente.


Exemplo do campo retornando:


Enquanto procuro por aqui, se possível peço que dê uma olhada no seu bot no endpoint que passei, para ver se é apresentado o campo. Se sim, pode implementar que vai ser sucesso e eu retorno com mais detalhes em breve.


Abraços.

apoiofinanceirocbv (1).json (46,7,KB)


Olá @GabrielPetrone boa noite!


Seguei suas dicas e o tutorial, mas aqui não funcionou 😦


Anexei aqui o fluxo criado, pode me ajudar a entender onde está o erro?


Desde já muito obrigado.

Reputação 5
Crachá +1

Alguém sabe como faço pra enquanto o cliente não for atendido eu informar ele em que posição e tempo de atendimento faltam pra ele ser atendido ?

Reputação 2

Alguém sabe como faço pra enquanto o cliente não for atendido eu informar ele em que posição e tempo de atendimento faltam pra ele ser atendido ?

Opa, isso é possivel atraves da extensão da Blip Store

Comente