WhatsApp per API nutzen

Trotz aller Datenschutzbedenken ist WhatsApp nach wie des Deutschen liebste Messenger-App. Facebook hat neben der speziellen WhatsApp Business App auch eine offizielle Schnittstelle, die WhatsApp Business API geschaffen, um auch für Unternehmen interessanter zu werden. Will man programmatisch WhatsApp-Nachrichten aus seiner Webanwendung heraus versenden, bieten sich daneben aber auch andere Wege an.


Der offizielle Weg geht über die WhatsApp Business API: Wenn man diese direkt nutzen will, muss man sich bei einem der offiziellen Anbieter im Partnernetzwerk registrieren. Hier hat sich beispielsweise MessageBird bewährt. Ohne auf die genauen Details einzugehen, zeige ich hier die wichtigsten Take-Aways auf:

  • Man benötigt als Voraussetzung eine valide deutsche Handynummer, die mindestens mit einem WhatsApp-Datentarif verbunden ist.
  • Der Nachrichtenversand unterliegt strengen Einschränkungen: Der Versand an fremde Kontakte ist nur über sog. Nachrichtenvorlagen möglich, die man manuell einreichen und genehmigen lassen muss. Antwortet der Kontakt, kann man in einem Zeitfenster von 24 Stunden beliebige Textnachrichten an diesen Kontakt per API senden.
  • Man benötigt für jeden Kontakt einen expliziten Opt-In, das man selbst implementieren muss.
  • Pro Nachrichtenversand werden Gebühren vom Drittanbieter fällig.

Der eigentliche API-Aufruf im Beispiel von MessageBird (unter Zuhilfenahme von _curl aus stringhelper) gestaltet sich als relativ einfach:

e228243e9ffff5f83e71190ee38b10aa

Steht ein eigener Server sowie ein (nicht aktiv genutztes) Handy zur Verfügung, gibt es auch eine andere Variante, das Gewünschte zu Erreichen und die o.g. Einschränkungen zu umgehen. Hier macht man sich die Funktionalität von WhatsApp Web zu Nutze. Für diesen Zweck bieten sich die folgenden beiden Libraries an.

WebWhatsapp-Wrapper existiert schon relativ lange und basiert auch Python und Selenium. Nachrichten senden geht damit beispielsweise wie folgt:

452590a6d20c1fa9276ff14ed28c4ce5

Das deutlich schlankere Baileys basiert hingegen auf TypeScript und WebSockets. Ein Nachrichtenversand erfolgt dabei exemplarisch über folgenden Code:

e0187d6da1f800b1597420345d13b432

Beide Libraries verfahren nachdemselben Prinzip: Die Web-App wird ferngesteuert, eine Authentifizierung ist nur einmal nötig (die Session wird beim nächsten Aufruf wiederhergestellt). Einschränkungen gibt es dabei (im Vergleich zum normalen Nachrichtenversand) nicht.

Zurück