A maneira mais fácil e intuitiva para empresas e desenvolvedores começarem a desenvolver a API Whatsapp Cloud .
Envie uma mensagem de texto com formato livre para um destinatário
Envie uma mensagem de localização geográfica para um destinatário
Enviar um documento a um destinatário
Envie uma imagem para um destinatário
Envie um vídeo para um destinatário
Envie um áudio para um destinatário
Envie uma lista de botões ao destinatário (o número máximo de botões permitidos é 3)
Envie uma lista de botões de opção para um destinatário (o número máximo de botões de opção permitidos é 10)
Enviar um contato para um destinatário
Gere um código QR que pode ser escaneado por um destinatário
Marcar uma mensagem como lida
Analisar mensagens recebidas
O que é API de nuvem do WhatsApp? Assista a este vídeo de 60 segundos durante o lançamento da API Whatsapp Cloud.
O que é esse pacote? Este pacote é um wrapper NodeJS não oficial e de código aberto em torno da API oficial do WhatsApp Cloud.
Por que este pacote é útil? Porque permite que você use a API WhatsApp Cloud sem ter que escrever muito código.
Posso usar este pacote em meu projeto? Sim, você pode usá-lo como quiser.
Posso contribuir para este pacote? Sim, você pode contribuir com este pacote criando uma solicitação pull.
Para instalar este pacote em seu projeto:
Usando NPM:
npm instalar whatsappcloudapi_wrapper
Usando Fio:
fio adicionar whatsappcloudapi_wrapper
Primeiro importe o pacote da seguinte forma:
const WhatsappCloudAPI = require('whatsappcloudapi_wrapper');
Em seguida, inicialize a classe da seguinte maneira:
const Whatsapp = new WhatsappCloudAPI({accessToken: 'Seu token de acesso aqui',senderPhoneNumberId: 'Seu número de telefone do remetente id aqui',WABA_ID: 'Sua conta Whatsapp Business id aqui',});
aguarde Whatsapp.sendText({message: 'Olá mundo',recipientPhone: 'seu número de telefone do destinatário aqui',});
> Quick Question: - How does a recipient phone number look like? > Quick Answer: - A recipient phone number is the international phone number of the recipient without the '+' prefix. - For example, where a Kenyan phone number is '+254712345678' we would send the message to a recipientPhone 254712345678. - For a phone number +15550253483 we would send the message to a recipientPhone 15550253483. - For an US phone number +1 555-555-5555 we would send the message to a recipientPhone 5555555555. Makes sense?
aguarde Whatsapp.sendLocation({recipientPhone: 'seu número de telefone do destinatário aqui',latitude: 'sua latitude aqui',longitude: 'sua longitude aqui',name: 'seu nome de localização aqui',endereço: 'sua localização rua/endereço aqui ',});
// Envie um documento hospedado em uma URL públicaawait Whatsapp.sendDocument({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Invoice #123.',url: 'http://pdfkit.org/demo/out .pdf',});//OU// Envie um documento que esteja em seu sistema de arquivos local (o arquivo será carregado no servidor do WhatsApp antes de ser enviado).await Whatsapp.sendDocument({recipientPhone: 'seu número de telefone do destinatário aqui',file_path: './output.pdf',caption: 'Invoice #123',});
// Envie uma imagem hospedada em uma URL públicaawait Whatsapp.sendImage({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Test',file_path: 'https://example.com/image.png',} );// OU // Envie uma imagem que esteja em seu sistema de arquivos local (o arquivo será carregado no servidor do WhatsApp antes de ser enviado).await Whatsapp.sendImage({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Teste', caminho_do_arquivo: './XEIDF3D5FTBDF1.png',});
// Envie um vídeo hospedado em uma URL públicaaguarde Whatsapp.sendVideo({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Test',url: 'https://test-videos.co.uk/vids/ bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4',});// OU// Envie um vídeo que esteja em seu sistema de arquivos local (o arquivo será carregado no servidor WhatsApp antes de ser enviado).await Whatsapp.sendVideo({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Test',file_path: './last.mp4',}) ;
// Envie um áudio hospedado em uma URL públicaawait Whatsapp.sendAudio({recipientPhone: 'seu número de telefone do destinatário aqui',url: 'https://example.com/audio.mp3',});// OU/ / Envie um áudio que esteja em seu sistema de arquivos local (o arquivo será carregado no servidor WhatsApp antes de ser enviado).await Whatsapp.sendAudio({recipientPhone: 'seu número de telefone do destinatário aqui',caption: 'Teste',file_path: './last.mp3',});
aguarde Whatsapp.sendSimpleButtons({recipientPhone: 'seu número de telefone do destinatário aqui',message: `Como posso ajudá-lo hoje`,listOfButtons: [{title: 'Veja alguns produtos',id: 'see_categories',},{title: 'Enviar minha fatura',id: 'print_invoice',},{title: 'Fale com um humano',id: 'talk_to_human',},],});
aguarde Whatsapp.sendRadioButtons({recipientPhone: 'seu número de telefone do destinatário aqui',headerText: 'Black Friday Top 10 Products',bodyText:'Daggie tem alguns produtos excelentes preparados para você com base em seu histórico de compras anterior.nPor favor, selecione um dos produtos abaixo.',footerText: 'Aprovado por Daggie Blanqx',listOfSections: [{title: 'Top 3 Fashion',rows: [{title: 'Camiseta preta LVX', descrição: 'KES 2999.00nLVX é uma camiseta de algodão quente', id: 'SKU12_black_lvx_tshirt',},{título: 'moletom roxo', descrição: 'KES 1999.00nmoletom roxo com logotipo Logrocket ',id:'SKU13_purple_hoodie',},{título: 'Air Jordan 1',descrição:'KES 10999.00nNós nos movemos para onde outros não. Quer voar?',id: 'SKU14_air_jordan_1',},],},{title: 'Top 3 Gadgets',rows: [{title: 'Apple Watch ',descrição:'KES 75999.00nO tempo é finito, aproveite cada segundo dele',id: 'SKU15_apple_watch',},{título: 'Surface Pro',descrição: `KES 59999.00nNão apenas navegue na web, navegue no mundo`,id: 'SKU16_surface_pro',},{título: 'Xiaomi Beats Speaker',descrição : `KES 45699nEstá na forma como o seu coração bate, a forma como o Xiaomi bate.`,id: 'SKU17_xiaomi_beats_speaker',},],},{title: 'Top 3 Kitchen',rows: [{title: 'Portable Hand Mixer',description: `KES7899nDesafie seus doces misturando sua comida favorita uniformemente.`,id: 'SKU18_portable_hand_mixer ',},{title: 'Fabricante de waffles antiaderente',descrição: `KES7899nÓtimos waffles são feitos com os melhores ingredientes.`,id: 'SKU19_non_stick_waffle_maker',},{título: '6 conjuntos de colheres de cozinha',descrição: `KES7899nSegure bem a sua felicidade.`,id: 'SKU20_6_set_cooking_spoons',},] ,},{title: '1 escolha aleatória',rows: [{title: 'Nivea Icy Soap', descrição: `KES899nMantenha-se hidratado e revigorado. Nutra a sua pele.`,id: 'SKU21_nivea_icy_soap',},],},],});
aguarde Whatsapp.sendContact({recipientPhone: destinatárioPhone,contact_profile: {endereços: [{rua: '1 Hacker Way',cidade: 'Menlo Park',estado: 'CA',zip: '94025',país: 'Estados Unidos' ,código_país: 'nós',tipo: 'CASA',},{rua: '200 Jefferson Dr',cidade: 'Menlo Park',estado: 'CA',zip: '94025',país: 'Estados Unidos',country_code: 'us',type: 'WORK',},],aniversário: '2002-02-14',e-mails: [{email: ' [email protected]',type: 'WORK',},{email: '[email protected]',type: 'HOME',},],nome: {formatted_name: 'Daggie Blanqx', primeiro_nome: 'Daggie', último_nome: 'Blanqx', nome do meio: 'M.', sufixo: 'Sr', prefixo: 'Sw Engr',},org: {empresa: 'WhatsApp', departamento: 'Design',título: 'Gerente',},telefones: [{telefone: '+1 (940) 555-1234',type: 'HOME',wa_id: '16505551234', // opcional},{phone: '+1 (650) 555-1234',type: 'WORK', // opcionalwa_id: '16505551234', // opcional},],urls: [{url: 'https://www.facebook.com',tipo: 'TRABALHO',},{url: 'https://www.whatsapp.com',type: 'HOME',},],},});
let result = await Whatsapp.createQRCodeMessage({message: `Sua mensagem de código QR aqui. Sou uma mensagem escondida em um código QR.`,imageType: 'png' || 'svg',});let urlOfImage = result.data .qr_image_url;
Veja na imagem abaixo como exibir o código QR:
await Whatsapp.markMessageAsRead({message_id: 'o id da sua mensagem aqui',});// Um erro não repetível será lançado se a mensagem não for encontrada ou uma mensagem que já foi lida.
O ID do botão deve ter entre 1 e 256 caracteres.
O título do botão deve ter entre 1 e 20 caracteres.
A lista de itens é limitada a 10.
A descrição dos itens da lista deve ter entre 1 e 72 caracteres.
O título da lista deve ter entre 1 e 24 caracteres.
O id da lista deve ter entre 1 e 200 caracteres.
// req.body é o corpo da solicitação que executa ping no webhook. Cargas inválidas gerarão um erro e você deverá responder com status HTTP 5** ou 4**, não 200.// lembre-se de responder com status HTTP 200 no final de uma solicitação de entrada bem-sucedida.let data = Whatsapp.parseMessage( req.body);/*data.isNotificationMessage será verdadeiro se for uma mensagem de um cliente, será falso caso contrário.data.isNotificationMessage será verdadeiro se for uma notificação de um Meta (por exemplo, uma notificação de status de entrega/leitura de mensagem), será falsa, caso contrário.data gerará um erro se o corpo da solicitação do webhook não for válido ou não for do Meta.*/
if (dados?.isMessage) {let incomingMessage = data.message;let destinatárioPhone = incomingMessage.from.phone; // extrai o número de telefone do customerlet destinatárioName = incomingMessage.from.name; // extrai o nome do customerlet typeOfMsg = incomingMessage.type; // extrai o tipo de messagelet message_id = incomingMessage.message_id; // extrai a mensagem idif (typeOfMsg === 'simple_button_message') {let button_id = incomingMessage.button_reply.id;if (button_id === 'book_appointment') {// O cliente clicou em um botão simples cujo id é 'book_appointment' '.// Você pode responder a eles com uma ação de saída, por exemplo, uma mensagem de texto aguardando Whatsapp.sendText({mensagem: `Olá cliente, Você clicou no botão 'marcar consulta'`,recipientPhone: 'seu número de telefone do destinatário aqui',});};};
if (dados?.isMessage) {let incomingMessage = data.message;let destinatárioPhone = incomingMessage.from.phone; // extrai o número de telefone do customerlet destinatárioName = incomingMessage.from.name; // extrai o nome do customerlet typeOfMsg = incomingMessage.type; // extrai o tipo de messagelet message_id = incomingMessage.message_id; // extrai a mensagem idif (typeOfMsg === 'radio_button_message') {let selectionId = incomingMessage.list_reply.id;if (selectionId === 'morning_session') {// O cliente selecionou o botão de opção cujo id é 'morning_session' .// Você pode responder a eles com uma ação de saída, por exemplo, uma mensagem de texto aguardando Whatsapp.sendText({message: `Você selecionou a opção 'morning_session'`,recipientPhone: 'seu número de telefone do destinatário aqui'});};};
Se você tiver alguma dúvida, pergunte nos fóruns de discussão do GitHub
Se você tiver alguma sugestão ou feedback, abra um problema ou crie uma solicitação pull.
Este pacote está em desenvolvimento ativo.
Isso significa que novos recursos são adicionados regularmente.
Caso seu recurso favorito esteja faltando, você sempre pode retroceder uma versão ou criar uma solicitação pull que será revisada e mesclada na próxima versão.
Obrigado pela sua contribuição.
Boa codificação!
Siga-me no Twitter: @daggieblanqx
Também estou no LinkedIn, onde você pode me marcar nos projetos incríveis que você construiu usando este pacote: @daggieblanqx
Postagens do blog: Logrocket/@Daggieblanqx