So erstellen Sie eine API für eine beliebige Android-Anwendung. Zum Beispiel WhatsApp

Schöne Grüße! Meine Aufgabe wurde gezogen: Es ist notwendig, Messenger in das CRM-System zu integrieren, da es sonst schwierig ist, die Arbeit von Managern zu analysieren, wenn sie mit Kunden über ein gemeinsames „funktionierendes“ Telefon kommunizieren. Als erstes mussten Sie WhatsApp als einen der beliebtesten Instant Messenger für unsere Zielgruppe verbinden.

Analyse der Situation ...


Alles, was benötigt zu werden schien, war das Senden und Empfangen von Nachrichten. Und so viele Fallstricke ...

1. Offizielle API


Damals gab es keine offizielle API in der Version. Facebook hat es jedoch geschafft, einen Link zum Formular zu senden, um die offizielle API zu verbinden, die gerade getestet wird.

2. Drittanbieter-Service. Verbindung über WhatsApp WEB


Ich dachte, die Option einer "grauen" Methode, die Verwendung eines inoffiziellen Dienstes, der Nachrichten über die WEB-Schnittstelle sendet, wird durch Scannen eines QR-Codes verbunden.

Dies ist jedoch eine Abhängigkeit von der API eines anderen Benutzers. In jedem Moment kann alles abfallen, und ich wollte keine Kundennummern an den Dienst eines anderen Benutzers übertragen. Es ist auch ein Vergnügen, unter der API eines anderen Autors zu schreiben, die Sie neu schreiben müssen, wenn Sie zu einem anderen Dienst wechseln.

Nun, Sie müssen auch das Telefon eingeschaltet lassen (obwohl einige Dienste gegen eine zusätzliche Gebühr dieses Problem gelöst haben :)

3. Manueller Modus


Pflanzen Sie eine Person, lassen Sie Nachrichten an Kunden kopieren und einfügen. Scherz als Scherz, aber aus dieser Idee wurde eine Lösung geboren!

Entscheidung


Nachrichten senden


BildEs gibt ein solches Programm zur Automatisierung von Aktionen für Android namens Tasker , eines der ersten derartigen Programme. Aber ich habe es beim ersten Mal nicht verstanden ... Ich habe nach Analoga gesucht und bin auf das Automagic- Programm gestoßen . Darin werden Ereignisse, Aktionen und Verzweigungen als Blockdiagramm gezeichnet.

Off Top

Und darin habe ich eine Lösung gefunden, wir brauchen keine Root-Rechte. Es stellte sich heraus, dass mit einer wissenschaftlichen Poke-Methode ein Skript zum Senden von Nachrichten gezeichnet wurde. Dann werde ich den Stream aufrufen, sodass in diesem Programm jeder einzelne gezeichnete Algorithmus aufgerufen wird. Und jetzt werden wir seine Arbeit analysieren:

Screenshot des WhatsApp-Nachrichtenflusses
image

  1. Alle 5 Sekunden wird ein Ereignis von einem periodischen Zeitgeber erzeugt und an den nächsten Block übertragen.
  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. Wir senden die Ergebnisse des Sendens einer Nachricht an den Server.
  9. Wir kehren zum Startbildschirm zurück.

Nachrichten erhalten


Das Empfangen von Nachrichten ist viel einfacher. Wir setzen das Ereignis auf eine Benachrichtigung des Boten. Sobald eine Benachrichtigung eintrifft, markieren Sie sie als gelesen und senden Sie sie unverändert an den Server. Das analysiert bereits den Adressaten und den Text.

Screenshot des Nachrichtenempfangsalgorithmus


Vor-, Nachteile, Verfeinerung und Pläne


Der Algorithmus erfüllt die Hauptfunktion des perfekten Sendens einer Nachricht. Da die WEB-Schnittstelle nicht verwendet wird, ist es weniger riskant, ein Bad vom Messenger zu nehmen, wie es mir scheint. Ich habe einen schwachen virtuellen Server gemietet, dort Android installiert und alles übertragen.

Das Senden einer Nachricht an einen neuen Kontakt dauert ca. 5 Sekunden. Um die Zustellung zu überprüfen und die Nachricht zu lesen, habe ich einen separaten Stream entwickelt, der jedoch in Entwurfsform vorliegt und manchmal nicht funktioniert. Deshalb später über ihn.

Derzeit ist die Funktion zum Empfangen von Mediennachrichten (Fotos, Audio, Anhänge) nicht implementiert. Sie kann jedoch in Zukunft über die Schaltfläche zum Teilen von Nachrichten von WhatsApp heruntergeladen werden.

Wenig später möchte ich einen SIP-Trunk auf die virtuelle Maschine schreiben, auf der der Messenger ausgeführt wird, über die WhatsApp wie über SIP aufgerufen werden kann. Dies kann Kommunikationskosten sparen.

Ich möchte auch Screenshots von Avataren machen und diese an den Server senden, um eine Miniaturansicht an einen Kontakt im CRM-System anzuhängen.

Nun, im Allgemeinen das interessanteste: Diese Methode zum Umschließen der API eignet sich für fast jede Anwendung für Android :)

Alles wurde ursprünglich auf Android 9 entwickelt und gestartet, xiaomi mi 9 se, root ist nicht richtig.

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


All Articles