[Resolvido] 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

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 :relaxed:

2 Curtidas

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

1 Curtida

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.

1 Curtida

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": "postmaster@msging.net",
  "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": "postmaster@msging.net/#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.

2 Curtidas

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 :man_technologist:t5:

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

{
  "id": "3da135e5-7743-48d6-adad-d74ac38ba6ca",
  "to": "postmaster@msging.net",
  "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: ad2cd98e-c114-40f0-91f8-00ee622e8a83.infobottest@0mn.io

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

{
    "id": "3da135e5-7743-48d6-adad-d74ac38ba6ca",
    "to": "postmaster@msging.net",
    "method": "set",
    "uri": "/contexts/ad2cd98e-c114-40f0-91f8-00ee622e8a83.infobottest@0mn.io/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 ad2cd98e-c114-40f0-91f8-00ee622e8a83.infobottest@0mn.io, 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)