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