Skip to main content

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

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 a'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!


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.


@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