Skip to main content
Respondido

Sair do atendimento humano com comando


Bruno_Gabriel

Pessoal,

Queria que quando o cliente está aguardando atendimento, ao digitar #Sair ele saísse do atendimento.
Tem como?

Melhor resposta por fadoaglauss

Então, @Bruno_Gabriel

A primeira coisa é saber se você está utilizando a key do roteador ou do sub bot. A ideia é que você sempre utilize a key do sub bot que tem o Transbordo Humano.

Por acaso você conhece o Postman? Se sim, você poderia utilizar-lo para verificar se sua requisição está funcionando, mas primeiro olha a questão da chave (ps.: eu cometi esse erro na primeira vez).

E também confere mais uma vez o corpo da requisição com o a baixo, porque pelo o que vejo está tudo certinho 😅

{
    "id": "{{random.guid}}",
    "from": "{{application.identifier}}@{{application.domain}}",  
    "to": "postmaster@desk.msging.net",
    "method": "set",
    "uri": "/tickets",
    "type": "application/vnd.iris.ticket+json",
    "resource": { 
        "customerIdentity": "{{tunnel.identity}}"
    } 
}
Veja o original
O conteúdo deste tópico foi útil para você?

20 comentários

fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • 25 de junho de 2021

Hey @Bruno_Gabriel!!

Você pode utilizar essa condição de saído do bloco de Atendimento Humano, assim quando a mensagem corresponder a uma dessas palavras o usuário será redirecionado para o bloco definido no Ir para.

image


fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • 25 de junho de 2021

No seu caso, você pode definir só a palavra #Sair, mas para uma experiência melhor eu sugiro algo como o que eu expliquei.


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 29 de junho de 2021

@fadoaglauss, não funciona, por que ele estaria esperando para ser atendido no Desk, por aparentemente ele entra na conversa…


GabrielPetrone
Blipper
Forum|alt.badge.img+1
  • Blipper
  • 593 comentários
  • 29 de junho de 2021

Eu fiz um teste e aqui pra mim funcionou, no entanto o problema que tive é que o ticket é criado e fica na fila ou em atendimento. Tentei passar uma chamada na API Close Ticket as User e não funciona pois o a var {{input.content@id}} não é preenchida.

Você conseguiu alguma solução pra isso @fadoaglauss ?

@Bruno_Gabriel o quê não deu certo no seu caso? Pode nos mandar uns prints de como configurou?


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 29 de junho de 2021

Gente, culpa minha, eu não vi que no bloco de atendimento humano dava para adicionar mais condições de saída, desculpa.


fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • 1 de julho de 2021

@GabrielPetrone, desculpa a demora 😅

Eu estou utilizando essa funcionalidade como na imagem abaixo 👇

Além disso, utilizo a requisição de close a ticket as user com as seguintes configurações para fechar o ticket.

Method: POST
URL: https://msging.net/commands
Header: Authorization {{config.botKey}}
Body: {
    "id": "random.guid",
    "to": "postmaster@desk.msging.net",
    "method": "set",
    "uri": "/tickets/change-status",
    "type": "application/vnd.iris.ticket+json",
    "resource": {
        "id": "{{ticketID}}",
        "status": "ClosedClient"
    }
}

Lembrando, que eu utilizo contexto de roteador para todas as aplicações e, por isso, preciso realizar a Ação de Entrada/Saída Requisição HTTP. Caso você não utilize contexto de roteador, você pode usar a funcionalidade de Processar Comando, que facilita muitoo nossa vida.

A última coisa que faltou explicar é como obter o ticketID, então para isso você precisará criar o ticket através da Ação de Entrada/Saída Requisição HTTP como a baixo:

Method: POST
URL: https://msging.net/commands
Header: Authorization {{config.botKey}}
Body: {
    "id": "{{random.guid}}",
    "from": "{{application.identifier}}@{{application.domain}}",  
    "to": "postmaster@desk.msging.net",
    "method": "set",
    "uri": "/tickets",
    "type": "application/vnd.iris.ticket+json",
    "resource": { 
        "customerIdentity": "{{tunnel.identity}}"
    } 
}

Em seguida, com a resposta da requisição você utiliza esse script a baixo para obter o ticketID.

const run = (openTicketResponse) => {
    openTicketResponse = JSON.parse(openTicketResponse);
    
    return openTicketResponse.resource.id;
}

GabrielPetrone
Blipper
Forum|alt.badge.img+1
  • Blipper
  • 593 comentários
  • 1 de julho de 2021

Mais perfeito impossível!

Obrigado pelo retorno @fadoaglauss , eu estava desejando que não fosse preciso usar a requisição de Get Ticket Info, mas não foi dessa vez, haha!!

:blipinlove:


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

@fadoaglauss O bot key precisa ser do roteador ou do subbot?


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

Aqui está dando erro no encerramento 😦

order: 0

type: "ExecuteScript"

parsedSettings: {"function":"run","source":"const run = (openTicketResponse) => {\n openTicketResponse = JSON.parse(openTicketResponse);\n \n return openTicketResponse.resource.id;\n} ","inputVariables":["ticketIDReq"],"outputVariable":"ticketID","LocalTimeZoneEnabled":false}

continueOnError: false

timestamp: "2021-07-06T13:50:14.290Z"

elapsedMilliseconds: 1

error: "TypeError: resource is undefined"

Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

Fiz nessa ordem os scripts: @fadoaglauss @GabrielPetrone

image


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

