Bidirektionale SMS-Kommunikation mit Wolfram|Alpha

Zurück zur Übersicht
Bidirektionale SMS-Kommunikation mit Wolfram|Alpha

In diesem Blog-Beitrag stellen wir ein kleines API-Projekt vor, das es uns ermöglicht, eine Frage per SMS zu empfangen, Wolfram Alpha um eine Antwort zu bitten und dann per SMS zu antworten. Wolfram Alpha ist ein Online-Dienst, der Abfragen direkt beantwortet, indem er die Antwort aus externen Daten berechnet.

Im Folgenden finden Sie eine kurze Anleitung, wie Sie das System selbst einrichten können. Dabei werden die allgemeinen Schritte erläutert, um Ihnen ein besseres Verständnis für die verwendete Technologie zu vermitteln. Wenn Sie es ausprobieren möchten und ein dänisches Mobilfunkabonnement haben, senden Sie eine Nachricht mit dem Keyword wolfram gefolgt von Ihrer Frage an 1204. Mit anderen Worten: Senden Sie z. B. „Wolfram Temperatur Kopenhagen“ an 1204.

Wir können die Verfügbarkeit dieser Wolfram Alpha-Demonstration nicht garantieren, da die Anzahl der API-Anfragen etc. begrenzt ist. Sie können jedoch anhand des nachstehenden Leitfadens ganz einfach Ihre eigene Konfiguration erstellen.

Beachten Sie, dass Wolfram Alpha über Ihre Anfrage nachdenken muss, sodass es manchmal eine Weile dauern kann, bis eine Rückmeldung kommt.

Voraussetzungen

Für dieses Setup benötigen Sie eine Wolfram Alpha APP ID. Sie können diese kostenlos erhalten, indem Sie ein Konto bei Wolfram Alpha erstellen.

Außerdem benötigen Sie ein GatewayAPI-Konto, das Sie hier kostenlos erstellen können. Um eine SMS zu erhalten, benötigen Sie jedoch einen Shortcode und/oder ein Keyword, an das der Nutzer die SMS sendet. Shortcodes und Keywords werden speziell an Sie vermietet, sodass wir, wenn wir eine SMS auf dem spezifischen Shortcode mit dem spezifischen Keyword erhalten, wissen, wohin wir die SMS-Nachricht liefern müssen.

Sie können entweder ein Keyword für einen gemeinsam genutzten Shortcode mieten, z. B. 1204, oder Sie können einen ganzen Shortcode mieten, z. B. 4560575797. Ihr Konto ist außerdem zu Testzwecken mit einem Keyword vorkonfiguriert.

Kontaktieren Sie uns im Live-Chat, wenn Sie einen Shortcode und/oder ein Keyword benötigen.

Sag Hallo zu ngrok

Um SMS-Nachrichten an Ihren Dienst zu übermitteln, muss Ihr Service/Webhook im Internet verfügbar sein, damit wir ihn kontaktieren können, wenn eine neue SMS eingeht.

Normalerweise bedeutet dies, dass Sie Ihren Code an einem bestimmten Ort auf einem Webserver bereitstellen (deploy) müssen, wodurch Tests plötzlich eine Ewigkeit dauern. Mit dem kostenlosen Dienst ngrok ist dies jedoch sehr einfach und schnell möglich. Kurz gesagt, ngrok bietet Ihnen einen HTTP(S)-Endpunkt im Web, bei dem alle Anfragen an Ihren lokalen Server weitergeleitet werden, was die Entwicklung von Webhooks erheblich erleichtert.

In diesem Beispiel werden wir auch Flask verwenden, ein auf Python basierendes Mikro-Framework, das für diese Aufgabe sehr gut geeignet ist. Ich hoffe, dass die folgenden Code-Beispiele auch für Nicht-Python-Entwickler leicht zu verstehen sind. Wie immer, wenn Sie Fragen haben, kontaktieren Sie uns bitte über den Live-Chat oder support@gatewayapi.com.

Laden Sie ngrok herunter und entpacken Sie es.

Installieren Sie deps mit:

Öffnen Sie wolfram.py in Ihrem bevorzugten Editor und fügen Sie Folgendes ein:

Führen Sie in der Befehlszeile, in der Sie ngrok entpacken, Folgendes aus: ./ngrok http 5000. Sie erhalten dann eine https-URL ngrok.io.

Führen Sie Folgendes aus: env FLASK_APP = wolfram.py bottle run. Dies startet einen Flask-Server auf Localhost-Port 5000. Ngrok leitet Anfragen an Flask weiter. Bestätigen Sie dies, indem Sie die URL ngrok.io in Ihrem Webbrowser aufrufen. Sie sollten eine Seite erhalten, auf der steht: „Schick mir eine SMS“.

Empfangen von SMS-Nachrichten

Die ngrok-URL, die Sie zuvor erhalten haben, muss als Webhook konfiguriert werden, und dem Webhook muss ein Keyword zugewiesen werden, damit wir wissen, dass wir ihn kontaktieren müssen, wenn Sie eine SMS erhalten.

Gehen Sie zu Ihrem GatewayAPI Dashboard, gehen Sie zu Einstellungen -> Webhooks, fügen Sie einen neuen Webhook hinzu und geben Sie die ngrok-URL in „Web hook URL“ ein und klicken Sie auf „Speichern“. Öffnen Sie dann den Reiter „Keyword“ und weisen Sie dem Webhook ein Keyword zu. GatewayAPI kontaktiert jetzt Ihren Webhook, wenn eine SMS bei Ihrem Keyword auf Ihrem Shortcode eingeht.

Jetzt müssen wir die Flask-API um eine Route erweitern, die die SMS-Nachrichten empfängt.

Jetzt erhalten wir eine Variable namens „query“, die alles enthält, was der Nutzer nach dem Keyword selbst eingegeben hat. Dies wird unser Input für Wolfram Alpha sein.

Anfragen an Wolfram Alpha senden

Die Anfrage des Nutzers wird nun von Wolfram Alpha bearbeitet und die Antworten werden formatiert. Ersetzen Sie „APP-ID-GOES-HERE“ durch Ihre APP-ID von Wolfram Alpha.

Antwort senden

Jetzt muss nur noch die Antwort von Wolfram Alpha per SMS an den Nutzer zurückgeschickt werden. Das Versenden einer SMS über GatewayAPI ist einfach. Auf unserem Dashboard finden Sie vorkonfigurierte Codebeispiele für die meisten Codesprachen. Wählen Sie das Python-Beispiel und fügen Sie Ihren API-Schlüssel und Ihr Secret ein.

GatewayAPI wird Ihren Webhook so lange anpingen, bis Sie eine 2xx-Antwort senden, um uns mitzuteilen, dass die SMS-Nachricht empfangen wurde. Achten Sie also darauf, dass Sie am Ende die Rücksendung einer Antwort berücksichtigen.

Inspiration

Wolfram Alpha enthält viele gute Beispiele für Fragen, die man stellen kann, darunter Themen wie Web und Computer, Videospiele und Kultur und Medien.

Vollständiges Codebeispiel

Wie oben, aber hier in voller Länge enthalten.