Cómo hacer una API en cualquier aplicación de Android. Por ejemplo, WhatsApp

¡Saludos! Mi tarea fue dibujada: es necesario integrar mensajeros en el sistema CRM, de lo contrario es difícil analizar el trabajo de los gerentes cuando se comunican con los clientes usando un teléfono común "en funcionamiento". Y lo primero que hizo fue conectar WhatsApp, como uno de los mensajeros instantáneos más populares para nuestro público objetivo.

Análisis de la situación ...


Todo lo que parecía ser necesario era enviar y recibir mensajes. Y tantas trampas ...

1. API oficial


No había API oficial en el lanzamiento entonces. Pero Facebook logró enviar un enlace al formulario para conectar la API oficial, que se está probando.

2. Servicio de terceros. Conexión a través de la WEB de WhatsApp


Consideré que la opción de un método "gris", el uso de un servicio no oficial que envía mensajes a través de la interfaz WEB, se conecta escaneando un código QR.

Pero esta es una dependencia de la API de otra persona, en cualquier momento todo puede caerse, y no quería transferir números de clientes al servicio de otra persona. Y escribir bajo la API del autor de otra persona, que tendrá que volver a escribir cuando se mude a otro servicio, también es un placer.

Bueno, también debes mantener el teléfono encendido (aunque algunos servicios por una tarifa adicional resolvieron este problema :)

3. Modo manual


Plante a una persona, permita copiar y pegar mensajes a los clientes. Bromeaba como una broma, ¡pero de esta idea nació una solución!

Decisión


Envío de mensajes


imagenExiste un programa para automatizar acciones para Android, llamado Tasker , uno de los primeros programas de este tipo. Pero no lo entendí la primera vez ... Busqué análogos, me encontré con el programa Automagic . En él, los eventos, acciones y ramas se dibujan como un diagrama de bloques.

Por encima

Y en él se me ocurrió una solución, no necesitamos derechos de root. Resultó usar un método de empuje científico para dibujar un script de envío de mensajes, luego llamaré a la secuencia, por lo que cada algoritmo dibujado individualmente se llama en este programa. Y ahora analizaremos su trabajo:

Captura de pantalla del flujo de mensajes de WhatsApp
image

  1. Cada 5 segundos, un temporizador periódico genera un evento y se transmite al siguiente bloque.
  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 los resultados de enviar un mensaje al servidor.
  9. Regresamos a la pantalla de inicio.

Recibir mensajes


Recibir mensajes es mucho más fácil. Ponemos el evento en una notificación del mensajero. Tan pronto como llegue una notificación, márquela como leída y envíela al servidor como está. Eso ya analiza el destinatario y el texto.

Captura de pantalla del algoritmo de recepción de mensajes


Pros, contras, refinamiento y planes.


El algoritmo realiza la función principal de enviar un mensaje perfectamente. Como no se usa la interfaz WEB, tomar un baño del messenger es menos arriesgado, según me parece. Alquilé un servidor virtual débil, instalé Android allí y transferí todo.

Tarda unos 5 segundos en enviar un mensaje a un nuevo contacto. Para verificar la entrega y leer el mensaje, desarrollé una secuencia separada, pero está en forma de borrador y, a veces, no funciona. Por lo tanto, sobre él más tarde.

Por el momento, la función de recibir mensajes multimedia (fotos, audio, archivos adjuntos) no está implementada, pero se puede descargar desde WhatsApp utilizando el botón de compartir mensaje en el futuro.

Un poco más tarde, quiero escribir un enlace troncal SIP en la parte superior de la máquina virtual donde se está ejecutando el messenger, a través del cual será posible llamar a través de WhatsApp como a través de SIP ^. ^ Lo que puede ahorrar costos de comunicación.

También quiero tomar capturas de pantalla de avatares y enviarlos al servidor para adjuntar una miniatura a un contacto en el sistema CRM.

Bueno, en general, lo más interesante: este método de ajuste en la API es adecuado para casi cualquier aplicación para Android :)

Todo se desarrolló y lanzó originalmente en Android 9, xiaomi mi 9 se, la raíz no es correcta.

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


All Articles