Compartilhar Contato WhatsApp

É possível compartilhar um contato com o usuário?

Tenho uma solução que o usuário envia a localização e baseada nela retorno dados de um vendedor (via API) que atua naquela região.

Quero compartilhar os dados do vendedor em forma de um Card de Contato no WhatsApp? É possível?

Fala Gustavo! Seja bem vindo ao Fórum!

Cara, aquele card de contato do WhatsApp não é possível. Os conteúdos que você consegue enviar estão aqui: https://content.blip.ai/

Mas uma sugestão que te dou é, envie o link pro whatsapp do seu vendedor… exemplo: https://wa.me/5511987654321

2 Curtidas

Boa tarde, @Gustavo_Gonzaga. Seja muito bem vindo ao forum!

É possivel enviar um contato e eu vou te ensinar como, vamos lá!

Vou assumir que sua api retorne algo como na variavel salesman:

{
    "name": "Gabriel Santos",
    "phone": "5573991963737"
}

Primeiro você precisa buscar o Whatsapp Id desse contato (vai ser basicamente o número completo, entretanto pode ou não conter o 9 digito). Para buscar esse id você pode enviar um Command usando a ação de Processar Comando dentro do builder, monte o seguinte command e receba a resposta na variavel accountResponse:

{
  "id": "{{$guid}}",
  "to": "postmaster@wa.gw.msging.net",
  "method": "get",
  "uri": "lime://wa.gw.msging.net/accounts/+{{salesman@phone}}"
}

Obs.: número deve possui um + na frente e ddi e ddd, por exemplo: +5573991963737

Sua ação deve ficar parecida com essa aqui:

Agora vamos buscar o WhatsApp Id e criar o nosso payload de contato, esse payload você pode encontrar com mais detalhes na propria documentação do facebook, para isso vamos usar a ação Executar Script:

Variaveis de entrada: accountResponse e salesman.
Variavel de retorno: contactCard

Script:

const createContactCard = (name, phone = null, wa_id = null) {
    const payload = {
        type: 'contacts',
        contacts: [
            {
                name: {
                    formatted_name: name,
                    first_name: name
                },
                phones: []
            }
        ]
    };
    if (phone) {
        payload.contacts[0].phones.push({ phone });
    }
    if (wa_id) {
        payload.contacts[0].phones.push({ wa_id });
    }
    return payload;
}

const run = (account_response, salesman) => {
    account_response = JSON.parse(account_response);
    salesman = JSON.parse(salesman);
    // Fallback to normal phone number if the contact doesn't have whatsapp 
    if (account_response.status == 'failure') {
        return createContactCard(salesman.name, salesman.phone);
    }
    const identity = account_response.resource.alternativeAccount;
    return createContactCard(salesman.name, null, identity.split('@')[0]);
};

Sua ação deve ficar parecida com isso:

Agora para enviar a mensagem basta enviarmos um Conteudo Dinamico com o type de application/json e valor a nossa variavel {{contactCard}}:

O conteudo do card em questão deve ficar parecido com isso:

Caso não saiba onde fica a opção de conteudo dinamico basta clicar nos 3 pontinhos nos tipos de mensagens que ele é a ultima opção

image

Isso já vai resolver seu problema!

4 Curtidas

Top demais @Gabriel.Santos! Obrigado por compartilhar seu conhecimento.
Não sabia que seria possível dessa forma e achei sensacional!

2 Curtidas

@Gabriel.Santos muito bom, entendi o funcionamento. O que ocorre para mim é que para qualquer número sempre retorna o Card para Convidar p/ WhatsApp, mesmo o usuário existindo para aquele número no WhatsApp.

Estou passando o +55(ddd)(numero) correto.

Pode ser alguma falta de suporte para o BR?

Mesmo implementando a solução dada continuou assim? Pois para o número ficar com a opção de conversar, enviar o wa_id e os campos de name é o suficiente.

1 Curtida

Este tópico foi fechado automaticamente 7 dias depois da úlima resposta. Novas respostas não são mais permitidas.