In dieser Anleitung erfahren Sie, wie Sie einen Übersetzungsworkflow erstellen, der auf Sie – den Human in the Loop – und Ihre Eingabe wartet, und der eine Firestore-Datenbank, zwei Cloud Run-Funktionen, die Cloud Translation API und eine Webseite verbindet, die das Firebase SDK nutzt, um in Echtzeit eine Aktualisierung durchzuführen.
Mit Workflows können Sie einen Callback-Endpunkt (oder Webhook) unterstützen, der darauf wartet, dass HTTP-Anfragen an diesem Endpunkt ankommen, und die Ausführung des Workflows zu einem späteren Zeitpunkt fortsetzt. In diesem Fall wartet der Workflow auf die Ablehnung oder Validierung der Übersetzung eines Textes, aber es könnte auch ein externer Prozess sein. Weitere Informationen finden Sie unter Mit Callbacks warten.
Architektur
In dieser Anleitung wird eine Webanwendung erstellt, die Folgendes ermöglicht:
- Geben Sie auf der Übersetzungswebseite den Text ein, der vom Englischen ins Französische übersetzt werden soll. Klicken Sie auf Übersetzen.
- Über die Webseite wird eine Cloud Run-Funktion aufgerufen, die die Ausführung des Workflows startet. Der zu übersetzende Text wird als Parameter sowohl an die Funktion als auch an den Workflow übergeben.
- Der Text wird in einer Cloud Firestore-Datenbank gespeichert. Cloud Translation API wird aufgerufen. Die zurückgegebene Übersetzung wird in der Datenbank gespeichert. Die Webanwendung wird mit Firebase Hosting bereitgestellt und in Echtzeit aktualisiert, um den übersetzten Text anzuzeigen.
- Im Schritt create_callbackdes Workflows wird eine Callback-Endpunkt-URL erstellt, die auch in der Firestore-Datenbank gespeichert wird. Auf der Webseite werden jetzt sowohl die Schaltfläche Validieren als auch die Schaltfläche Ablehnen angezeigt.
- Der Workflow wird jetzt pausiert und wartet auf eine explizite HTTP-POST-Anfrage an die Callback-Endpunkt-URL.
- Sie können entscheiden, ob Sie die Übersetzung validieren oder ablehnen möchten. Durch Klicken auf eine Schaltfläche wird eine zweite Cloud Run-Funktion aufgerufen, die wiederum den vom Workflow erstellten Callback-Endpunkt aufruft und den Genehmigungsstatus übergibt.
Der Workflow wird fortgesetzt und speichert den Genehmigungsstatus trueoderfalsein der Firestore-Datenbank.
Dieses Diagramm bietet einen Überblick über den Prozess:
Erste Cloud Run-Funktion bereitstellen
Diese Cloud Run-Funktion startet die Ausführung des Workflows. Der zu übersetzende Text wird als Parameter sowohl an die Funktion als auch an den Workflow übergeben.
- Erstellen Sie ein Verzeichnis namens - callback-translationmit den Unterverzeichnissen- invokeTranslationWorkflow,- translationCallbackCallund- public:- mkdir -p ~/callback-translation/{invokeTranslationWorkflow,translationCallbackCall,public} 
- Wechseln Sie in das Verzeichnis - invokeTranslationWorkflow:- cd ~/callback-translation/invokeTranslationWorkflow 
- Erstellen Sie eine Textdatei mit dem Dateinamen - index.js, die den folgenden Node.js-Code enthält:
- Erstellen Sie eine Textdatei mit dem Dateinamen - package.json, die die folgenden- npm-Metadaten enthält:
- Stellen Sie die Funktion mit einem HTTP-Trigger bereit und lassen Sie nicht authentifizierten Zugriff zu: - gcloud functions deploy invokeTranslationWorkflow \ --region=${REGION} \ --runtime nodejs14 \ --entry-point=invokeTranslationWorkflow \ --set-env-vars PROJECT_ID=${GOOGLE_CLOUD_PROJECT},CLOUD_REGION=${REGION},WORKFLOW_NAME=translation_validation \ --trigger-http \ --allow-unauthenticated - Die Bereitstellung der Funktion kann einige Minuten dauern. Alternativ können Sie die Funktion über die Cloud Run Functions-Oberfläche in der Google Cloud -Console bereitstellen. 
- Nachdem die Funktion bereitgestellt wurde, können Sie das Attribut - httpsTrigger.urlbestätigen:- gcloud functions describe invokeTranslationWorkflow - Notieren Sie sich die zurückgegebene URL, damit Sie sie in einem späteren Schritt verwenden können. 
Zweite Cloud Run-Funktion bereitstellen
Diese Cloud Run-Funktion stellt eine HTTP-POST-Anfrage an den vom Workflow erstellten Callback-Endpunkt und übergibt einen Genehmigungsstatus, der angibt, ob die Übersetzung validiert oder abgelehnt wurde.
- Wechseln Sie in das Verzeichnis - translationCallbackCall:- cd ../translationCallbackCall 
- Erstellen Sie eine Textdatei mit dem Dateinamen - index.js, die den folgenden Node.js-Code enthält:
- Erstellen Sie eine Textdatei mit dem Dateinamen - package.json, die die folgenden- npm-Metadaten enthält:
- Stellen Sie die Funktion mit einem HTTP-Trigger bereit und lassen Sie nicht authentifizierten Zugriff zu: - gcloud functions deploy translationCallbackCall \ --region=${REGION} \ --runtime nodejs14 \ --entry-point=translationCallbackCall \ --trigger-http \ --allow-unauthenticated - Die Bereitstellung der Funktion kann einige Minuten dauern. Alternativ können Sie die Funktion über die Cloud Run Functions-Oberfläche in der Google Cloud -Console bereitstellen. 
- Nachdem die Funktion bereitgestellt wurde, können Sie das Attribut - httpsTrigger.urlbestätigen:- gcloud functions describe translationCallbackCall - Notieren Sie sich die zurückgegebene URL, damit Sie sie in einem späteren Schritt verwenden können. 
Workflow bereitstellen
Ein Workflow besteht aus einer Reihe von Schritten, die mit der Workflows-Syntax beschrieben werden. Diese kann entweder im YAML- oder JSON-Format geschrieben werden. Dies ist die Definition des Workflows. Nachdem Sie einen Workflow erstellt haben, stellen Sie ihn bereit, um ihn für die Ausführung verfügbar zu machen.
- Wechseln Sie in das Verzeichnis - callback-translation:- cd .. 
- Erstellen Sie eine Textdatei mit dem Dateinamen - translation-validation.yamlund folgendem Inhalt:
- Nachdem Sie den Workflow erstellt haben, können Sie ihn bereitstellen, aber nicht den Workflow ausführen: - gcloud workflows deploy translation_validation --source=translation-validation.yaml 
Webanwendung erstellen
Erstellen Sie eine Webanwendung, die eine Cloud Functions-Funktion aufruft, die die Ausführung des Workflows startet. Die Webseite wird in Echtzeit aktualisiert, um das Ergebnis der Übersetzungsanfrage anzuzeigen.
- Wechseln Sie in das Verzeichnis - public:- cd public 
- Erstellen Sie eine Textdatei mit dem Dateinamen - index.html, die das folgende HTML-Markup enthält. In einem späteren Schritt ändern Sie die Datei- index.htmlund fügen die Firebase SDK-Skripts hinzu.
- Erstellen Sie eine Textdatei mit dem Dateinamen - script.js, die den folgenden JavaScript-Code enthält:
- Bearbeiten Sie die Datei - script.jsund ersetzen Sie die Platzhalter- UPDATE_MEdurch die zuvor notierten Cloud Run-Funktions-URLs.- Ersetzen Sie in der Methode - translateBtn.addEventListener- const fnUrl = UPDATE_ME;durch:
 - const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/invokeTranslationWorkflow"; 
