Skip to main content

Acesso ao servidor e instancias

Para usar o componente euAtendo, é necessário definir o servidor URL e a GlobalAPI antes de utilizar as funções. Esses valores podem ser fixados no seu código, pois geralmente não mudam.Caso ainda não possua um servidor privado, você pode testar utilizando o servidor COMUNITÁRIO DISPONÍVEL:Abaixo segue um exemplo de como configurar esses valores no evento onShow do formulário em Delphi:
procedure TForm1.FormShow(Sender: TObject);
begin
  ApiEuAtendo1.VersionAPI := TVersionOption.V1; // Definir a versão da API
  ApiEuAtendo1.GlobalAPI := 'ASD3F21APIDEVS6A5SPAULOJRDEVFA1'; // Chave Global API
  ApiEuAtendo1.EvolutionApiURL := 'https://apiv1demo.apidevs.app'; // URL do servidor
end;
Cada instância representa um dispositivo conectado (por exemplo, o celular de um cliente). Pode ser utilizado para uma única empresa ou para diferentes empresas.Sempre que uma instância é criada, é obrigatório salvar o nome e a senha da instância para uso futuro. Dessa forma, sempre que o ERP for inicializado, os valores serão passados ao componente durante a sua inicialização.Antes de chamar a função CriarInstancia, é necessário passar dois parâmetros ao componente:
ApiEuAtendo1.NomeInstancia := edtNome.Text; // Nome da instância
ApiEuAtendo1.ChaveApi      := edtSenha.Text; // Chave API da instância (Opcional)
A criação de uma instância pode ser feita da seguinte forma:
var
  ErrorMsg: string;
begin
  if not ApiEuAtendo1.CriarInstancia(ErrorMsg) then
  begin
    ShowMessage('Erro ao criar instância: ' + ErrorMsg);
    Exit;
  end;
end;
Após chamar a função para criar a instância, é necessário implementar o evento que será disparado com as informações da instância recém-criada:
procedure TForm9.ApiEuAtendo1CriarInstancia(Sender: TObject;
  const InstanceResponse: TInstanceResponse);
begin
  edtNome.Text   := InstanceResponse.InstanceName; // Nome da instância
  edtStatus.Text := InstanceResponse.Status;       // Status da instância
  edtSenha.Text  := InstanceResponse.ApiKey;       // Chave API da instância

  // Configurar o componente com os dados da nova instância
  ApiEuAtendo1.ChaveApi      := InstanceResponse.ApiKey;
  ApiEuAtendo1.NomeInstancia := InstanceResponse.InstanceName;
end;
Assim, após a criação da instância, os dados retornados (nome, status, chave API) são armazenados e usados para futuras conexões.

Lendo o QRCode e Conectando à Instância

Antes de conectar a instância ao WhatsApp, você precisa gerar e escanear o QRCode. A função ExibirQRCode do componente ApiEuAtendo permite isso.Exemplo de como gerar o QRCode:
var
  ErrorMsg: string;
begin
  // Chamar a função para exibir o QRCode da instância
  if not ApiEuAtendo1.ExibirQRCode(ErrorMsg) then
  begin
    ShowMessage('Erro ao gerar QRCode: ' + ErrorMsg);
    Exit;
  end;
  
  ShowMessage('QRCode gerado com sucesso. Escaneie com o WhatsApp para conectar.');
end;
Agora, precisamos implementar o evento OnObterQrCode para capturar o QRCode gerado em formato Base64 e exibi-lo:
procedure TForm9.ApiEuAtendo1ObterQrCode(Sender: TObject;
  const Base64QRCode: string);
begin
  // Carregar a imagem do QRCode gerado a partir do Base64
  LoadBase64ToImage(Base64QRCode, Image1); // Exibe o QRCode no componente Image1
end;
A função LoadBase64ToImage converte a string Base64 do QRCode em uma imagem visual para que o usuário possa escanear o QRCode diretamente da interface do sistema.Após a leitura do QRCode, o dispositivo será vinculado à instância e ficará pronto para o envio e recebimento de mensagens.
Após a leitura do QRCode e conexão do dispositivo, você pode verificar o status da instância para garantir que está conectada e pronta para uso. Use a função StatusInstancia para isso.Exemplo de como verificar o status da instância após a leitura do QRCode:
var
  ErrorMsg: string;
begin
  // Chamar a função para obter o status da instância
  ApiEuAtendo1.StatusInstancia;
