Telegram - Problema na identificação do contato contact.source

Bom dia pessoal,

Estou com um caso inusitado, Solicitei para uma pessoa instalar o Telegram e testar um chatbot .

No inicio do fluxo eu identifico se é telegram ou não.

Percebi que nesse caso as variaveis estão vindo em branco.
contact.source
contact.identity

Mas detalhe que já tenho vários usuarios de telegram que funcionam normalmente.

Outra coisa que achei estranho, é que quando entro no builder no menu contatos, essas pessoas (que geram variaveis em branco) não aparecem, é como se elas não tivessem usado o chat.

Já viram isso acontecer alguma vez ?

1 curtida

Olá @Fabio_Dantas, bom dia!

Fiz um teste há pouco em um projeto que tenho ativado no Telegram e tive os seguintes resultados:
image

Neste primeiro momento, vou orientar a refazer o processo de ativação do chatbot no canal Telegram, a partir deste tutorial “Como publicar seu bot no canal Telegram

Após refazer o processo e retestar, caso permaneça o problema, a segunda iniciativa será abrir um chamado no Suporte Técnico em Take Blip, para investigar especificamente sua aplicação para definir a solução.

Na resposta seguinte, vou compartilhar também alguns pontos que podem ser úteis para te ajudarmos a solucionar.

1 curtida

Em geral, costumo utilizar um scrip para definir / identificar o canal de origem do usuário.

:point_right: Basicamente, o que esse script faz é identificar o domínio do canal (FQDN) e, a partir dele, definir o nome do canal. A variável de entrada é tunnel.originator (se não me engano, pode usar também contact.identity) e a variável de saída é canal.

  • Ah, e por que isso assim? Eu defino os nomes dos canais, conforme estamos acostumados. Por exemplo, a contact.source para o canal Blip Chat retorna 0mn.io. Com este script, vou ter uma variável canal = Blip Chat

:point_right: Fiz um teste há pouco, com um bot ativo no Telegram, e verifiquei que as informações de contatos foram salvas e gerou um contato na parte de Contatos (no meu caso, no bot Router). Dessa forma, se:

  • seu projeto usa Router + Principal (e, talvez, Subbots) e o que está ativo no Telegram é o “Router”, recomendo verificar no módulo de Contatos do Router se o contato foi gerado e, se tiver salvando alguma informação no contato (usando a ação “Definir contato”), se estes dados estão aparecendo corretamente. Ainda, se a função “Usar contexto do roteador” estiver HABILITADO (o que recomendo quando se desenvolve com essa usando Router), a sua base de contatos estará no Router. Caso contrário, estará no Builder onde os dados de contatos são salvos.

  • seu projeto é um Builder, apenas, então o contato (e os dados salvos) devem estar no módulo de Contatos deste mesmo bot Builder.


🚩 **Script** para Identificação do Canal (usando tunnel.originator / contact.identity)

/* [ ! ] Attention¹: This script identifies each channel (eg Blip Chat, WhatsApp, Messenger, Telegram, etc.) 
the user / client is talking to his Smart Contact (Chatbot).
/* [ ! ] Attention²: To configure this script, the following steps are required:
(0) activate the "Use Router Context" functionality,
(1) add an "Execute script" action,
(2) add the "tunnel.originator" or "contact.identity system variable as a input,
(3) add the code in "Script" and
(4) save the processing / return in the "channel" variable (or equivalent) */

/* [ ! ] API Reference: https://docs.blip.ai/#channels */

function run(tunnelOriginator) { 
    var channel;
    
    contactDomain = tunnelOriginator.split("@")[1];

    switch (contactDomain) {
        
        case '0mn.io':
            channel = "Blip Chat";
            return channel;

        case 'tangram.com.br':
            channel = "SMS";
            return channel;

         case 'take.io':
            channel = "SMS";
            return channel;

        case 'messenger.gw.msging.net':
            channel = "Messenger";
            return channel;
        
        case 'instagram.gw.msging.net':
            channel = "Instagram";
            return channel;

        case 'wa.gw.msging.net':
            channel = "WhatsApp";
            return channel;

        case 'abs.gw.msging.net':
            channel = "Microsoft Teams";
            return channel;

        case 'businessmessages.gw.msging.net':
            channel = "GBM";
            return channel;

        case 'skype.gw.msging.net':
            channel = "Skype";
            return channel;

        case 'telegram.gw.msging.net':
            channel = "Telegram";
            return channel;

        case 'workplace.gw.msging.net':
            channel = 'Workplace';
            return channel;

        case 'mailgun.gw.msging.net':
            channel = "Email";
            return channel;   

        default:
            channel = "Other";
            return channel;
    }
}
digite ou cole o código aqui
1 curtida

