Como criar uma API em qualquer aplicativo Android. Por exemplo, WhatsApp

Saudações! Minha tarefa foi elaborada: é necessário integrar mensageiros ao sistema de CRM, caso contrário, é difícil analisar o trabalho dos gerentes quando eles se comunicam com os clientes usando um telefone comum "funcional". E a primeira coisa a fazer foi conectar o WhatsApp, como um dos mensageiros instantâneos mais populares para o nosso público-alvo.

Análise da situação ...


Tudo o que parecia necessário era enviar e receber mensagens. E tantas armadilhas ...

1. API oficial


Não havia API oficial no lançamento então. Mas o Facebook conseguiu enviar um link para o formulário para conectar a API oficial, que está sendo testada.

2. Serviço de terceiros. Conexão via WEB do WhatsApp


Eu considerei a opção de um método "cinza", o uso de um serviço não oficial que envia mensagens pela interface WEB, é conectado pela digitalização de um código QR.

Mas essa é uma dependência da API de outra pessoa, a qualquer momento tudo pode cair e eu não queria transferir números de clientes para o serviço de alguém. E escrever sob a API de outro autor, e até reescrevê-lo quando você muda para outro serviço, também é um prazer.

Bem, você também precisa manter o telefone ligado (embora alguns serviços por uma taxa adicional tenham resolvido esse problema :)

3. modo manual


Plante uma pessoa, deixe copiar e colar mensagens para os clientes. Brincando como brincadeira, mas a partir dessa idéia nasceu uma solução!

Decisão


Envio de mensagem


imagemExiste um programa para automatizar ações para o Android, chamado Tasker , um dos primeiros programas desse tipo. Mas não entendi da primeira vez ... procurei análogos, me deparei com o programa Automagic . Nele, eventos, ações e ramificações são desenhados como um diagrama de blocos.

Fora do topo

E nele eu vim com uma solução, não precisamos de direitos de root. Acabou usando um método científico de puxão para desenhar um script de envio de mensagem, então chamarei o fluxo, para que cada algoritmo desenhado individualmente seja chamado neste programa. E agora vamos analisar o trabalho dele:

Captura de tela do fluxo de mensagens do WhatsApp
image

  1. A cada 5 segundos, um evento é gerado por um timer periódico e transmitido para o próximo bloco.
  2. HTTP Request , , ? PHP.
  3. JSON.
  4. , , .
  5. , , , , . , , , , :
  6. , WhatsApp'
  7. . Control UI. ( ), .

    , ,
    sleep(2000);  // 2    
     
    sle = 200;
    ch_c = 0;
    ch = false;
    is_sended = false;
     
    sleep(sle);
    ch = existsElementById("com.whatsapp:id/entry"); // ,      
    sleep(sle);
    if (ch == false) {
      ch = existsElementById("com.whatsapp:id/entry"); //  
      ch_c = ch_c + 1;
      sleep(1500);
    }
    
    if (ch == false) {
      ch = existsElementById("com.whatsapp:id/entry"); 
      ch_c = ch_c + 1;
      sleep(5500);
    }
    
    ch = existsElementById("com.whatsapp:id/entry");
    sleep(sle);
    setText2ById("com.whatsapp:id/entry",text); //  
    sleep(sle);
    
    clickById("com.whatsapp:id/send");  //   
    sleep(sle);
    back();
    sleep(sle);
    back();
    status = 2;
    
    if(ch == true) {  //   , ,    
      is_sended = true;
      status = 1;
    }
    

  8. Enviamos os resultados do envio de uma mensagem para o servidor.
  9. Voltamos à tela inicial.

Receber mensagens


Receber mensagens é muito mais fácil. Colocamos o evento em uma notificação do mensageiro. Assim que uma notificação chegar, marque-a como lida e envie-a para o servidor como está. Isso já analisa o destinatário e o texto.

Captura de tela do algoritmo de recebimento de mensagens


Prós, contras, aprimoramento e planos


O algoritmo executa a principal função de enviar uma mensagem perfeitamente. Como a interface WEB não é usada, pegar um banho no messenger é menos arriscado, como me parece. Aluguei um servidor virtual fraco, instalei o Android lá e transferi tudo.

Demora ~ 5 segundos para enviar uma mensagem para um novo contato. Para verificar a entrega e ler a mensagem, desenvolvi um fluxo separado, mas ele está no formato de rascunho e às vezes não funciona. Portanto, sobre ele mais tarde.

No momento, a função de receber mensagens de mídia (fotos, áudio, anexos) não está implementada, mas isso pode ser baixado do WhatsApp usando o botão Compartilhar mensagem no futuro.

Um pouco mais tarde, quero escrever um tronco SIP na parte superior da máquina virtual em que o messenger está sendo executado, através do qual será possível ligar pelo WhatsApp como pelo SIP ^. ^ O que pode economizar custos de comunicação.

Também quero tirar capturas de tela de avatares e enviá-las ao servidor para anexar uma miniatura a um contato no sistema de CRM.

Bem, em geral, o mais interessante: esse método de encapsulamento na API é adequado para quase qualquer aplicativo para Android :)

Tudo foi originalmente desenvolvido e lançado no Android 9, o root não está certo.

Source: https://habr.com/ru/post/undefined/


All Articles