Integracao WhatsApp Funcionalidades
Necessário realizar previamente as configurações, conforme Cadastro e Configurações
Gerar Token de Acesso
Tokens de acesso são utilizados para realizar os envios das mensagens aos clientes.
Requisição
function BuscarToken(Client_ID, Client_Secret, Token: String): String;
- Cliente ID: É a ID do aplicativo.
- Cliente Secrete: É a chave secreta do aplicativo.
- Token: É o Token permanente gerado.
Enviar Mensagem Texto
Nessa opção de envio tratará apenas de conteúdo texto, consumindo um template do tipo Texto.
Requisição
procedure EnviarMensagemWhatsApp(IDRemetente, Token, Telefone, Template, Linguagem: String; Dados: OleVariant );
- IDRemente: Ao cadastrar o telefone da empresa é gerado uma ID essa ID que será usada para identificar quem é a empresa que esta enviado a mensagem.
- Token: Aconselhado usar o token que foi gerado através da função BuscarToken e não o token permanente.
- Telefone: Telefone para qual pretende enviar a mensagem 55 + DDD + Numero de Telefone.
- Template: Nome do template cadastrado na meta que será usado para a mensagem que deseja enviar.
- Linguagem: Linguagem na qual o template foi gerado. Ao cadastrar um template deve informar a linguagem do mesmo.
- Dados: É um vetor de parâmetros. Caso não possuir parâmetros enviar ‘ ‘.
Enviar Mensagem de Mídia
Opção criada para envio de Mídia através de links da internet. O Link também pode ser enviado usando a opção EnviarMensagemWhatsApp, a diferença é que nesse formato será enviado somente o link obrigando o recebedor a abrir para visualizar seu conteúdo. Utilizando a opção EnviarMensagemWhatsAppLink caso o arquivo seja uma imagem a mesma já será carregada, se for um vídeo o mesmo já fica com opção de player e etc...
Para usar essa opção o template tem de ser do tipo mídia.
Informação
- Para enviar imagens, a mesma tem de ser no formato jpg ou png. Exemplo: https://mobimg.b-cdn.net/pic/v2/gallery/preview/gory-pejzazh-priroda-46792.jpg
- Para enviar vídeos, o mesmo tem de ser no formato mp4 ou 3gp. Link do youtube por exemplo não são enviados usando a opção EnviarMensagemWhatsAppLink, somente a opção de EnviarMensagemWhatsApp.
Nessa opção, além do link do arquivo enviado pode também enviar as mesmas informações da opção de EnviarMensagemWhatsApp, que são mensagens fixas e mensagens com parâmetros.
Requisição
procedure EnviarMensagemWhatsAppLink(IDRemetente, Token, Telefone, Template, Linguagem, Link, TipoArquivo: String; Dados: OleVariant);
- IDRemente: Ao cadastrar o telefone da empresa é gerado uma ID essa ID que será usada para identificar quem é a empresa que esta enviado a mensagem.
- Token: Aconselhado usar o token que foi gerado através da função BuscarToken e não o token permanente.
- Telefone: Telefone para qual pretende enviar a mensagem 55 + DDD + Numero de Telefone.
- Template: Nome do template cadastrado na meta que será usado para a mensagem que deseja enviar.
- Linguagem: Linguagem na qual o template foi gerado. Ao cadastrar um template deve informar a linguagem do mesmo.
- Link: Link do arquivo. Deve ser respeitado o tópico de Informação importante.
- TipoArquivo: Se o arquivo enviado no link é do tipo “Image”, “vídeo”, “document”
- Dados: É um vetor de parâmetros. Caso não possuir parâmetros enviar ‘ ‘.
Upload de Arquivo
Para conseguir enviar um arquivo de mídia do tipo, imagem, vídeo, documento, áudio entre outros que esteja por exemplo saldo seu HD, Pen drive entre outros é necessário realizar o upload do arquivo para a Meta e com um código de ID retornado realizar o envio da mídia para os destinatários.
Requisição
function UploadArquivoWhatsApp(IDRemetente, Token, FileName, TipoArquivo: String;): String;
- IDRemente: Ao cadastrar o telefone da empresa é gerado uma ID essa ID que será usada para identificar quem é a empresa que esta enviado a mensagem.
- Token: Aconselhado usar o token que foi gerado através da função BuscarToken e não o token permanente.
- FileName: Caminho e nome do arquivo que deseja realizar o upload. Exemplo : C:\tek-System\temp\imagem.jpg.
- TipoArquivo: Se o arquivo enviado no FileName é do tipo “Image” (image/jpeg), “vídeo”(video/mp4), “document”(application/pdf)
Ao executar essa opção será retornado uma ID. Essa ID será usada para enviar o arquivo para os destinatários através da funcionalidade EnviarMensagemWhatsAppAnexo.
Deletar Arquivo
Quando realiza um Upload de um arquivo o mesmo fica disponível por 30 dias na Meta. Após esses 30 dias o mesmo e deletado de forma automática.
Quanto mais arquivos forem realizados Upload e mantido na Meta, atingindo o limite máximo, vai ficando lento o processo e enviar novos arquivos (Não foi especificado qual o limite máximo), para evitar esse problema, foi liberado opção de deletar o arquivo enviado.
Deletando os arquivos a empresa consegue gerenciar o processo.
Requisição
procedure DeletarArquivoWhatsApp(ID, Token: String);
- ID: Id gerada na função UploadArquivoWhatsApp
- Token: Aconselhado usar o token que foi gerado através da função BuscarToken e não o token permanente.
Enviar Mensagem com Anexo
Nessa opção, além do arquivo de Mídia enviado pode também enviar as mesmas informações da opção de EnviarMensagemWhatsApp, que são mensagens fixas e mensagens com parâmetros
Opção criada para enviar arquivos na qual foi realizado UploadArquivoWhatsApp.
Formatos aceitos:
p/ Documentos: text/plain, application/pdf, application/vnd.ms-powerpoint, application/msword, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet p/ Imagem: image/jpeg e image/png p/ Audio: audio/aac, audio/mp4, audio/mpeg, audio/amr p/ Videos: video/mp4 e video/3gp
O tamanho máximo de arquivo de mídia:
Audio : 16MB Document : 100MB Image : 5MB Video: 16MB
Requisição
procedure EnviarMensagemWhatsAppAnexo(IDRemetente, Token, Telefone, Template, Linguagem, ID, DescricaoArquivo, TipoArquivo: String; Dados: OleVariant );
- IDRemente: Ao cadastrar o telefone da empresa é gerado uma ID essa ID que será usada para identificar quem é a empresa que esta enviado a mensagem.
- Token: Aconselhado usar o token que foi gerado através da função BuscarToken e não o token permanente.
- Telefone: Telefone para qual pretende enviar a mensagem 55 + DDD + Numero de Telefone.
- Template: Nome do template cadastrado na meta que será usado para a mensagem que deseja enviar.
- Linguagem: Linguagem na qual o template foi gerado. Ao cadastrar um template deve informar a linguagem do mesmo.
- ID: Id gerada na função UploadArquivoWhatsApp
- DescricaoArquivo: Nome do arquivo que esta sendo enviado.
- TipoArquivo: Se o arquivo enviado é do tipo “Image”, “video”, “document”
- Dados: É um vetor de parâmetros. Caso não possuir parâmetros enviar ‘ ‘.
Exemplo de Uso Prático no Sistema
Ao gatilho ao cadastrar ou trocar status de um pedido de venda, será enviado mensagem ao cliente
unit uDocumento_Fatura_AfterUpdServer; uses TEK_INTEGRACAO_WHATSAPP; Const Client_ID = 'ID do App'; Client_Secret = 'Cliente Secreto do APP'; IDRemetente = 'Informar ID do Remetente correspondente ao Telefone cadastrado no App'; Token_Permanente = 'Infomar Token Permanente'; Template = 'Nome do Template cadastrado na Meta'; Linguagem = 'Liguagem do Template. Exemplo: pt_br'; Link = 'Link de uma imagem da internet'; procedure Main; var Telefone, NumeroTelefone, TokenAcesso, ID, Documento, Valor, DescricaoArquivo, CaminhoArquivo: String; begin if (UpdateKind = ukInsert) and (ClassOwner = 'TSMCadPedidoVenda') and (NewValue('STATUS_DOCFAT') <> OldValue('STATUS_DOCFAT')) then begin Documento := IntToStr(Value('CODIGO_DOCFAT')); NovoStatus := Value('DESCRICAO_STATUS'); CaminhoArquivo := 'C:\Tek-System\Temp\nome do arquio.pdf'; DescricaoArquivo := ExtractFileName(CaminhoArquivo); // Pegar o número de celular NumeroTelefone := ExecuteScalar( 'select first 1 PESSOA_TELEFONE.TELEFONE_PESSOA_TEL TELEFONE '+#13+ 'from PESSOA_TELEFONE '+#13+ 'where PESSOA_TELEFONE.PESSOA_PESSOA_TEL = ' + IntToStr(Value('CLIENTE_DOCFAT')) + ' and '+#13+ ' PESSOA_TELEFONE.TIPOTELEFONE_PESSOA_TEL = ‘C‘ '+#13+ 'order by PESSOA_TELEFONE.TELEFONEPADRAO_PESSOA_TEL desc'); Telefone := '55'+ SoNumero(NumeroTelefone); if Length(Telefone) < 12 then Exit; try TokenAcesso:= BuscarToken(Client_ID, Client_Secret, Token_Permanente); {Opção 1: Template sem paramentros} // EnviarMensagemWhatsApp(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, VarArrayOf([‘ ‘])); {Opção 2: Template com um paramentro} // EnviarMensagemWhatsApp(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, VarArrayOf([Documento])); {Opção 3: Template com um ou mais paramentros } // EnviarMensagemWhatsApp(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, VarArrayOf([Documento, NovoStatus])); {Opção 4: Enviando link com templates sem paramentros } // EnviarMensagemWhatsAppLink(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, Link, 'image', VarArrayOf([‘ ‘])); {Opção 5: Enviando link com templates com um ou mais paramentros } // EnviarMensagemWhatsAppLink(IDRemetente, Token, Telefone, Template, Linguagem, Link, 'image', VarArrayOf([Documento, NovoStatus])); {Opção 6: Realizando o Upload de um arquivo, Enviando o arquivo com templates sem paramentros e Deletando arquivo enviado } // ID := UploadArquivoWhatsApp(IDRemetente, TokenAcesso, 'C:\Tek-System\Temp\nome do arquio.jpg', 'image/jpeg'); // EnviarMensagemWhatsAppAnexo(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, ID, DescricaoArquivo, 'image', VarArrayOf([‘ ‘])); // DeletarArquivoWhatsApp(ID, Token); {Opção 7: Realizando o Upload de um arquivo, Enviando o arquivo com templates com um ou mais paramentros e Deletando arquivo enviado } // ID := UploadArquivoWhatsApp(IDRemetente, TokenAcesso, CaminhoArquivo, 'application/pdf'); // EnviarMensagemWhatsAppAnexo(IDRemetente, TokenAcesso, Telefone, Template, Linguagem, ID, DescricaoArquivo, 'document', VarArrayOf([Documento, NovoStatus])); // DeletarArquivoWhatsApp(ID, Token); except on Ex: Exception do EnviarMensagemInterna('Nome do Usuario', 'Erro ao enviar Mensagem via WhatsApp', 'O erro ocorreu ao enviar o Pedido: '+ Documento + #13+ Ex.Message); // EnviarEMail('email do usuario','Erro ao enviar Mensagem via WhatsApp', 'O erro ocorreu ao enviar o Pedido: '+ Documento + #13+ Ex.Message); end; end; end; end.