[Resolvido] Redirecionamento por equipe no Desk

Bom dia.

Eu tenho duas equipes de atendentes criadas no Blip, sendo uma Marketing e outra Suporte.
Eu criei uma regra de atendimento para que Se Mensagem do Usuario for “Marketing” encaminha para a equipe Marketing, e outra regra igual para Suporte.

Eu tenho um bloco que verifica com qual setor o usuário deseja falar e encaminha para o bloco de Atendimento humano.

Utilizei o template de atendimento humano disponível.

Problema: o Desk identifica que há atendentes online, porém não verifica se há em equipe “Marketing” ou “Suporte”, se houver apenas 1 online em um desses, ele encaminha como atendentes disponíveis.

Por exemplo, se houver um atendente disponível de Marketing, mas o cliente selecionar Suporte, o blip verifica que há atendentes (pois o de Marketing está online), mas não se há um de Suporte online, ai o usuário fica sem atendimento.

Eu preciso utilizar algum script para fazer essa verificação?

Estou com o mesmo problema. Já te adianto que aquele script do help valida usuários online de forma geral, e não por equipe.

Também estou em busca de um código para isso já que não sou programador e não sei como modificar o código.

Nesse link [Resolvido] Check de Atendente por equipe o @rafaelpa explica o que tem que fazer, mas não compartilha o código.

Será que alguém consegue compartilhar esse código com a gente?

@twilliann

Para fazer esse tipo de verificação, é preciso realizar uma mudança no script presente neste template de atendimento que verifica se existem atendentes online.

Tente da seguinte maneira:

function run(result, team) {
    result = JSON.parse(result)
    let hasAttendant = false;

    if(result.resource && result.resource.total >= 1){
        hasAttendant  = result.resource.items.some(function(attendant){
            return (attendant.status === 'Online' && attendant.teams.includes(team));
        });
    }
    return hasAttendant;
}

Onde team é uma variável contendo o nome do time que você deseja verificar. Esta variável deve ser passada como parâmetro de entrada para o script.

@Filipe_Gustavo_de_Ca por favor, faça o teste.

1 Curtida

Bom dia @Bcamarda.

Obrigado pelo retorno. Eu testei e não consegui fazer funcionar.

Defini a variável com o nome da equipe na ação de de entrada. Mesmo com um usuário dessa equipe definido, o retorno é false.

hasattendant: false
previous-stateid@aabdbbdc-aec9-45d9-9f96-855e06615058: 3fc3b6dd-9891-4cac-91a6-1417a1ca9598

result: {
   "type":"application/vnd.lime.collection+json",
   "resource":{
      "total":2,
      "itemType":"application/vnd.iris.desk.attendant+json",
      "items":[
         {
            "identity":"blip%40xxx.com.br@blip.ai",
            "teams":[
               "Comercial",
               "Financeiro",
               "Suporte"
            ],
            "status":"Offline"
         },
         {
            "identity":"filipe.camargos%40xxx.com.br@blip.ai",
            "teams":[
               "Suporte",
               "Comercial",
               "pap"
            ],
            "status":"Online"
         }
      ]
   },
   "method":"get",
   "status":"success",
   "id":"e36d8087-4d89-40a5-9873-ed44ed50cb8c",
   "from":"postmaster@desk.msging.net/#az-iris4",
   "to":"testes45514255@msging.net",
   "metadata":{
      "#command.uri":"lime://testes45514255@msging.net/attendants",
      "uber-trace-id":"dfed555b84b85f5%3A7098af6262ea8e8a%3Adfed555b84b85f5%3A1"
   }
}

stateid@aabdbbdc-aec9-45d9-9f96-855e06615058: 1ea52b7b-b9ee-4ca1-afc6-575308012d44

status: 200

team: pap

Onde estou errando?!

@Filipe_Gustavo_de_Ca

foi erro meu! :sweat_smile:

Já corrigi o código. Por favor, faça o teste novamente.

Eu estou passando a resposta do usuário para uma variável {{getSetor}} onde recebe a seleção do usuário, no caso Setor 1, Setor 2, etc.

No meu script defini assim:

function run(result, getSetor) {
    result = JSON.parse(result)
    let hasAttendant = false;

    if(result.resource && result.resource.total >= 1){
        hasAttendant  = result.resource.items.some(function(attendant){
            return (attendant.status === 'Online' && attendant.teams.includes(getSetor));
        });
    }
    return hasAttendant;
}

e na variável de entrada adicionei getSetor, porém ainda recebo no debugger:

....

getsetor: Suporte Técnico

hasattendant: false

isworktime: true

previous-stateid@f26182f3-91d4-4d53-a01b-95f947b30783: 95118c04-1f32-40df-b1b0-54fb24fa2fc7

....
1 Curtida

@twilliann

Você chegou a conferir se na variável result existe um atendente online no time Suporte Técnico?

Sim, nas condições de saída do bloco adicionei Se váriavel resulto é igual a “Suporte Técnico”, encaminha para o bloco Atendente Disponível.

Eu devo excluir a condição que valida hasAttendant ou alterar por getSetor ou result? Não etendi

Confirme se a variável result está recebendo o valor correto e se nela exista um atendente online no time Suporte Técnico.

@Bcamarda Alterei o script, porém a transferência continua a considerar se existe usuário online no desk em geral. Estou com apenas um usuário logado na equipe “pap” e se eu escolher a equipe “comercial” ele continua transferindo.

1 Curtida

@Filipe_Gustavo_de_Ca

Por favor, utilize o Debugger e poste o valor das variáveis aqui para que eu possa conferir.