- Ersetzen Sie in der Funktion - callCallbackUrl- const fnUrl = UPDATE_ME;durch:
 - const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/translationCallbackCall"; 
 
- Erstellen Sie eine Textdatei mit dem Dateinamen - style.css, die die folgenden kaskadierenden Stile enthält:
Firebase zu meiner Web-App hinzufügen
In dieser Anleitung werden die HTML-Seite, das JavaScript-Script und das CSS-Stylesheet als statische Assets mit Firebase Hosting bereitgestellt. Sie können jedoch auch an einem beliebigen anderen Ort gehostet und zu Testzwecken lokal auf Ihrem eigenen Computer bereitgestellt werden.
Firebase-Projekt erstellen
Bevor Sie Firebase zu Ihrer Anwendung hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer Anwendung herzustellen.
- 
    Klicken Sie in der Firebase Console auf Projekt erstellen und wählen Sie Ihr vorhandenes Google Cloud -Projekt aus dem Drop-down-Menü aus, um Firebase-Ressourcen zu diesem Projekt hinzuzufügen. 
- 
    Klicken Sie auf Weiter, bis Sie die Option zum Hinzufügen von Firebase sehen. 
- 
    Überspringen Sie die Einrichtung von Google Analytics für Ihr Projekt. 
- 
    Klicken Sie auf Firebase hinzufügen. 