@Pedro_Lucas me ajuda rs


fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • 6 de julho de 2021

Só via mensagem agora 😅

Você precisa utilizar a key do sub bot.


fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • 6 de julho de 2021

Manda um print de cada uma dessa requisições e do script também.


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

Primeira ação:

image
image
image

Segunda ação:

image
image

(Nessa ação que dá erro, que é o script)

A variável ID retorna isso:

id: {“method”:“set”,“status”:“failure”,“reason”:{“code”:62,“description”:“Could not change the parameter of type ‘Lime.Protocol.JsonDocument’ to type ‘Takenet.Iris.Messaging.Resources.Ticket’”},“id":“80fb36b3-b8e5-410e-9b92-e8af5f69e927”,“from”:"postmaster@desk.msging.net/!iris-hosted-2”,“to”:"menuprincipal7@msging.net/!iris-hosted-2-kuwzn8qe",“metadata”:{“#command.uri”:“lime://menuprincipal7@msging.net/tickets”,“uber-trace-id”:“af529702c7c71444%3Abfb173bbc4115d64%3Aaf529702c7c71444%3A1”}}


fadoaglauss
Blipper
  • Blipper
  • 21 comentários
  • Resposta
  • 6 de julho de 2021

Então, @Bruno_Gabriel

A primeira coisa é saber se você está utilizando a key do roteador ou do sub bot. A ideia é que você sempre utilize a key do sub bot que tem o Transbordo Humano.

Por acaso você conhece o Postman? Se sim, você poderia utilizar-lo para verificar se sua requisição está funcionando, mas primeiro olha a questão da chave (ps.: eu cometi esse erro na primeira vez).

E também confere mais uma vez o corpo da requisição com o a baixo, porque pelo o que vejo está tudo certinho 😅

{
    "id": "{{random.guid}}",
    "from": "{{application.identifier}}@{{application.domain}}",  
    "to": "postmaster@desk.msging.net",
    "method": "set",
    "uri": "/tickets",
    "type": "application/vnd.iris.ticket+json",
    "resource": { 
        "customerIdentity": "{{tunnel.identity}}"
    } 
}

Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 6 de julho de 2021

Dá o mesmo erro… Estou usando a key do subbot. @fadoaglauss

idticket: {"method":"set","status":"failure","reason":{"code":62,"description":"Could not change the parameter of type 'Lime.Protocol.JsonDocument' to type 'Takenet.Iris.Messaging.Resources.Ticket'"},"id":"e71d6c62-6312-4ddd-8a2f-8a3f7260f6e2","from":"postmaster@desk.msging.net/!iris-hosted-3","to":"menuprincipal7@msging.net/!iris-hosted-3-kuwzn8qe","metadata":{"#command.uri":"lime://menuprincipal7@msging.net/tickets","uber-trace-id":"55f1ad3f4122da6b%3A92af85606ebb7a41%3A55f1ad3f4122da6b%3A1"}}


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 7 de julho de 2021

Gente, abri um chamado por que não consegui resolver.


GabrielPetrone
Blipper
Forum|alt.badge.img+1
  • Blipper
  • 593 comentários
  • 8 de julho de 2021

Meu caro, nessa ação você está salvando o “Corpo da resposta” como id ??
Pois na sua ação a variável de entrada precisa ser exatamente essa que você usou pra definir o corpo da resposta.

Seria muito legal se você mostrasse o log do debug, ajudaria bastante, rs


Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 8 de julho de 2021

Então, eu to usando a mesma 😕 @GabrielPetrone

A ação que eu pego o ticket ID tem esse log:

Não tem problema eu estar testando pelo subbot e não o roteador né?

idticket: {"method":"set","status":"failure","reason":{"code":62,"description":"Could not change the parameter of type 'Lime.Protocol.JsonDocument' to type 'Takenet.Iris.Messaging.Resources.Ticket'"},"id":"3d4d771b-cc47-457d-9b05-fc8694c19f15","from":"postmaster@desk.msging.net/!iris-hosted-4","to":"menuprincipal7@msging.net/!iris-hosted-4-dk6ecrso","metadata":{"#command.uri":"lime://menuprincipal7@msging.net/tickets","uber-trace-id":"a8d3ecf65fa007be%3A3c922bb88b797e43%3Aa8d3ecf65fa007be%3A1"}}

idticketstatus: 200

Bruno_Gabriel
  • Autor
  • Inspiring
  • 208 comentários
  • 8 de julho de 2021

Gente, agora consegui filtrar pelo ticket, mas não consigo usar o JSON.parse?

Criando o ticket:

helpdeskopenticketcommandresponse: {"type":"application/vnd.iris.ticket+json","resource":{"id":"bf2a82a6-56c7-4ace-b4ac-017a8726a262","sequentialId":127

Filtrar pelo ID dá esse erro:

order: 0

type: "ExecuteScript"

parsedSettings: {"function":"run","source":"const run = (helpdeskopenticketcommandresponse) => {\n helpdeskopenticketcommandresponse = JSON.parse(helpdeskopenticketcommandresponse);\n return helpdeskopenticketcommandresponse.resource.id;\n}","inputVariables":["criarTicketResposta"],"outputVariable":"criarTicketRespostaFiltrado","LocalTimeZoneEnabled":false}

continueOnError: false

timestamp: "2021-07-08T17:33:35.036Z"

elapsedMilliseconds: 1

error: "TypeError: resource is undefined"

Comente


Cookie Policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Definições de cookies