Skip to main content

Dados do subbot não são propagados para o Desk


Bom dia!
Tenho uma estrutura de 1 router e 2 subbots, direcionando para o Messenger e para o Chat.
Em ambos os subbots defino os contatos e informações extras e cada canal tem seu atendimento.

Eu publiquei o Router e utilizei a opção de contexto de roteador nos subbots para que as variáveis sejam propagadas pelos bots. Porém, quando um cliente solicita atendimento humano e esse cliente vai para o Desk, os dados não são salvos no contato.

Quando eu utilizo diretamente o subbot, os dados vão corretamente para o desk, mas pelo router não. Os dados não deveriam ser compartilhados entre bots?

Este tópico foi fechado para respostas.

22 comentários

Bruno
  • Specialist
  • August 31, 2020

Olá @Artur_Lunardi_Di_Fan de fato, o ideal é que fosse compartilhado entre os subbots, no entanto o Desk está com este problema.

Você conseguiu alguma atualização em relação a isso?


Olá, @BrunoC

Não, sem sucesso no compartilhamento de dados entre subbots pro Desk
Tivemos que desmarcar a opção de contexto do roteador para que os dados chegassem corretamente e criar um modelo de IA para cada subbot.


Passei pelo mesmo problema, resolvi de outra forma.
No bloco de redirecionamento do serviço pro Desk
Criei um script que armazenar uma variavel chamado “contato” um json com todos os dados do usuario, mais ou menos assim:

function run() {
return {
“name”:"{{contact.name}}",
“email”:"{{contact.email}}",
“phoneNumber”:"{{contact.phoneNumber}}",
“city”:"{{contact.city}}",
“gender”:"{{contact.gender}}",
“cliente”:"{{contact.extras.cliente}}"
};
}

Ai no bloco de redirecionamento do serviço para Desk eu passo essa variavel {{contato}} na opção de enviar a mensagem.

E no bloco Inicio do Desk eu recebo essa variavel e atualizo as informações do usuario do Desk.

Achei melhor solução pq senão vc vai criar uma base de contato para cada bot e vai ficar mais espalhado as informações do contato.

Espero ter ajudado.


Thiago_Alberto_da_Si

@Artur_Lunardi_Di_Fan.

Por experiencia, não da para usar a opção “utilizar contexto de roteador” nos sub-bots que você terá atendimento humano.

Tanto não aparecerá os dados no DESK, quanto a regra de negócio ( redirecionar a times com base em algum parâmetro do contact.extras .?).

O que é uma pena porque realmente seria muito útil centralizar os dados do cliente em somente um BOT (no caso o Router).


Mateus_Mourao
Blipper

@Artur_Lunardi_Di_Fan @Olivia_Orthodontic_B
Realmente, o Desk utiliza o contato do subbot para iniciar o atendimento e o contexto do usuário salva todas as informações no contato do roteador.

Uma alternativa para esse cenário seria, antes de enviar para o bloco de atendimento, atualizar o contato do subbot com todas as informações do contato do roteador.

Você pode fazer isso através de uma ação HTTP para atualizar o contato

POST https://http.msging.net/commands

Headers:
Content-Type: application/json
Authorization: Key {AUTHORIZATION KEY DO SEU SUBBOT}

{  
  "id": "{{random.guid}}",
  "method": "set",
  "uri": "/contacts",
  "type": "application/vnd.lime.contact+json",
  "resource": {{contactSerialized}}
}

A variável {{contactSerialized}} já retorna todo o contato serializado, então já facilita esse processo! 🙂


Mateus_Mourao
Blipper

Ops, na verdade a variável do resource é {{contact.serialized}}, e não {{contactSerialized}}


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 7, 2020

oi eu gostaria de entender melhor como atualizar por requisição consegue me ajudar ?


Mateus_Mourao
Blipper

Opa, claro @Pedro_Lucas!

Basicamente você precisa adicionar uma ação Requisição HTTP a um bloco anterior ao bloco de atendimento humano, com os seguintes campos preenchidos:

