Como usar a variável criada com a chamada de API: "Create a context variable"?


Olá. Gostaria de saber se alguém sabe como se faz para usar/chamar uma variável criada por meio da chamada de API “Create a context variable”. Pois eu uso a chamada para criar uma variável de contexto mas não consigo usar ela dentro do flow, nem para ser escrita para o usuário nem para tomar decisões.


Eu tentei chamar de algumas maneiras, duas delas não resultou em nada, que foram: {{variavel}}, tentei {{context.variavel}} e a única que resultou em algo foi a {{contexts.variavel}}, que chegou a travar o bot, pois usei ela como condição de saída e o bot deixou de responder.


Bom, se alguém souber a maneira certa de chamar essa variável criada diretamente pela API eu agradeço.


Obrigado


10 comentários

Olá, Murilo. Como vai?


No link abaixo explica como buscar variável de contexto via requisição HTTP:

https://docs.blip.ai/?http#get-a-specific-context-variable


Veja se te ajuda ☺

Olá, eu já havia utilizado essa requisição para verificar se a a variável tinha mesmo o valor que eu precisava.

E ela mostra que ela foi criada e tem o valor que eu preciso.

Porém, o meu problema é que não sei como chama-lá dentro do bot, pois colocando apenas {{variavel}}, não funciona.

Mas você está fazendo essa requisição dentro do bot? Porque assim você terá o valor na variável que você definir no próprio builder e aí conseguirá usar no formato {{variavel}}


image

Não, estou fazendo em uma ferramenta de integração de processos, o integromat, as chamadas são externas.

Os testes que estou realizando são basicamente identificar em que subbot o usuário se encontra,

escrever uma variável de contexto para identificar que tipo de ação quero fazer e por fim mover o usuário para um determinado bloco

E nesse bloco em que o usuário foi movido, a continuidade do flow dependeria da variável já escrita na ferramenta de integração.

Então o que eu realmente preciso saber é a maneira certa de se chamar a variável de contexto criada por meio da chamada HTTP feita externamente,

para executar uma ação dentro do builder.

Eu consigo fazer algo similar com o update de um contato, com a criação de uma informação extra do usuário nos “extras”

porém essa é uma solução que não queria usar, pois ela iria mostrar essa variável no Desk para os atendente no card do usuário.

Entendi, Murilo. Vou fazer umas pesquisas e te falo.

Ei, Murilo.


Fiz umas pesquisas e, infelizmente, não encontrei uma solução direta.


Mas uma forma de fazer seria:

Fazer uma requisição HTTP na entrada do bloco em que o usuário foi movido para resgatar a variável. Algo tipo:


    {

"id": "3da135e5-7743-48d6-adad-d74ac38ba6ca",
"to": "[email protected]",
"method": "set",
"uri": "/contexts/{identity}/{variableName}",
"type": "{type}",
"resource": "{resource}"

}

O retorno será algo parecido com o código abaixo:


    {
"type": "text/plain",
**"resource": "true",**
"method": "get",
"status": "success",
"id": "XPTO",
"from": "[email protected]/#az-iris4",
"to": "{botIdentity}",
"metadata": {
"#command.uri": "lime://{botIdentity}/contexts/{identity}/{variableName}",
"uber-trace-id": "XPTO"
}
}

onde “resource” é o valor da variável. Aí na sequência você faz um script para pegar somente o valor da variável. Algo tipo:


    function run(response) {
try {
objResponse = JSON.parse(response);
variable = objResponse ['resource'];
return typeof variable != 'undefined' ? variable : "null"
}
catch(e){
return "null";
}
}

A variável de retorno desse script vai ter o valor da sua variável de contexto.

Olá, muito obrigado pela resposta!

Eu tinha chegado em uma solução parecida, eu estava usando “processar comando” com a uri :/contexts/{{contact.identity}}/contexto, a mesma ideia de como você fez com a requisição.

Eu achei que não era uma boa solução, pois imaginei que existia uma maneira de chamar diretamente a variável.


Bom então podemos considerar um bug? Talvez devêssemos mover esse tópico para bugs?


Mais uma vez obrigado pela resposta!

Reputação 5

Olá @Murilo_Rodrigues_Pad,


Realizei alguns testes aqui e está tudo funcionando como esperado 👨‍💻


Fique atento quando preencher os valores do endpoint Create a context variable, o body da requisição é:


{
"id": "3da135e5-7743-48d6-adad-d74ac38ba6ca",
"to": "[email protected]",
"method": "set",
"uri": "/contexts/{identity}/{variableName}",
"type": "{type}",
"resource": "{resource}"
}

Substitua todos os campos marcados com {}, veja abaixo um exemplo de adição de uma variável de contexto de:


Nome da variável: variavel

Tipo de variável: texto

Conteúdo da variável: “Este é meu conteúdo desta variável”.

Identidade do usuário de contexto: [email protected]


O body da requisição para criar a variável de contexto utilizando estes dados são:


{
"id": "3da135e5-7743-48d6-adad-d74ac38ba6ca",
"to": "[email protected]",
"method": "set",
"uri": "/contexts/[email protected]/variavel",
"type": "text/plain",
"resource": "Este é meu conteúdo desta variável"
}

Para acessar e imprimir o conteúdo da variável, basta utilizar {{variavel}} .


Obs: A variável só será visível para o usuário de ID [email protected], uma vez que a variável está conectada apenas no contexto dele.

Olá, eu fiz exatamente como você está falando, mas usar a variável {{variavel}} (dentro do builder para imprimir ou usar em decisões) não funciona nos meus teste. A única maneira que funcionou foi como a Flavia falou, que é utilizando uma requisição HTTP ou “processar comando” dentro do builder para ler o valor da variável.


Lembrando que todas as requests que faço estão respondendo como 200 e quando uso a requisição HTTP a variável de contexto está associada ao contato que utilizei para criá-la.

Reputação 5

@Murilo_Rodrigues_Pad,


O exemplo no fluxo abaixo executa a tarefa que você deseja, para executar siga as instruções abaixo:




  1. Importe o fluxo para seu bot.

  2. Adicione a Key do seu bot nas VARIÁVEIS DE CONFIGURAÇÃO. No modelo abaixo:

    2020-03-04 16_50_22-BLiP Portal

    botteste.json (8,1,KB)

Comente