Comment créer une API sur n'importe quelle application Android. Par exemple, WhatsApp

Salutations! Ma tâche a été dessinée: il est nécessaire d'intégrer des messagers dans le système CRM, sinon il est difficile d'analyser le travail des managers lorsqu'ils communiquent avec les clients à l'aide d'un seul téléphone «fonctionnel». Et la première chose à faire a été de connecter WhatsApp, l'un des messagers instantanés les plus populaires pour notre public cible.

Analyse de la situation ...


Tout ce qui semblait nécessaire était d'envoyer et de recevoir des messages. Et tant de pièges ...

1. API officielle


Il n'y avait alors aucune API officielle dans la version. Mais Facebook a réussi à envoyer un lien vers le formulaire pour connecter l'API officielle, qui est en cours de test.

2. Service tiers. Connexion via WhatsApp WEB


J'ai envisagé l'option d'une méthode "grise", l'utilisation d'un service non officiel qui envoie des messages via l'interface WEB, se connecte en scannant un code QR.

Mais cela dépend de l'API de quelqu'un d'autre, à tout moment tout peut tomber, et je ne voulais pas transférer les numéros de client au service de quelqu'un d'autre. Et écrire sous l'API de l'auteur de quelqu'un d'autre, que vous devrez réécrire lorsque vous passerez à un autre service, est également un plaisir.

Eh bien, vous devez également garder le téléphone allumé (bien que certains services moyennant des frais supplémentaires aient résolu ce problème :)

3. Mode manuel


Plantez une personne, laissez les messages copier-coller aux clients. Blague comme une blague, mais de cette idée est née une solution!

Décision


Envoi de message


imageIl existe un tel programme pour automatiser les actions pour Android, appelé Tasker , l'un des premiers programmes de ce type. Mais je ne l'ai pas compris la première fois ... J'ai cherché des analogues, je suis tombé sur le programme Automagic . Dans celui-ci, les événements, actions et branches sont dessinés sous forme de diagramme.

Hors sujet

Et j'ai trouvé une solution, nous n'avons pas besoin de droits root. Il s'est avéré en utilisant une méthode de poke scientifique pour dessiner un script d'envoi de message, puis j'appellerai le flux, donc chaque algorithme dessiné individuel est appelé dans ce programme. Et maintenant, nous allons analyser son travail:

Capture d'écran du flux de messages WhatsApp
image

  1. Toutes les 5 secondes, un événement est généré par une minuterie périodique et transmis au bloc suivant.
  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. Nous envoyons les résultats de l'envoi d'un message au serveur.
  9. Nous revenons à l'écran d'accueil.

Recevoir des messages


La réception de messages est beaucoup plus facile. Nous avons mis l'événement sur une notification du messager. Dès qu'une notification arrive, marquez-la comme lue et envoyez-la telle quelle au serveur. Cela analyse déjà le destinataire et le texte.

Capture d'écran de l'algorithme de réception des messages


Avantages, inconvénients, raffinement et plans


L'algorithme remplit parfaitement la fonction principale d'envoi d'un message. Étant donné que l'interface WEB n'est pas utilisée, prendre un bain au messager est moins risqué, comme il me semble. J'ai loué un serveur virtuel faible, j'y ai installé Android et j'ai tout transféré.

Il faut environ 5 secondes pour envoyer un message à un nouveau contact. Pour vérifier la livraison et lire le message, j'ai développé un flux séparé, mais il est sous forme de brouillon et parfois ne fonctionne pas. Par conséquent, à propos de lui plus tard.

Pour le moment, la fonction de réception de messages multimédias (photos, audio, pièces jointes) n'est pas implémentée, mais elle peut être téléchargée à partir de WhatsApp à l'aide du bouton de partage de messages à l'avenir.

Un peu plus tard, je veux écrire un tronc SIP au-dessus de la machine virtuelle sur laquelle le messager s'exécute, à travers lequel il sera possible d'appeler via WhatsApp comme via SIP ^. ^ Ce qui peut réduire les coûts de communication.

Je veux également prendre des captures d'écran d'avatars et les envoyer au serveur pour joindre une miniature à un contact dans le système CRM.

Eh bien, en général, le plus intéressant: cette méthode d'encapsulation dans l'API convient à presque toutes les applications pour Android :)

Tout a été initialement développé et lancé sur Android 9, xiaomi mi 9 se, root n'est pas correct.

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


All Articles