Ola @Romulo_Rafael ,

O problema é que ja tenho diversos usuarios utilizando pelo Telegram e funcionam normalmente, inclusive aparecem nos contatos e tudo.

Mas em dois novos usuarios do Telegram, não esta funcionando, e não gera nada nos contatos nem no log, isso que achei estranho.

Se puder testa criar um usuario novo no telegram e veja se funciona normal no seu bot.

Detalhe meu bot é bem simples, não tem router

1 curtida

@Fabio_Dantas

Fiz um teste aqui com novo usuário e acompanhando os logs através da extensão Beholder e, de fato, ocorreu o que relatou aqui no fórum. Estou procurando qual pode ser a causa e, identificando, compartilho com você.

Do outro lado, vou pedir para seguir com abertura de uma demanda no Suporte. Assim, o time verifica tanto a nível de Plataforma, quanto do canal Telegram o que pode estar causando isso:

1 curtida

Legal @Romulo_Rafael !!

O problema é que minha conta é gratuita não tenho acesso a abertura de tickets.

Bom dia pessoal,

Alguma novidade sobre esse problema ?

Olá @Fabio_Dantas

Retomando este post e sobre o problema das variáveis {{contact.source}} e {{contact.identity}}.

  • Obtive retorno de que o problema com a variável {{contact.identity}} está solucionando, com as informações do ID + domínio do canal de origem do usuário sendo exibido, mesmo para novos contatos.

    • Se seu projeto estiver usando Router + Subbots, você pode utilizar a variável {{tunnel.originator}}, pois ela será equivalente a {{contat.identity}}
  • Quanto à variável {{contact.source}}, no teste realizado, ele retornou valor “em branco”. Assim sinalizei essa situação que ainda está pendente.

    • Como solução de contorno, caso precise identificar e salva o canal de origem do usuário para utilização no fluxo / projeto, pode-se utilizar o script compartilhando mais acima, que determina o canal de acordo com o domínio do canal (valor que vem logo após o @ do identificador do usuário)

:point_right: Reproduzindo o cenário, de um novo usuário no Telegram, obtivemos os seguintes resultados:

  • Na base de contatos (no meu caso, no Roteador), consta o identificador do usuário

  • A thread da conversa bot <-> usuário é exibida e vinculada ao usuário do exemplo da interação

  • No Telegram, no próprio fluxo, inclui as variáveis {{contact.identity}} e {{tunnel.originator}}, de forma a ver o valor dela na primeira interação deste novo usuário
    image

:speech_balloon: Para “debuggar” as interações e comportamentos, recomendo utilizar uma extensão denominada Beholder que nos ajuda ver o valor das variáveis de contexto, de contato, além de logs que são gerados e os estados que o usuário está passando.

Bom dia Romulo tudo bem ?

Estou testando aqui, uma coisa que acho estranho é que quando clico lá em contatos a conversa nem aparece, quando é com um contato do telegram novo.

Sobre a ferramenta de Beholder, ela nao aparece aqui pra mim.

Boa tarde Romulo, o canal já consigo pegar tranquilo, o problema é pegar o ID, você tem alguma previsão da solução desse problema?

Bom dia pessoal,

A Plataforma continua com esse problema, alguma previsão para a solução ?

1 curtida

ei, @Fabio_Dantas1 :slight_smile: sugi que você abra um ticket no nosso suporte para que tenha um tendimento mais personalizado para a sua questão. O link para acesso é esse aqui :slight_smile:

Boa tarde @Larissa_Vitoriano meu plano ainda é o gratuito, então não tenho acesso ao suporte.