end;
Agora implemente o evento que será disparado quando a função de status for chamada no componente o Events OnStatusInstancia:
procedure TForm9.ApiEuAtendo1StatusInstancia(Sender: TObject;
  const InstanceStatus: TInstanceStatus);
begin
  // Exibir o nome da instância e o estado atual
  edtNome.Text   := InstanceStatus.InstanceName;
  edtStatus.Text := InstanceStatus.State; // Estados: open, closed, connecting

  if InstanceStatus.State = 'open' then
    ShowMessage('Instância conectada com sucesso.')
  else if InstanceStatus.State = 'closed' then
    ShowMessage('Instância desconectada. Escaneie o QRCode novamente.')
  else if InstanceStatus.State = 'connecting' then
    ShowMessage('A instância está tentando conectar. Por favor, aguarde.');
end;
Com isso, você pode verificar em tempo real o status da instância e agir conforme necessário. O estado pode ser um dos seguintes:
  • open: Instância conectada e pronta para uso.
  • closed: Instância desconectada, necessitando de nova conexão via QRCode.
  • connecting: A instância está em processo de conexão.

Metodos e funções

Para enviar uma mensagem de texto simples utilizando o componente euAtendo, você deve usar a função EnviarMensagemDeTexto. Certifique-se de que a instância está criada e conectada antes de realizar o envio.Exemplo de como enviar uma mensagem de texto:
var
	id:String;
	begin
	 edtIDMensagem.Text := ApiEuAtendo1.EnviarMensagemDeTexto(edtNumeroContato.Text,memoMensagemEnviar.Lines.text);
	 edtIDMensagem.Text := ApiEuAtendo1.EnviarMensagemDeTexto('559982385000', 'Estou testando o seu componente');
	end;
	
	//se o ID for retornado a mensagem foi enviada com sucesso, usar trye para tratamento de erros, com o ID
	// da mensagem voce pode solicitar o status de enviado, entregue e lida

Neste exemplo, substitua +5511999999999 pelo número do destinatário. Caso ocorra algum erro durante o envio, a variável ErrorMsg retornará a descrição do erro.
Para enviar uma mensagem com um arquivo anexo (por exemplo, uma imagem ou documento), utilize a função EnviarArquivo. O caminho do arquivo no sistema local deve ser fornecido.Exemplo de como enviar uma mensagem com um anexo:
var
  ErrorMsg: string;
begin
  // Enviar texto e arquivo para um número específico
   if FileOpenDialog1.Execute then
	  begin
		edtIDMensagem.Text := ApiEuAtendo1.EnviarMensagemDeMidia
		  (edtNumeroContato.Text, '', 'teste de envio de anexo',
		  FileOpenDialog1.FileName);
	  end;
end;
Neste exemplo, o arquivo arquivo.pdf será enviado junto com o texto. O caminho do arquivo deve ser completo e apontar para o local correto no sistema.
Para enviar um arquivo codificado em base64, utilize a função EnviarMensagemDeBase64. O código abaixo mostra como abrir um arquivo com FileOpenDialog, converter para base64 e enviá-lo via componente euAtendo.Exemplo de como enviar uma mensagem com anexo em base64:
var
  ErrorMsg: string;
begin
  // Abrir o diálogo para selecionar o arquivo
  if FileOpenDialog1.Execute then
  begin
    if FileOpenDialog1.FileName <> '' then
    begin
      // Limpar o Memo1 e adicionar o conteúdo do arquivo convertido para base64
      memo1.Lines.Clear;
      memo1.Lines.Add(FileToBase64(FileOpenDialog1.FileName));
      
      // Enviar o arquivo codificado em base64
      if not ApiEuAtendo1.EnviarMensagemDeBase64('+559982385000', 'Segue seu boleto', Memo1.Lines.Text, 'document', 'orcamento.pdf', ErrorMsg) then
      begin
        ShowMessage('Erro ao enviar anexo base64: ' + ErrorMsg);
      end
      else
      begin
        ShowMessage('Anexo base64 enviado com sucesso!');
      end;
    end;
  end;
end;
Neste exemplo:
  • O arquivo é selecionado através de FileOpenDialog.
  • O conteúdo do arquivo é convertido para base64 usando a função FileToBase64.
  • O anexo em base64 é enviado utilizando a função EnviarMensagemDeBase64.
  • O quarto parâmetro (‘document’) indica o tipo de anexo, e o quinto (‘orcamento.pdf’) é o nome que o destinatário verá.

Update your docs

Add content directly in your files with MDX syntax and React components. You can use any of our components, or even build your own.
I