Tutorial ini menunjukkan cara membuat alur kerja terjemahan yang menunggu input Anda—yang memerlukan manusia di loop—dan yang menghubungkan database Firestore, dua Cloud Functions, Cloud Translation API, dan halaman web yang menggunakan Firebase SDK untuk melakukan pembaruan secara real time.
Dengan Workflows, Anda dapat mendukung endpoint callback (atau webhook) yang menunggu permintaan HTTP tiba di endpoint tersebut, dan melanjutkan eksekusi alur kerja di lain waktu. Dalam hal ini, alur kerja akan menunggu input Anda untuk menolak atau memvalidasi terjemahan beberapa teks, tetapi juga dapat menunggu proses eksternal. Untuk mengetahui informasi selengkapnya, lihat Menunggu menggunakan callback.
Arsitektur
Tutorial ini akan membuat aplikasi web yang memungkinkan Anda melakukan hal berikut:
- Pada halaman web terjemahan, masukkan teks yang ingin diterjemahkan dari bahasa Inggris ke bahasa Prancis. Klik Terjemahkan.
- Dari halaman web, sebuah Cloud Function akan dipanggil untuk meluncurkan eksekusi alur kerja. Teks yang akan diterjemahkan diteruskan sebagai parameter ke fungsi dan alur kerja.
- Teks disimpan di database Cloud Firestore. Cloud Translation API dipanggil. Terjemahan yang ditampilkan disimpan dalam database. Aplikasi web di-deploy menggunakan Firebase Hosting dan diupdate secara real time untuk menampilkan teks yang diterjemahkan.
- Langkah
create_callback
dalam alur kerja membuat URL endpoint callback yang juga disimpan di database Firestore. Halaman web kini menampilkan tombol Validasi dan Tolak. - Alur kerja kini dijeda dan menunggu permintaan POST HTTP eksplisit ke URL endpoint callback.
- Anda dapat memutuskan apakah akan memvalidasi atau menolak terjemahan. Jika sebuah tombol diklik, Cloud Function kedua akan memanggil endpoint callback yang dibuat oleh alur kerja, yang meneruskan status persetujuan.
Alur kerja melanjutkan eksekusinya dan menyimpan status persetujuan
true
ataufalse
di database Firestore.
Diagram ini memberikan ringkasan proses:
Tujuan
- Men-deploy aplikasi web.
- Buat database Firestore untuk menyimpan permintaan terjemahan.
- Deploy Cloud Functions untuk menjalankan alur kerja.
- Men-deploy dan menjalankan alur kerja untuk mengatur seluruh proses.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API App Engine, Cloud Build, Cloud Functions, Firestore, Translation, and Workflows :
gcloud services enable appengine.googleapis.com
cloudbuild.googleapis.com cloudfunctions.googleapis.com firestore.googleapis.com translate.googleapis.com workflows.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API App Engine, Cloud Build, Cloud Functions, Firestore, Translation, and Workflows :
gcloud services enable appengine.googleapis.com
cloudbuild.googleapis.com cloudfunctions.googleapis.com firestore.googleapis.com translate.googleapis.com workflows.googleapis.com - Update komponen Google Cloud CLI:
gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Setel ID project dan lokasi default yang digunakan dalam tutorial ini:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID export REGION=REGION gcloud config set workflows/location ${REGION}
Ganti kode berikut:
Men-deploy Cloud Function pertama
Cloud Function ini meluncurkan eksekusi alur kerja. Teks yang akan diterjemahkan akan diteruskan sebagai parameter ke fungsi dan alur kerja.
Buat direktori bernama
callback-translation
dan dengan subdirektori yang disebutinvokeTranslationWorkflow
,translationCallbackCall
, danpublic
:mkdir -p ~/callback-translation/{invokeTranslationWorkflow,translationCallbackCall,public}
Ubah ke direktori
invokeTranslationWorkflow
:cd ~/callback-translation/invokeTranslationWorkflow
Buat file teks dengan nama file
index.js
yang berisi kode Node.js berikut:Buat file teks dengan nama file
package.json
yang berisi metadatanpm
berikut:Deploy fungsi dengan pemicu HTTP dan izinkan akses yang tidak diautentikasi:
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
Fungsi mungkin memerlukan waktu beberapa menit untuk di-deploy. Atau, Anda dapat menggunakan antarmuka Cloud Functions di Konsol Google Cloud untuk men-deploy fungsi tersebut.
Setelah fungsi di-deploy, Anda dapat mengonfirmasi properti
httpsTrigger.url
:gcloud functions describe invokeTranslationWorkflow
Perhatikan URL yang ditampilkan sehingga Anda dapat menggunakannya di langkah berikutnya.
Men-deploy Cloud Function kedua
Cloud Function ini membuat permintaan POST HTTP ke endpoint callback yang dibuat oleh alur kerja, yang meneruskan status persetujuan yang mencerminkan apakah terjemahan divalidasi atau ditolak.
Ubah ke direktori
translationCallbackCall
:cd ../translationCallbackCall
Buat file teks dengan nama file
index.js
yang berisi kode Node.js berikut:Buat file teks dengan nama file
package.json
yang berisi metadatanpm
berikut:Deploy fungsi dengan pemicu HTTP dan izinkan akses yang tidak diautentikasi:
gcloud functions deploy translationCallbackCall \ --region=${REGION} \ --runtime nodejs14 \ --entry-point=translationCallbackCall \ --trigger-http \ --allow-unauthenticated
Fungsi mungkin memerlukan waktu beberapa menit untuk di-deploy. Atau, Anda dapat menggunakan antarmuka Cloud Functions di Konsol Google Cloud untuk men-deploy fungsi tersebut.
Setelah fungsi di-deploy, Anda dapat mengonfirmasi properti
httpsTrigger.url
:gcloud functions describe translationCallbackCall
Perhatikan URL yang ditampilkan sehingga Anda dapat menggunakannya di langkah berikutnya.
Men-deploy alur kerja
Alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows, yang dapat ditulis dalam format YAML atau JSON. Ini adalah definisi alur kerja. Setelah membuat alur kerja, Anda bisa men-deploy-nya agar tersedia untuk dieksekusi.
Ubah ke direktori
callback-translation
:cd ..
Buat file teks dengan nama file
translation-validation.yaml
dan berisi konten berikut:Setelah membuat alur kerja, Anda dapat men-deploy-nya, tetapi jangan menjalankan alur kerja tersebut:
gcloud workflows deploy translation_validation --source=translation-validation.yaml
Buat aplikasi web Anda
Buat aplikasi web yang memanggil Cloud Function yang meluncurkan eksekusi alur kerja. Halaman web akan diperbarui secara real time untuk menampilkan hasil permintaan terjemahan.
Ubah ke direktori
public
:cd public
Buat file teks dengan nama file
index.html
yang berisi markup HTML berikut. (Di langkah selanjutnya, Anda akan mengubah fileindex.html
dan menambahkan skrip Firebase SDK.)Buat file teks dengan nama file
script.js
yang berisi kode JavaScript berikut:Edit file
script.js
dan ganti placeholderUPDATE_ME
dengan URL Cloud Function yang Anda catat sebelumnya.Di metode
translateBtn.addEventListener
, ganticonst fnUrl = UPDATE_ME;
dengan:
const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/invokeTranslationWorkflow";
Di fungsi
callCallbackUrl
, ganticonst fnUrl = UPDATE_ME;
dengan:
const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/translationCallbackCall";
Buat file teks dengan nama file
style.css
yang berisi gaya cascading berikut:
Menambahkan Firebase ke aplikasi web
Dalam tutorial ini, halaman HTML, skrip JavaScript, dan style sheet CSS di-deploy sebagai aset statis menggunakan Firebase Hosting, tetapi halaman tersebut dapat dihosting di mana saja dan ditayangkan secara lokal di mesin Anda sendiri untuk tujuan pengujian.
Membuat project Firebase
Agar dapat menambahkan Firebase ke aplikasi, Anda perlu membuat project Firebase yang akan dihubungkan ke aplikasi.
-
Di Firebase console, klik Create a project, lalu pilih project Google Cloud yang ada dari menu drop-down untuk menambahkan resource Firebase ke project tersebut.
-
Klik Continue hingga Anda melihat opsi untuk menambahkan Firebase.
-
Lewati penyiapan Google Analytics untuk project Anda.
-
Klik Add Firebase.
Firebase otomatis menyediakan resource untuk project Firebase Anda. Setelah selesai, Anda akan dibawa ke halaman ringkasan untuk project Anda di Firebase console.
Mendaftarkan aplikasi ke Firebase
Setelah memiliki project Firebase, Anda dapat menambahkan aplikasi web ke project tersebut.
Di bagian tengah halaman ringkasan project, klik ikon Web (</>) untuk meluncurkan alur kerja penyiapan.
Masukkan nama panggilan untuk aplikasi Anda.
Bagian ini hanya dapat dilihat oleh Anda di Firebase console.
Lewati penyiapan Firebase Hosting untuk saat ini.
Klik Register app dan lanjutkan ke konsol.
Aktifkan Cloud Firestore
Aplikasi web menggunakan Cloud Firestore untuk menerima dan menyimpan data. Anda harus mengaktifkan Cloud Firestore.
Di bagian Build Firebase console, klik Firestore Database.
(Anda mungkin harus meluaskan panel navigasi kiri terlebih dahulu untuk melihat bagian Build.)
Di panel Cloud Firestore, klik Create database.
Pilih Mulai dalam mode pengujian, menggunakan aturan keamanan seperti berikut:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write; } } }
Klik Berikutnya setelah membaca pernyataan penyangkalan tentang aturan keamanan.
Tetapkan lokasi penyimpanan data Cloud Firestore. Anda dapat menyetujui setelan default atau memilih region yang dekat dengan Anda.
Klik Enable untuk menyediakan Firestore.
Menambahkan Firebase SDK dan melakukan inisialisasi Firebase
Firebase menyediakan library JavaScript untuk sebagian besar produk Firebase. Sebelum menggunakan Firebase Hosting, Anda harus menambahkan Firebase SDK ke aplikasi Web Anda.
- Untuk melakukan inisialisasi Firebase di aplikasi, Anda harus memberikan konfigurasi project Firebase aplikasi Anda.
- Di Firebase console, buka Project settings .
- Di panel Your apps, pilih aplikasi Anda.
- Di panel SDK setup and configuration, untuk memuat library Firebase SDK dari CDN, pilih CDN.
- Salin cuplikan ke file
index.html
di bagian bawah tag<body>
, yang menggantikan nilai placeholderXXXX
.
Instal Firebase JavaScript SDK.
Jika Anda belum memiliki file
package.json
, buat dengan menjalankan perintah berikut dari direktoricallback-translation
:npm init
Instal paket npm
firebase
dan simpan ke filepackage.json
Anda dengan menjalankan:npm install --save firebase
Melakukan inisialisasi dan men-deploy project
Untuk menghubungkan file project lokal ke project Firebase, Anda harus menginisialisasi project. Kemudian, Anda dapat men-deploy aplikasi web.
Jalankan perintah berikut dari direktori
callback-translation
:firebase init
Pilih opsi
Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys
.Pilih untuk menggunakan project yang sudah ada dan masukkan project ID Anda.
Terima
public
sebagai direktori utama publik default.Pilih untuk mengonfigurasi aplikasi satu halaman.
Lewati penyiapan build dan deploy otomatis dengan GitHub.
Pada perintah
File public/index.html already exists. Overwrite?
, ketik No.Ubah ke direktori
public
:cd public
Dari direktori
public
, jalankan perintah berikut untuk men-deploy project ke situs Anda:firebase deploy --only hosting
Menguji aplikasi web secara lokal
Dengan Firebase Hosting, Anda dapat melihat dan menguji perubahan secara lokal serta berinteraksi dengan resource project backend yang diemulasi. Saat menggunakan firebase serve
,
aplikasi Anda berinteraksi dengan backend yang diemulasi untuk konten dan konfigurasi hosting Anda,
tetapi backend Anda yang sebenarnya untuk semua resource project lainnya. Untuk tutorial ini, Anda dapat menggunakan firebase serve
, tetapi tidak direkomendasikan saat melakukan pengujian yang lebih ekstensif.
Jalankan perintah berikut dari direktori
public
:firebase serve
Buka aplikasi web di URL lokal yang ditampilkan (biasanya
http://localhost:5000
).Masukkan teks dalam bahasa Inggris, lalu klik Terjemahkan.
Terjemahan teks dalam bahasa Prancis akan ditampilkan.
Sekarang Anda dapat mengklik Validasi atau Tolak.
Di database Firestore, Anda dapat memverifikasi konten. Tampilannya akan terlihat seperti berikut:
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."
Status
approved
adalahtrue
ataufalse
, bergantung pada apakah Anda memvalidasi atau menolak terjemahan.
Selamat! Anda telah membuat alur kerja terjemahan yang memerlukan interaksi manusia yang menggunakan callback Workflows.
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus konfigurasi default gcloud CLI yang Anda tambahkan selama penyiapan tutorial:
gcloud config unset workflows/location
Menghapus alur kerja yang dibuat dalam tutorial ini:
gcloud workflows delete WORKFLOW_NAME
Hapus Cloud Functions yang Anda buat dalam tutorial ini:
gcloud functions delete FUNCTION_NAME
Anda juga dapat menghapus Cloud Functions dari Konsol Google Cloud.