Dies ist eine einfache Demonstration mit GoogleCloud Functions und Flows, um eine Bilderkennung auf einem Bild vorzunehmen, das über Telegram gesendet wurde.
Flows und darüber hinaus
Als Entwickler von Flows denke ich oft darüber nach, wer unsere Benutzer sind, warum sie Flows verwenden und was sie benötigen, um ihre Ziele zu erreichen; und dann, welche Funktionen wir implementieren müssen, um diesen Benutzern am besten zu dienen.
Flows ist eine leistungsstarke Drag-and-Drop-Automatisierungs-Engine zur Erstellung von Kommunikationsflows. Wir haben es zunächst als No-Code-Lösung konzipiert, aber wir haben festgestellt, dass viele Benutzer durch das Schreiben von etwas Code für spezifische Anwendungsfälle wirklich mächtige Verhaltensweisen erzielen können. Diese Codefragmente können in Flows enthalten sein oder sie können von Dritten bereitgestellte Cloud-Funktionen wie AWS Lambda Funktionen oder Google Cloud Functions sein.
Ein interessantes Anwendungsbeispiel: Bilderkennung
Für ein kurzes und lustiges Beispiel zeige ich Ihnen, wie man eine App implementiert, die Hotdogs erkennt. Wir werden einen Flow in Flows einrichten, der Bilder von Benutzern empfängt und entscheidet, ob sie einen Hotdog gesendet haben oder nicht.
Für viele unserer Kunden kann diese Art der Bilderkennung sehr leistungsstark sein. Stellen Sie sich vor, Sie betreiben einen Lieferservice und möchten erfolgreiche Lieferungen automatisch überprüfen. Ähnlich wie ich zeigen werde, könnten Sie Standortdaten, Fotos von Paketen und sogar Unterschriften des Empfängers verwenden, um einen Verifizierungsflow in Flows zu erstellen.
Ein Plan für den Erfolg
Zuerst werden wir eine Cloud-Funktion einrichten, die eine Anfrage mit einer URL zu einem Bild empfängt, dann verwendet sie eine Bilderkennungs-API, um das Bild zu verarbeiten, und antwortet, ob sich ein Hotdog im Bild befindet oder nicht.
Dann werden wir einen Flow erstellen, der eine Nachricht von einem Benutzer über einen Messaging-Kanal (in diesem Fall Telegram) empfängt, die oben genannte Cloud-Funktion ausführt und dem Benutzer antwortet, ob sich ein Hotdog in dem Bild befindet, das er gesendet hat.
Einrichten der Google Cloud-Funktion
Zuerst, müssen wir eine Cloud-Funktion einrichten. Um schnell zu beginnen, erstellen Sie eine Cloud-Funktion mit diesem Tutorial: https://cloud.google.com/functions/docs/quickstart-console. Wählen Sie als „Trigger“ HTTP-Trigger, Ausführungsumgebung: Node.js 10, und fügen Sie im Feld Quellcode das Code-Snippet ein. Es ist einfacher Code, der überprüft, ob die Anfrage JSON-Code enthält, und mit Ja oder Nein antwortet.
Als nächstes müssen Sie diese Funktion bereitstellen. Um sie im Google Cloud Platform zu testen, folgen Sie den Schritten des Tutorials.
Um sie von Ihrem Browser aus zu testen, gehen Sie zu folgendem URL und fügen Sie die spezifische Adresse für Ihre Funktion ein:
https://your-function-address.cloudfunctions.net/HotDogOrNot/?url=hello sollte {“isHotDog”: true} zurückgeben und die Adresse https://your-function-address.cloudfunctions.net/HotDogOrNot sollte {“isHotDog”: false}. zurückgeben.
Gut gemacht! Sie haben eine Google Cloud-Funktion eingerichtet. Jetzt müssen wir unsere Cloud-Funktion intelligenter machen.
Einrichten der Google Vision API
Um sie intelligenter zu machen, fügen wir die Bilderkennung hinzu. Zu diesem Zweck verwenden wir die Google Vision API. Um loszulegen, folgen Sie den Schritten 1-4 dieses Tutorials: https://cloud.google.com/vision/docs/quickstart-client-libraries. Im Tutorial aktivieren Sie die Vision API und erstellen ein Dienstkonto, um sie zu nutzen.
Jetzt kehren Sie zu der Cloud-Funktion zurück, die Sie erstellt haben. Aktivieren Sie „Umgebungsvariablen, Netzwerkkonfigurationen, Zeitüberschreitungen und mehr“ und wählen Sie im Feld „Dienstkonto“ das VisionAPI-Dienstkonto aus, das Sie gerade erstellt haben. Jetzt können wir auf die Vision API innerhalb unserer Funktion zugreifen.
Jetzt lassen Sie uns den Code ändern. Im Tab „Package.json“ fügen Sie diesen Code ein. Dadurch wird die Google Vision API-Bibliothek als Abhängigkeit zu Ihrer Funktion hinzugefügt, und im Tab "Index.js" aktualisieren Sie den vorhandenen Code mit dem folgenden Code-Snippet.
Was ist der Unterschied zur vorherigen Version? Wir haben eine Anfrage an die VisionAPI hinzugefügt, die die ‘Labels’ zurückgibt, die sie im Bild gefunden hat. Dann filtern wir diese Labels nach Beschreibung: wenn sie „Hotdog“ enthält und wenn sie mehr als 60% Vertrauen in dieses Label hat. Wenn nach der Filterung mindestens 1 Label übrig bleibt, bedeutet das, dass wir einen Hotdog im Bild gefunden haben.
Um zu verstehen, wie die Google VisionAPI funktioniert und wie die Antwort aussieht, überprüfen Sie deren Dokumentation: https://cloud.google.com/vision/docs
Danach stellen Sie die neue Version unserer Funktion bereit. Um sie von Ihrem Browser aus zu testen, finden Sie ein beliebiges Bild eines Hotdogs und speichern Sie dessen URL. Gehen Sie nun zur URL Ihrer Funktion (indem Sie die richtige Adresse für Ihre Funktion einfügen) https://your-function-address.cloudfunctions.net/HotDogOrNot?url=url_to_image und ersetzen Sie „url_to_image“ durch die URL des gefundenen Bildes. Wenn sich ein Hotdog im Bild befindet, gibt die Seite {“isHotDog”: true} zurück.
Jetzt lassen Sie uns diese Funktion mit dem Flow Builder verbinden.
Erstellen eines Flows in Flows
Loggen Sie sich in das Bird Dashboard ein oder registrieren Sie sich für ein Konto, wenn Sie noch keines haben.
Wenn Sie neu bei Flows sind und noch keine Kanäle eingerichtet haben, müssen Sie zur Seite zur Kanaleinrichtung gehen und den Telegram-Kanal einrichten. Ich habe mich für Telegram für diese Demo entschieden, da es einfach und schnell einzurichten ist.
Jetzt haben Sie einen Kanal, den wir in Flows verwenden können. Gehen Sie zur Flows-Seite, erstellen Sie einen neuen benutzerdefinierten Flow und wählen Sie den Trigger „Telegram“-Kanal aus.
Sie werden auf eine Flow-Seite weitergeleitet, auf der Sie Ihren Telegram-Kanal als Trigger wählen sollten, in unserem Fall „Hotdog“. Bitte fügen Sie 2 Schritte hinzu: „Variablen abrufen“ und „Auf Kanalnachricht antworten“.
Im Schritt „Variablen abrufen“ rufen wir unsere Cloud-Funktion auf und erhalten die Antwort in die Variable „isHotDog“, die „true“ oder „false“ als Antwort von der GoogleCloud-Funktion enthalten wird. Im URL-Feld fügen Sie bitte die URL zu Ihrer Funktion https://your-function-address.cloudfunctions.net/HotDogOrNot ein und füllen Sie alle anderen Felder wie im Bild „Inhalt des Fetch-Variablen-Schrittes“ aus.
Und im Schritt „Auf Kanalnachricht antworten“ werden wir dem Kunden mit einer Nachricht antworten, die die Ja- oder Nein-Antwort enthält. Fügen Sie dafür im Feld „Mit Nachricht antworten“ den folgenden Text „Hotdog auf dem Bild? {{isHotDog}}“ ein.
Wenn Sie beim Erstellen des Flows Probleme haben, können Sie ihn aus der Datei exportieren: simple-hotdog-flow.json.
Um es zu testen, senden Sie ein Bild an Ihren Telegram-Bot.
Bis jetzt sieht es cool aus! Wir haben einen kleinen Chatbot erstellt, der die Bilder überprüft, die Kunden gesendet haben. Um es schöner zu machen, lassen Sie uns einige weitere Schritte hinzufügen, wie unten gezeigt:
Wenn Sie beim Erstellen des Flows Probleme haben, können Sie ihn aus der Datei exportieren: advanced-hotdog-flow.json.
Ergebnisse
Während dies ein unterhaltsames Beispiel ist, glauben wir, dass diese Art von Funktionalität für unsere Benutzer sehr nützlich sein kann.
Wenn Sie mehr Funktionen wie diese in Flows wünschen, schreiben Sie unserem Support-Team, um uns dies mitzuteilen.