.

  • Corpo
{  
  "id": "{{random.guid}}",
  "method": "set",
  "uri": "/contacts",
  "type": "application/vnd.lime.contact+json",
  "resource": {{contact.serialized}}
}

O que essa requisição faz é, como falamos acima no tópico, atualizar o contato do seu bot filho com as informações do contato do seu router, pois o Desk pega as informações do contato do bot filho.


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 9, 2020

nisso ele já atualiza tudo ???


Mateus_Mourao
Blipper

Sim! Se vc prestar atenção o que esse comando faz é setar o contato no bot filho (pois está utilizando a chave de autorização do bot filho) com as informações do contato atual (obtidas na variável {{contactSerialized}}).

Nisso o Desk pega o contato que acabou de ser atualizado! 😃


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 9, 2020

então eu venho atualizo tudo que quero, e depois faço a ação da api certo ?


Mateus_Mourao
Blipper

Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 16, 2020

ei bom dia, estou tentando, mas não está atualizando o contato, eu tenho que usar a chave do router, e fazer a requisição no bot filho né ?


Mateus_Mourao
Blipper

Não, a chave da requisição também precisa ser do bot filho. Recomendo ler de novo essa thread de dúvida pra vc conferir se tem mais algum valor trocado! 😉


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 16, 2020

eu mantenho ele no contexto roteador ???


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 16, 2020

por que já tentei usando o o código do bot filho, mar não foi


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • December 16, 2020

agora que vi você tem o sobrenome igual o meu kkj, tava tentando ver a lógica aqui mas não ta rodando mesmo assim


Localiza_Imoveis

Olá, bom dia,

Eu consegui redirecionar para equipe(time) de acordo com a escolha do usuário. E ainda verifica se existe atendente disponível na equipe em que foi cadastrado.


CommunityTeam
Blipper

Lembrando que o resource também deve estar com aspas duplas!


  • New Member
  • March 1, 2021

Desculpa ressuscitar esse tópico antigo, mas acredito que essa seja a solução que o tópico pediu inicialmente.

Ao rodar esse comando, que vai ser atualizado é o contato do Router.

{

  "id": "{{random.guid}}",
  "method": "set",
  "uri": "/contacts",
  "type": "application/vnd.lime.contact+json",
  "resource": "{{contact.serialized}}"

}

Solução:
Se nos sub bots, você utiliza a configuração “Utilizar contexto do roteador”, o identity que vem no {{contact.identity}} é contato do Router, por isso o comando acima atualiza os dados do contato no Router, para vocẽ atualizar o contato no sub bot é preciso utilizar o {{tunnel.identity}} no lugar.

{

  "id": "{{random.guid}",
  "method": "set",
  "uri": "/contacts",
  "type": "application/vnd.lime.contact+json",
  "resource": {
        "identity": "{{tunnel.identity}}",
        "name": "{{contact.name}}",
        "address": "{{contact.address}}",
        "city": "{{contact.city}}",
        "email": "{{contact.email}}",
        "phoneNumber": "{{contact.phoneNumber}}",
        "photoUri": "{{contact.photoUri}}",
        "cellPhoneNumber": "{{contact.cellPhoneNumber}}",
        "gender":"{{contact.gender}}",
        "group":"{{contact.group}}"
  }

}

@Pedro_Lucas faz o teste com esse exemplo que eu falei pra ver se funciona.

Obs: Pra eu não ter que escrever tudo de novo, pega a requisição HTTP que o Matheus falou lá em cima e só muda o body pra o que eu falei.


Pedro_Lucas
Forum|alt.badge.img+2
  • Specialist
  • March 1, 2021

migo no fim eu acabei resolvendo e nem voltei aqui JA DEU kkk mas é isso memu


Bia
  • Inspiring
  • March 3, 2021

Obrigada por compartilhar, @Bruno_Felix1!
Não precisa se desculpar. É super importante fomentar discussões que podem receber contribuições e a sua foi super válida 😊