Wie wir Kannel-APIs ins 21. Jahrhundert bringen

Back to all posts Zurück zur Übersicht Tilbage til oversigten
Wie wir Kannel-APIs ins 21. Jahrhundert bringen

Vor kurzem gab es einen großen Zustrom neuer Kunden, die das Open-Source-Kannel-SMS-Gateway nutzen. Es wurde schnell klar, dass wir einen API-Endpunkt entwerfen mussten, der speziell für Kannel optimiert ist. Dieser Beitrag befasst sich mit dem „Was“, dem „Warum“ und dem „Wie“, die unsere API von Ihrer typischen Kannel-Integration unterscheiden.

Was

Ein kurzer Blick auf Kannels Geschichte

Kannel ist eines der beliebtesten Open-Source-SMS-Gateways. Die Entwicklung geht auf das Jahr 1999 zurück, zufällig im selben Jahr, in dem unser Unternehmen ONLINECITY.IO gegründet wurde.

Kannel-Commits bisher nach Jahr und Mon

kannel_commits_by_year_month

Einer der Gründe für seine Beliebtheit ist die Fähigkeit, dem Entwickler ein Gateway zwischen komplizierten und völlig unterschiedlichen APIs bereitzustellen, die von Mobilfunknetzen wie Nokia CIMD, CMG UCP / EMI und SMPPC verwendet werden, kombiniert mit einer super einfachen HTTP-Schnittstelle.

Natürlich summiert sich all diese Komplexität, und daher besteht Kannel aus fast 300K Zeilen (meistens) monolithischen C-Codes.

kannel_lines_of_code

Warum

SMPP passt nicht für alle

SMPP ist ein nahezu allgegenwärtiges Protokoll zum Senden von (Massen-)SMS. Die beliebteste Version wurde 1999 vom (jetzt aufgelösten) SMS-Forum angegeben.

Wir hätten SMPP implementieren und Kannel eine Verbindung zu einem SMPP-Endpunkt herstellen können, wie es so viele unserer Konkurrenten tun. Hierbei gibt es jedoch einige Probleme – hauptsächlich im Zusammenhang mit Sicherheit und Skalierbarkeit.

SMPP ist ein kompaktes Binärprotokoll, das sich hervorragend für Bandbreite und Leistung eignet. Es werden jedoch auch ein oder mehrere TCP-Sockets ständig mit dem SMSC verbunden, was sich negativ auf Skalierbarkeit, Lastausgleich und Failover auswirkt.

Schlimmer noch, SMPP bietet keine Sicherheit auf Transportebene wie SSL/TLS und sendet alle Ihre Daten, einschließlich Anmeldeinformationen, als Klartext. Daher muss es mit Software von Drittanbietern wie Stunnel, VPN usw. überlagert werden.

Was benötigt wird, ist eine Lösung, die im 21. Jahrhundert und nicht im 20. Jahrhundert entwickelt wurde.

Stattdessen HTTPS

Was wir verwenden wollten, ist HTTP. HTTP ist einfach mit vorhandenen Tools zu skalieren, mit SSL/TLS verschlüsselt und es ist ziemlich gut, Verbindungen zu steuern – egal wie viele Kunden wir haben.

Kannel unterstützt HTTP über seinen „generischen“ SMSC-Typ. Die Konfiguration ist jedoch kompliziert und, sobald Sie sich mit den Grenzfällen befasst haben, im Vergleich zu den anderen SMSC-Typen ebenfalls eingeschränkt.

Der Eureka-Moment kam, als wir feststellten, dass Kannel auch einen Systemtyp namens „Kannel“ hat, der zum Verketten von Kannel-Servern gedacht ist. Es basiert auf HTTP(S) und unterstützt alle Funktionen, die der Entwickler von Kannel erwartet. Daher passt es sehr gut zu uns.

Was blieb, war die Implementierung einer HTTP(S)-basierten API, die mit allen Macken des HTTP-Parsings von Kannel kompatibel war, was lange Nächte bedeutete, die damit verbracht wurden, Kannels Quellcode zu lesen und Komponententests zu schreiben (weil Sie sich wirklich nicht auf Kannels Dokumentation verlassen können, wenn Sie sicher sein möchten).

Wie

Da unsere API mit Kannel selbst kompatibel ist, können wir die Konfiguration kurz halten.

Konfigurationsbeispiel:

Konfiguration erkärt

Diesen stellen das SMSC Protokoll und den Systemtyp ein.

Die SMSC-ID dient dem Nachverfolgungszweck oder wenn Sie mehrere Anbieter in Kannel verwenden. An diesem Port wartet Kannel auf eingehende DLRs, die im Allgemeinen nur verwendet werden, wenn Ihre endgültigen DLR-Callback-URLs nicht über das Internet zugänglich sind. Weil unser Gateway DLRs direkt an die URL liefert, die Sie Kannel zur Verfügung stellen. Weitere Informationen zum Empfang von DLR-/Statusberichten finden Sie in unserer Dokumentation.

Die Sende-URL enthält die zu verwendende Nachrichtenklasse, die hier als „Bulk“ angegeben wird. Außerdem müssen Sie „smsc-username“ / „smsc-password“ eingeben. Die Werte für diese sind nicht Ihre Anmeldedaten für gatewayapi.com/app/, sondern eine Reihe von „Credentials“, d.h. Anmeldeinformationen, die Sie unter „Credentials (deprecated)“, „Add Credentials“ generieren müssen.

Das war’s. Wenn Sie Fragen oder Kommentare zu unseren APIs haben, nutzen Sie bitte die Live-Chat-Funktion und lassen Sie es uns wissen.

global-sms-gatewayapi

Globales SMS-Gateway

GatewayAPI hat einige der niedrigsten Preise in den meisten Ländern der Welt, kombiniert mit einer intuitiven Benutzeroberfläche, erstklassigem Support und einer soliden Betriebszeit von durchschnittlich 99,99%. Wenn Sie noch kein Konto haben, können Sie hier in weniger als zwei Minuten ein kostenloses Konto erstellen: Gehen Sie zu GatewayAPI oder wenden Sie sich an sales@gatewayapi.com

Wenn Sie ein Konzept oder Unternehmen haben, das von der Verwendung der SMS-Kommunikation profitieren könnte, dann zögern Sie nicht, uns zu kontaktieren. Wir helfen Ihnen beim Einstieg.