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?

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á, @Bruno

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.

1 curtida

@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).

2 curtidas

@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! :slight_smile:

1 curtida

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

2 curtidas

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

1 curtida

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.

2 curtidas

nisso ele já atualiza tudo ???

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! :smiley:

1 curtida

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

1 curtida

isso, @Pedro_Lucas!

1 curtida

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é ?

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! :wink:

eu mantenho ele no contexto roteador ???

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

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

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.

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