Integracao WhatsApp Funcionalidades

De Tek-System Wiki
Revisão de 16h28min de 28 de dezembro de 2022 por Marlon (discussão | contribs)
Ir para navegação Ir para pesquisar

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 a partir do usuário


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: Identificação do número de telefone gerado no registro do telefone.
  • 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: Vetor de parâmetros variantes. 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

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, 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.
  • Link: Link do arquivo. Deve ser respeitado o tópico de Informação importante.
  • DescricaoArquivo: Nome do arquivo que esta sendo enviado.
  • 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, 'Nome do Documento', 'Document', 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.