Firebase stellt automatisch Ressourcen für Ihr Firebase-Projekt bereit. Nach Abschluss des Vorgangs werden Sie zur Übersichtsseite für Ihr Projekt in der Firebase Console weitergeleitet.
App bei Firebase registrieren
Nachdem Sie ein Firebase-Projekt haben, können Sie Ihre Webanwendung hinzufügen.
- Klicken Sie in der Mitte der Projektübersicht auf das Symbol Web (</>), um den Einrichtungsworkflow zu starten. 
- Geben Sie einen Alias für die Anwendung ein. - Dieser ist nur in der Firebase Console sichtbar. 
- Überspringen Sie die Einrichtung von Firebase Hosting. 
- Klicken Sie auf App registrieren und fahren Sie mit der Konsole fort. 
Cloud Firestore aktivieren
Die Webanwendung verwendet Cloud Firestore, um Daten zu empfangen und zu speichern. Sie müssen Cloud Firestore aktivieren.
- Klicken Sie im Abschnitt Build in der Firebase Console auf Firestore-Datenbank. - Möglicherweise müssen Sie zuerst den linken Navigationsbereich erweitern, um den Abschnitt Build einzublenden. 
- Klicken Sie im Cloud Firestore-Bereich auf Datenbank erstellen. 
- Wählen Sie Im Testmodus starten mit einer Sicherheitsregel wie der folgenden aus: - rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write; } } } 
- Klicken Sie auf Weiter, nachdem Sie den Haftungsausschluss zu den Sicherheitsregeln gelesen haben. 
- Legen Sie den Speicherort für Cloud Firestore-Daten fest. Sie können die Standardeinstellung übernehmen oder eine Region in Ihrer Nähe auswählen. 
- Klicken Sie auf Aktivieren, um Firestore bereitzustellen. 
Firebase SDK hinzufügen und Firebase initialisieren
Firebase stellt JavaScript-Bibliotheken für die meisten Firebase-Produkte bereit. Bevor Sie Firebase Hosting verwenden, müssen Sie die Firebase SDKs Ihrer Webanwendung hinzufügen.
- Zum Initialisieren von Firebase in Ihrer Anwendung müssen Sie die Firebase-Projektkonfiguration Ihrer Anwendung angeben.
- Rufen Sie in der Firebase Console die Projekteinstellungen auf.
- Wählen Sie im Bereich Meine Apps Ihre App aus.
- Wählen Sie im Bereich SDK-Einrichtung und -Konfiguration die Option CDN aus, um Firebase SDK-Bibliotheken aus dem CDN zu laden.
- Kopieren Sie das Snippet in Ihre Datei index.htmlunten in das<body>-Tag und ersetzen Sie die PlatzhalterwerteXXXX.
 
- Installieren Sie das Firebase JavaScript SDK. - Wenn Sie noch keine - package.json-Datei haben, erstellen Sie eine mit dem folgenden Befehl im Verzeichnis- callback-translation:- npm init
- Installieren Sie das npm-Paket - firebaseund speichern Sie es in der- package.json-Datei:- npm install firebase 
 
Projekt initialisieren und bereitstellen
Sie müssen Ihr Projekt initialisieren, um Ihre lokalen Projektdateien mit Ihrem Firebase-Projekt zu verbinden. Sie können dann Ihre Webanwendung bereitstellen.
- Führen Sie im Verzeichnis - callback-translationden folgenden Befehl aus:- firebase init
- Wählen Sie die Option - Configure files for Firebase Hosting and (optionally) set up GitHub Action deploysaus.
- Verwenden Sie ein vorhandenes Projekt und geben Sie Ihre Projekt-ID ein. 
- Übernehmen Sie - publicals standardmäßiges öffentliches Stammverzeichnis.
- Konfigurieren Sie eine einseitige App. 
- Überspringen Sie die Einrichtung automatischer Builds und Bereitstellungen mit GitHub. 
- Geben Sie bei der Eingabeaufforderung - File public/index.html already exists. Overwrite?Nein ein.
- Wechseln Sie in das Verzeichnis - public:- cd public 
- Führen Sie im Verzeichnis - publicden folgenden Befehl aus, um das Projekt auf Ihrer Website bereitzustellen:- firebase deploy --only hosting 
Webanwendung lokal testen
Mit Firebase Hosting können Sie Änderungen lokal ansehen und testen und mit emulierten Backend-Projektressourcen interagieren. Wenn Sie firebase serve verwenden, interagiert Ihre Anwendung mit einem emulierten Backend für Ihre Hosting-Inhalte und Ihre Konfiguration, aber Ihr echtes Backend tut dies für alle anderen Projektressourcen. Für diese Anleitung können Sie firebase serve verwenden. Dies wird jedoch nicht empfohlen, wenn Sie umfangreichere Tests durchführen.
- Führen Sie im Verzeichnis - publicden folgenden Befehl aus:- firebase serve
- Öffnen Sie Ihre Webanwendung unter der zurückgegebenen lokalen URL (in der Regel - http://localhost:5000).
- Geben Sie Text in Englisch ein und klicken Sie dann auf Übersetzen. - Eine Übersetzung des Textes auf Französisch sollte angezeigt werden. 
- Sie können jetzt auf Validieren oder Ablehnen klicken. - In der Firestore-Datenbank können Sie den Inhalt prüfen. Diese sollten in etwa so aussehen: - approved: true callback: "https://workflowexecutions.googleapis.com/v1/projects/26811016474/locations/us-central1/workflows/translation_validation/executions/68bfce75-5f62-445f-9cd5-eda23e6fa693/callbacks/72851c97-6bb2-45e3-9816-1e3dcc610662_1a16697f-6d90-478d-9736-33190bbe222b" text: "The quick brown fox jumps over the lazy dog." translation: "Le renard brun rapide saute par-dessus le chien paresseux."- Der Status - approvedlautet- trueoder- false, je nachdem, ob Sie die Übersetzung validieren oder ablehnen.
Das war's auch schon! Sie haben einen Human-in-the-Loop-Workflow erstellt, der Workflow-Callbacks verwendet.