Cara menggunakan Flows dengan Google Vision API dan Google Cloud Functions
Burung
6 Okt 2020
Pembuat Alur
1 min read

Poin Penting
Flows lebih dari sekadar alat tanpa kode — ini adalah mesin otomatisasi fleksibel yang memungkinkan Anda memperluas alur kerja dengan kode menggunakan layanan eksternal seperti Google Cloud Functions atau AWS Lambda.
Tutorial ini menunjukkan cara membuat chatbot Telegram yang menggunakan Google Vision API untuk mengidentifikasi gambar (seperti mendeteksi jika sebuah foto mengandung hotdog 🥪).
Contoh ini menunjukkan bagaimana Flows dapat dengan mudah terhubung ke API pengenalan gambar untuk memproses konten yang diserahkan oleh pengguna secara otomatis.
Pengembang dapat memanfaatkan arsitektur ini untuk membangun otomatisasi dunia nyata, seperti verifikasi pengiriman, pemeriksaan ID, atau alur kerja kontrol kualitas.
Mengintegrasikan Google Vision API di dalam Cloud Function memungkinkan wawasan bertenaga AI (deteksi objek, kepercayaan label, ekstraksi metadata) yang dapat direspon oleh Flows secara dinamis.
Langkah “Ambil Variabel” di Flow Builder adalah jembatan — ia memanggil fungsi cloud dan menyimpan respons API untuk digunakan lebih lanjut dalam percakapan.
Blok balasan dapat menggunakan variabel seperti {{isHotDog}} untuk mempersonalisasi respons, mengubah data mentah menjadi pesan obrolan kontekstual.
Sementara demo ini bersifat menyenangkan, ia menunjukkan bagaimana pengembang dapat menggabungkan logika tanpa kode dengan fungsi tanpa server untuk membuka kemampuan otomatisasi yang kuat di berbagai saluran pesan.
Sorotan Tanya jawab
Apa itu Flow Builder?
Flow Builder (atau Alur) adalah mesin otomatisasi visual Bird untuk membuat alur komunikasi di berbagai saluran — tidak memerlukan kode, meskipun dapat diperluas dengan kode kustom.
Mengapa menggunakan Google Cloud Functions dengan Flows?
Cloud Functions memungkinkan Anda untuk menjalankan kode tanpa server untuk memproses data (seperti menganalisis gambar atau mengambil data API eksternal) dan mengalirkan hasilnya kembali ke alur Anda.
Apa yang dilakukan Google Vision API dalam pengaturan ini?
Ini melakukan analisis gambar — mengidentifikasi objek, label, atau konsep (seperti "hot dog") — dan mengembalikan data terstruktur ke Alur Anda.
Bagaimana cara menghubungkan Fungsi Cloud ke Flow Builder?
Gunakan langkah Fetch Variables untuk memanggil endpoint HTTPS publik dari fungsi. Respons (misalnya,
{ "isHotDog": true }) dapat digunakan di langkah-langkah selanjutnya.Bisakah ini digunakan untuk kasus bisnis yang nyata?
Tentu saja. Pendekatan yang sama dapat memvalidasi foto pengiriman, mendeteksi barang yang rusak, mengenali dokumen, atau memverifikasi media yang diunggah.
Apa yang membuat integrasi ini kuat?
Ini menggabungkan visi AI, fleksibilitas tanpa server, dan komunikasi multisaluran, memungkinkan automasi yang lebih cerdas tanpa memelihara infrastruktur.
Apakah saya perlu pengalaman pemrograman untuk mengikuti?
Familiaritas dasar dengan JavaScript (untuk Google Cloud Function) sangat membantu, tetapi sebagian besar proses — dari menghubungkan saluran hingga logika alur — bersifat visual dan ramah bagi pemula.
Flows adalah mesin otomatisasi drag-and-drop yang kuat untuk membuat alur komunikasi. Kami awalnya merancangnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat mendapatkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Potongan kode ini dapat berada di dalam Flow Builder, atau mereka dapat berupa fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau fungsi Google Cloud.
Ini adalah demonstrasi sederhana menggunakan Fungsi GoogleCloud dan Flows untuk melakukan pengenalan gambar pada gambar yang dikirim di Telegram.
Flows adalah mesin otomatisasi drag-and-drop yang kuat untuk membuat alur komunikasi. Kami awalnya merancangnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat mendapatkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Potongan kode ini dapat berada di dalam Flow Builder, atau mereka dapat berupa fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau fungsi Google Cloud.
Ini adalah demonstrasi sederhana menggunakan Fungsi GoogleCloud dan Flows untuk melakukan pengenalan gambar pada gambar yang dikirim di Telegram.
Flows adalah mesin otomatisasi drag-and-drop yang kuat untuk membuat alur komunikasi. Kami awalnya merancangnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat mendapatkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Potongan kode ini dapat berada di dalam Flow Builder, atau mereka dapat berupa fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau fungsi Google Cloud.
Ini adalah demonstrasi sederhana menggunakan Fungsi GoogleCloud dan Flows untuk melakukan pengenalan gambar pada gambar yang dikirim di Telegram.
Aliran dan Selainnya
Sebagai pengembang Flows, saya sering memikirkan siapa pengguna kami, mengapa mereka menggunakan Flows, dan apa yang mereka butuhkan untuk mencapai tujuan mereka; dan kemudian, fitur mana yang perlu kami implementasikan untuk melayani pengguna tersebut dengan sebaik-baiknya.
Flows adalah mesin otomatisasi seret dan lepas yang kuat untuk membuat alur komunikasi. Kami awalnya menganggapnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat menghasilkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Misalnya, Anda dapat membuat alur yang secara otomatis menghasilkan prospek dan kasus di Salesforce berdasarkan interaksi pelanggan di berbagai saluran. Potongan kode ini bisa berada di dalam Flows, atau bisa juga merupakan fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau Fungsi Google Cloud.
Kasus penggunaan yang menarik: Pengenalan Gambar
Untuk contoh yang singkat dan lucu, saya akan menunjukkan kepada Anda bagaimana cara mengimplementasikan aplikasi yang mengenali hot dog. Kami akan mengatur alur di Flows, yang akan menerima gambar dari pengguna dan memutuskan, apakah mereka mengirimkan hotdog atau tidak.
Bagi banyak pelanggan kami, jenis pengenalan gambar ini bisa sangat kuat. Bayangkan Anda menjalankan layanan pengiriman dan ingin memverifikasi pengiriman yang berhasil secara otomatis. Mirip dengan apa yang akan saya tunjukkan, Anda bisa menggunakan data lokasi, foto paket, dan bahkan tanda tangan penerima untuk membuat alur verifikasi di Flows.
Sebagai pengembang Flows, saya sering memikirkan siapa pengguna kami, mengapa mereka menggunakan Flows, dan apa yang mereka butuhkan untuk mencapai tujuan mereka; dan kemudian, fitur mana yang perlu kami implementasikan untuk melayani pengguna tersebut dengan sebaik-baiknya.
Flows adalah mesin otomatisasi seret dan lepas yang kuat untuk membuat alur komunikasi. Kami awalnya menganggapnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat menghasilkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Misalnya, Anda dapat membuat alur yang secara otomatis menghasilkan prospek dan kasus di Salesforce berdasarkan interaksi pelanggan di berbagai saluran. Potongan kode ini bisa berada di dalam Flows, atau bisa juga merupakan fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau Fungsi Google Cloud.
Kasus penggunaan yang menarik: Pengenalan Gambar
Untuk contoh yang singkat dan lucu, saya akan menunjukkan kepada Anda bagaimana cara mengimplementasikan aplikasi yang mengenali hot dog. Kami akan mengatur alur di Flows, yang akan menerima gambar dari pengguna dan memutuskan, apakah mereka mengirimkan hotdog atau tidak.
Bagi banyak pelanggan kami, jenis pengenalan gambar ini bisa sangat kuat. Bayangkan Anda menjalankan layanan pengiriman dan ingin memverifikasi pengiriman yang berhasil secara otomatis. Mirip dengan apa yang akan saya tunjukkan, Anda bisa menggunakan data lokasi, foto paket, dan bahkan tanda tangan penerima untuk membuat alur verifikasi di Flows.
Sebagai pengembang Flows, saya sering memikirkan siapa pengguna kami, mengapa mereka menggunakan Flows, dan apa yang mereka butuhkan untuk mencapai tujuan mereka; dan kemudian, fitur mana yang perlu kami implementasikan untuk melayani pengguna tersebut dengan sebaik-baiknya.
Flows adalah mesin otomatisasi seret dan lepas yang kuat untuk membuat alur komunikasi. Kami awalnya menganggapnya sebagai solusi tanpa kode, tetapi kami menemukan banyak pengguna dapat menghasilkan perilaku yang sangat kuat dengan menulis beberapa kode untuk kasus penggunaan tertentu. Misalnya, Anda dapat membuat alur yang secara otomatis menghasilkan prospek dan kasus di Salesforce berdasarkan interaksi pelanggan di berbagai saluran. Potongan kode ini bisa berada di dalam Flows, atau bisa juga merupakan fungsi cloud pihak ketiga seperti fungsi AWS Lambda atau Fungsi Google Cloud.
Kasus penggunaan yang menarik: Pengenalan Gambar
Untuk contoh yang singkat dan lucu, saya akan menunjukkan kepada Anda bagaimana cara mengimplementasikan aplikasi yang mengenali hot dog. Kami akan mengatur alur di Flows, yang akan menerima gambar dari pengguna dan memutuskan, apakah mereka mengirimkan hotdog atau tidak.
Bagi banyak pelanggan kami, jenis pengenalan gambar ini bisa sangat kuat. Bayangkan Anda menjalankan layanan pengiriman dan ingin memverifikasi pengiriman yang berhasil secara otomatis. Mirip dengan apa yang akan saya tunjukkan, Anda bisa menggunakan data lokasi, foto paket, dan bahkan tanda tangan penerima untuk membuat alur verifikasi di Flows.
Rencana untuk sukses
Pertama, kita akan menyiapkan fungsi cloud, yang menerima permintaan dengan URL ke sebuah gambar, kemudian menggunakan API pengenalan gambar untuk memproses gambar tersebut, dan memberi tahu apakah ada hotdog dalam gambar tersebut atau tidak.
Lalu kita akan membangun alur, yang menerima pesan dari pengguna melalui saluran pesan (Telegram dalam hal ini), menjalankan fungsi cloud di atas, dan memberi tahu pengguna apakah ada hotdog dalam gambar yang dia kirim.
Pertama, kita akan menyiapkan fungsi cloud, yang menerima permintaan dengan URL ke sebuah gambar, kemudian menggunakan API pengenalan gambar untuk memproses gambar tersebut, dan memberi tahu apakah ada hotdog dalam gambar tersebut atau tidak.
Lalu kita akan membangun alur, yang menerima pesan dari pengguna melalui saluran pesan (Telegram dalam hal ini), menjalankan fungsi cloud di atas, dan memberi tahu pengguna apakah ada hotdog dalam gambar yang dia kirim.
Pertama, kita akan menyiapkan fungsi cloud, yang menerima permintaan dengan URL ke sebuah gambar, kemudian menggunakan API pengenalan gambar untuk memproses gambar tersebut, dan memberi tahu apakah ada hotdog dalam gambar tersebut atau tidak.
Lalu kita akan membangun alur, yang menerima pesan dari pengguna melalui saluran pesan (Telegram dalam hal ini), menjalankan fungsi cloud di atas, dan memberi tahu pengguna apakah ada hotdog dalam gambar yang dia kirim.
Menyiapkan Fungsi Google Cloud
Pertama, kita perlu menyiapkan fungsi cloud. Untuk memulai dengan cepat, ikuti tutorial cepat Cloud Functions dari Google. Sebagai 'Trigger', pilih pemicu HTTP, lingkungan eksekusi: Node.js 10, dan di kolom kode sumber masukkan potongan kode. Ini adalah kode sederhana, yang memeriksa apakah permintaan mengandung kode JSON dan menjawab ya atau tidak.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (req, res) => { let message = req.query.url ? "yes" : "no"; res.setHeader('Content-Type', 'application/json'); res.status(200).send(JSON.stringify({ isHotDog: message })); };

Selanjutnya, Anda perlu menerapkan fungsi ini. Untuk mengujinya di dalam Google Cloud Platform, ikuti langkah-langkah dari tutorial.
Untuk menguji dari browser Anda, pergi ke URL berikut dengan memasukkan alamat spesifik untuk fungsi Anda:
https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot/?url=hello seharusnya mengembalikan {“isHotDog”: true} dan alamat https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot seharusnya mengembalikan {“isHotDog”: false}.
Kerja yang bagus! Anda telah menyiapkan fungsi cloud google. Sekarang kita perlu membuat fungsi cloud kita lebih pintar.
Pertama, kita perlu menyiapkan fungsi cloud. Untuk memulai dengan cepat, ikuti tutorial cepat Cloud Functions dari Google. Sebagai 'Trigger', pilih pemicu HTTP, lingkungan eksekusi: Node.js 10, dan di kolom kode sumber masukkan potongan kode. Ini adalah kode sederhana, yang memeriksa apakah permintaan mengandung kode JSON dan menjawab ya atau tidak.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (req, res) => { let message = req.query.url ? "yes" : "no"; res.setHeader('Content-Type', 'application/json'); res.status(200).send(JSON.stringify({ isHotDog: message })); };

Selanjutnya, Anda perlu menerapkan fungsi ini. Untuk mengujinya di dalam Google Cloud Platform, ikuti langkah-langkah dari tutorial.
Untuk menguji dari browser Anda, pergi ke URL berikut dengan memasukkan alamat spesifik untuk fungsi Anda:
https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot/?url=hello seharusnya mengembalikan {“isHotDog”: true} dan alamat https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot seharusnya mengembalikan {“isHotDog”: false}.
Kerja yang bagus! Anda telah menyiapkan fungsi cloud google. Sekarang kita perlu membuat fungsi cloud kita lebih pintar.
Pertama, kita perlu menyiapkan fungsi cloud. Untuk memulai dengan cepat, ikuti tutorial cepat Cloud Functions dari Google. Sebagai 'Trigger', pilih pemicu HTTP, lingkungan eksekusi: Node.js 10, dan di kolom kode sumber masukkan potongan kode. Ini adalah kode sederhana, yang memeriksa apakah permintaan mengandung kode JSON dan menjawab ya atau tidak.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (req, res) => { let message = req.query.url ? "yes" : "no"; res.setHeader('Content-Type', 'application/json'); res.status(200).send(JSON.stringify({ isHotDog: message })); };

Selanjutnya, Anda perlu menerapkan fungsi ini. Untuk mengujinya di dalam Google Cloud Platform, ikuti langkah-langkah dari tutorial.
Untuk menguji dari browser Anda, pergi ke URL berikut dengan memasukkan alamat spesifik untuk fungsi Anda:
https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot/?url=hello seharusnya mengembalikan {“isHotDog”: true} dan alamat https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot seharusnya mengembalikan {“isHotDog”: false}.
Kerja yang bagus! Anda telah menyiapkan fungsi cloud google. Sekarang kita perlu membuat fungsi cloud kita lebih pintar.
Mengatur Google Vision API
Untuk menjadikannya lebih pintar, mari kita tambahkan pengenalan gambar. Untuk tujuan ini, kita akan menggunakan Google Vision API. Untuk memulai, ikuti langkah 1-4 di panduan cepat Vision API. Di tutorial ini, Anda akan mengaktifkan Vision API dan membuat akun layanan untuk menggunakannya.
Sekarang kembali ke fungsi cloud yang Anda buat. Alihkan "Variabel lingkungan, jaringan, batas waktu, dan lainnya" dan di file "Akun layanan" pilih akun layanan VisionAPI yang baru saja Anda buat. Sekarang kita dapat mengakses Vision API di dalam fungsi kita.

Sekarang mari kita ubah kodenya. Di tab "Package.json", masukkan kode ini. Ini akan menambahkan pustaka Google Vision API sebagai ketergantungan untuk fungsi Anda.
{ "name": "sample-http", "version": "0.0.1", "dependencies": { "@google-cloud/vision": "^1.11.0" } }
di tab "Index.js" perbarui kode yang ada dengan potongan kode berikut.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (request, response) => { var url = request.query.url || request.body.url; if (url == null || url == "" ) { response.status(400).json({ error: "Must include a 'url' query parameter." }); } getImageLabels(url) .then(labels => { // You can use 'console.log(labels);' command to check labels you got // We filter all labels if they contain "hot dog" in label description // And have a score > 0.6, which mean that VisionAPI is at least 60% sure that there is a hotdog on a picture labels = labels.filter(function(label) { return label.description.toLowerCase().includes("hot dog") && label.score > 0.6; }); // If labels array contains at least 1 element, then we found a hot-dog! if (labels.length > 0) { response.status(200).json({isHotDog: true, error: ""}); } else { response.status(200).json({isHotDog: false, error: ""}); } }) .catch(err => { response.status(500).json({ error: err }); }); }; async function getImageLabels(imageUrl) { // Imports the Google Cloud client library const vision = require('@google-cloud/vision'); // Creates a client const client = new vision.ImageAnnotatorClient(); // Performs label detection on the image file const [result] = await client.labelDetection(imageUrl); const labels = result.labelAnnotations; return labels }

Apa perbedaannya dibandingkan versi sebelumnya? Kami menambahkan permintaan ke VisionAPI, yang mengembalikan ‘label’ yang ditemukan di gambar. Kemudian kami menyaring label ini berdasarkan deskripsi: jika itu mengandung “hot dog” dan jika memiliki kepercayaan lebih besar dari 60% pada label tersebut. Jika ada setidaknya 1 label yang tersisa setelah penyaringan, itu berarti kita menemukan hotdog di gambar.
Fitur Vision API | Apa yang Diaktifkan dalam Alur |
|---|---|
Label objek (misalnya, “hot dog”) | Identifikasi objek dan otomatisasi tindakan berdasarkan deteksi |
Skor kepercayaan | Kontrol ketepatan (misalnya, > 60% kepercayaan memicu alur kerja) |
Ekstraksi metadata | Sertakan konteks seperti angka, objek, dan lingkungan |
Pustaka yang dapat diperluas | Menambahkan lebih banyak deteksi bertenaga AI di luar hot dog |
Untuk memahami cara kerja Google Vision API dan melihat respons contoh, periksa dokumentasi Vision API resmi.
Setelah itu, deploy versi baru dari fungsi kami. Untuk mengujinya dari browser Anda, cari gambar hotdog dan simpan URL-nya. Sekarang pergi ke URL fungsi Anda (memasukkan alamat yang benar untuk fungsi Anda) https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot?url=url_ke_gambar dan ganti “url_ke_gambar” dengan URL gambar yang ditemukan. Jika ada hotdog di gambar, halaman akan mengembalikan {“isHotDog”: true}.
Sekarang mari kita hubungkan fungsi ini ke Flow Builder.
Untuk menjadikannya lebih pintar, mari kita tambahkan pengenalan gambar. Untuk tujuan ini, kita akan menggunakan Google Vision API. Untuk memulai, ikuti langkah 1-4 di panduan cepat Vision API. Di tutorial ini, Anda akan mengaktifkan Vision API dan membuat akun layanan untuk menggunakannya.
Sekarang kembali ke fungsi cloud yang Anda buat. Alihkan "Variabel lingkungan, jaringan, batas waktu, dan lainnya" dan di file "Akun layanan" pilih akun layanan VisionAPI yang baru saja Anda buat. Sekarang kita dapat mengakses Vision API di dalam fungsi kita.

Sekarang mari kita ubah kodenya. Di tab "Package.json", masukkan kode ini. Ini akan menambahkan pustaka Google Vision API sebagai ketergantungan untuk fungsi Anda.
{ "name": "sample-http", "version": "0.0.1", "dependencies": { "@google-cloud/vision": "^1.11.0" } }
di tab "Index.js" perbarui kode yang ada dengan potongan kode berikut.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (request, response) => { var url = request.query.url || request.body.url; if (url == null || url == "" ) { response.status(400).json({ error: "Must include a 'url' query parameter." }); } getImageLabels(url) .then(labels => { // You can use 'console.log(labels);' command to check labels you got // We filter all labels if they contain "hot dog" in label description // And have a score > 0.6, which mean that VisionAPI is at least 60% sure that there is a hotdog on a picture labels = labels.filter(function(label) { return label.description.toLowerCase().includes("hot dog") && label.score > 0.6; }); // If labels array contains at least 1 element, then we found a hot-dog! if (labels.length > 0) { response.status(200).json({isHotDog: true, error: ""}); } else { response.status(200).json({isHotDog: false, error: ""}); } }) .catch(err => { response.status(500).json({ error: err }); }); }; async function getImageLabels(imageUrl) { // Imports the Google Cloud client library const vision = require('@google-cloud/vision'); // Creates a client const client = new vision.ImageAnnotatorClient(); // Performs label detection on the image file const [result] = await client.labelDetection(imageUrl); const labels = result.labelAnnotations; return labels }

Apa perbedaannya dibandingkan versi sebelumnya? Kami menambahkan permintaan ke VisionAPI, yang mengembalikan ‘label’ yang ditemukan di gambar. Kemudian kami menyaring label ini berdasarkan deskripsi: jika itu mengandung “hot dog” dan jika memiliki kepercayaan lebih besar dari 60% pada label tersebut. Jika ada setidaknya 1 label yang tersisa setelah penyaringan, itu berarti kita menemukan hotdog di gambar.
Fitur Vision API | Apa yang Diaktifkan dalam Alur |
|---|---|
Label objek (misalnya, “hot dog”) | Identifikasi objek dan otomatisasi tindakan berdasarkan deteksi |
Skor kepercayaan | Kontrol ketepatan (misalnya, > 60% kepercayaan memicu alur kerja) |
Ekstraksi metadata | Sertakan konteks seperti angka, objek, dan lingkungan |
Pustaka yang dapat diperluas | Menambahkan lebih banyak deteksi bertenaga AI di luar hot dog |
Untuk memahami cara kerja Google Vision API dan melihat respons contoh, periksa dokumentasi Vision API resmi.
Setelah itu, deploy versi baru dari fungsi kami. Untuk mengujinya dari browser Anda, cari gambar hotdog dan simpan URL-nya. Sekarang pergi ke URL fungsi Anda (memasukkan alamat yang benar untuk fungsi Anda) https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot?url=url_ke_gambar dan ganti “url_ke_gambar” dengan URL gambar yang ditemukan. Jika ada hotdog di gambar, halaman akan mengembalikan {“isHotDog”: true}.
Sekarang mari kita hubungkan fungsi ini ke Flow Builder.
Untuk menjadikannya lebih pintar, mari kita tambahkan pengenalan gambar. Untuk tujuan ini, kita akan menggunakan Google Vision API. Untuk memulai, ikuti langkah 1-4 di panduan cepat Vision API. Di tutorial ini, Anda akan mengaktifkan Vision API dan membuat akun layanan untuk menggunakannya.
Sekarang kembali ke fungsi cloud yang Anda buat. Alihkan "Variabel lingkungan, jaringan, batas waktu, dan lainnya" dan di file "Akun layanan" pilih akun layanan VisionAPI yang baru saja Anda buat. Sekarang kita dapat mengakses Vision API di dalam fungsi kita.

Sekarang mari kita ubah kodenya. Di tab "Package.json", masukkan kode ini. Ini akan menambahkan pustaka Google Vision API sebagai ketergantungan untuk fungsi Anda.
{ "name": "sample-http", "version": "0.0.1", "dependencies": { "@google-cloud/vision": "^1.11.0" } }
di tab "Index.js" perbarui kode yang ada dengan potongan kode berikut.
/** * Responds to any HTTP request. * * @param {!express:Request} req HTTP request context. * @param {!express:Response} res HTTP response context. */ exports.helloWorld = (request, response) => { var url = request.query.url || request.body.url; if (url == null || url == "" ) { response.status(400).json({ error: "Must include a 'url' query parameter." }); } getImageLabels(url) .then(labels => { // You can use 'console.log(labels);' command to check labels you got // We filter all labels if they contain "hot dog" in label description // And have a score > 0.6, which mean that VisionAPI is at least 60% sure that there is a hotdog on a picture labels = labels.filter(function(label) { return label.description.toLowerCase().includes("hot dog") && label.score > 0.6; }); // If labels array contains at least 1 element, then we found a hot-dog! if (labels.length > 0) { response.status(200).json({isHotDog: true, error: ""}); } else { response.status(200).json({isHotDog: false, error: ""}); } }) .catch(err => { response.status(500).json({ error: err }); }); }; async function getImageLabels(imageUrl) { // Imports the Google Cloud client library const vision = require('@google-cloud/vision'); // Creates a client const client = new vision.ImageAnnotatorClient(); // Performs label detection on the image file const [result] = await client.labelDetection(imageUrl); const labels = result.labelAnnotations; return labels }

Apa perbedaannya dibandingkan versi sebelumnya? Kami menambahkan permintaan ke VisionAPI, yang mengembalikan ‘label’ yang ditemukan di gambar. Kemudian kami menyaring label ini berdasarkan deskripsi: jika itu mengandung “hot dog” dan jika memiliki kepercayaan lebih besar dari 60% pada label tersebut. Jika ada setidaknya 1 label yang tersisa setelah penyaringan, itu berarti kita menemukan hotdog di gambar.
Fitur Vision API | Apa yang Diaktifkan dalam Alur |
|---|---|
Label objek (misalnya, “hot dog”) | Identifikasi objek dan otomatisasi tindakan berdasarkan deteksi |
Skor kepercayaan | Kontrol ketepatan (misalnya, > 60% kepercayaan memicu alur kerja) |
Ekstraksi metadata | Sertakan konteks seperti angka, objek, dan lingkungan |
Pustaka yang dapat diperluas | Menambahkan lebih banyak deteksi bertenaga AI di luar hot dog |
Untuk memahami cara kerja Google Vision API dan melihat respons contoh, periksa dokumentasi Vision API resmi.
Setelah itu, deploy versi baru dari fungsi kami. Untuk mengujinya dari browser Anda, cari gambar hotdog dan simpan URL-nya. Sekarang pergi ke URL fungsi Anda (memasukkan alamat yang benar untuk fungsi Anda) https://alamat-fungsi-anda.cloudfunctions.net/HotDogOrNot?url=url_ke_gambar dan ganti “url_ke_gambar” dengan URL gambar yang ditemukan. Jika ada hotdog di gambar, halaman akan mengembalikan {“isHotDog”: true}.
Sekarang mari kita hubungkan fungsi ini ke Flow Builder.
Membuat alur di Flows
Masuk ke Dashboard Bird atau daftar untuk akun jika Anda belum memiliki satu.
Jika Anda baru di Flows dan Anda belum mengatur saluran, Anda perlu pergi ke halaman pengaturan Saluran, dan memilih untuk mengatur saluran Telegram. Saya memilih Telegram untuk demo ini karena mudah dan cepat untuk diatur.

Sekarang Anda memiliki saluran yang dapat kita gunakan di Flows. Pergi ke halaman Flows, buat alur kustom baru, dan pilih pemicu saluran “Telegram”.

Anda akan diarahkan ke halaman alur, di mana Anda harus memilih saluran Telegram Anda sebagai pemicu, dalam kasus kita ini adalah “Hotdog”. Harap tambahkan 2 langkah: “Ambil variabel” dan “Balas pesan saluran”.
Di dalam langkah “Ambil variabel” kita akan memanggil fungsi cloud kita dan mengambil respons ke dalam variabel “isHotDog” yang akan berisi “true” atau “false” sebagai respons dari fungsi GoogleClound. Di bidang URL silakan masukkan URL ke fungsi Anda https://your-function-address.cloudfunctions.net/HotDogOrNot dan isi semua bidang lainnya seperti pada gambar "Isi langkah Ambil variabel".
Dan di dalam langkah “Balas pesan saluran” kita akan membalas pelanggan dengan pesan yang berisi respons ya atau tidak. Untuk itu masukkan di bidang "Balas dengan pesan" teks berikut "Hotdog di gambar? {{isHotDog}}".


Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "19c3560f-a8d0-4787-8714-37c698108b69", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Is there a hotdog on the image?", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "ca9314a2-2f9d-489c-b4b1-50fc7a0b2cb6", "action": "sendConversationMessage", "options": { "content": { "text": "Hotdog on the image? {{isHotDog}}", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "highThroughput": false } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:15:43.669252097Z", "revisionCount": 22 }

Untuk mengujinya, kirim gambar ke bot Telegram Anda.
Sejauh ini, terlihat keren! Kami telah membuat bot obrolan kecil, yang memeriksa gambar yang dikirim oleh pelanggan. Untuk membuatnya lebih menarik, mari kita tambahkan beberapa langkah lagi seperti yang ditunjukkan di bawah ini:

Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "0c3e4f35-0950-44dd-8682-0a21a111de77", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{messageImage}}", "operator": "isEmptyOrNotSet", "value": "", "options": { "intent": "custom" } } ], "steps": [ { "id": "ffd13531-a3b9-41de-a2fa-0e515feed2fe", "action": "sendConversationMessage", "options": { "content": { "text": "Please send an image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Ask to send an image", "highThroughput": false } }, { "id": "3d752bc6-cf35-4971-8155-44a2bea4bb49", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "aa_QVqjIn9" } ], "defaultCase": { "steps": [ { "id": "8f3748cf-9059-44fb-a177-bc0dab194e7b", "action": "sendConversationMessage", "options": { "content": { "text": "Thank you for the image! We started to detect a hotdog on the image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"Thanks for the image\"", "highThroughput": false } }, { "id": "808debc0-974d-4b3f-bd4f-ed4efb30a499", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Send image to VisionAPI", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "c9f771fb-06ff-4362-b783-07e4bd3ff53d", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{isHotDog}}", "operator": "==", "value": "true", "options": { "intent": "custom" } } ], "steps": [ { "id": "02629417-e3ac-4bfa-94a9-83047c250d54", "action": "sendConversationMessage", "options": { "content": { "text": "There is a hotdog on the image. Thank you!", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"we detected a hotdog!\"", "highThroughput": false } } ], "id": "AWzLv6jksY" } ], "defaultCase": { "steps": [ { "id": "b00034ce-db49-4ddf-bf8f-2be006e3fbbd", "action": "sendConversationMessage", "options": { "content": { "text": "Sorry, we didn't detect a hotdog on the image. Please try again.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Notify that we didn't detect a hotdog", "highThroughput": false } } ], "id": "mwk5RoiCo" }, "intent": "smsConditional" } }, { "id": "8778c563-c045-4aa6-80e5-4c2a29b38b3f", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "iuFXBNrWTr" }, "intent": "smsConditional", "label": "Check if user sent an image" } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:25:15.614170299Z", "revisionCount": 26 }
Masuk ke Dashboard Bird atau daftar untuk akun jika Anda belum memiliki satu.
Jika Anda baru di Flows dan Anda belum mengatur saluran, Anda perlu pergi ke halaman pengaturan Saluran, dan memilih untuk mengatur saluran Telegram. Saya memilih Telegram untuk demo ini karena mudah dan cepat untuk diatur.

Sekarang Anda memiliki saluran yang dapat kita gunakan di Flows. Pergi ke halaman Flows, buat alur kustom baru, dan pilih pemicu saluran “Telegram”.

Anda akan diarahkan ke halaman alur, di mana Anda harus memilih saluran Telegram Anda sebagai pemicu, dalam kasus kita ini adalah “Hotdog”. Harap tambahkan 2 langkah: “Ambil variabel” dan “Balas pesan saluran”.
Di dalam langkah “Ambil variabel” kita akan memanggil fungsi cloud kita dan mengambil respons ke dalam variabel “isHotDog” yang akan berisi “true” atau “false” sebagai respons dari fungsi GoogleClound. Di bidang URL silakan masukkan URL ke fungsi Anda https://your-function-address.cloudfunctions.net/HotDogOrNot dan isi semua bidang lainnya seperti pada gambar "Isi langkah Ambil variabel".
Dan di dalam langkah “Balas pesan saluran” kita akan membalas pelanggan dengan pesan yang berisi respons ya atau tidak. Untuk itu masukkan di bidang "Balas dengan pesan" teks berikut "Hotdog di gambar? {{isHotDog}}".


Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "19c3560f-a8d0-4787-8714-37c698108b69", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Is there a hotdog on the image?", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "ca9314a2-2f9d-489c-b4b1-50fc7a0b2cb6", "action": "sendConversationMessage", "options": { "content": { "text": "Hotdog on the image? {{isHotDog}}", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "highThroughput": false } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:15:43.669252097Z", "revisionCount": 22 }

Untuk mengujinya, kirim gambar ke bot Telegram Anda.
Sejauh ini, terlihat keren! Kami telah membuat bot obrolan kecil, yang memeriksa gambar yang dikirim oleh pelanggan. Untuk membuatnya lebih menarik, mari kita tambahkan beberapa langkah lagi seperti yang ditunjukkan di bawah ini:

Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "0c3e4f35-0950-44dd-8682-0a21a111de77", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{messageImage}}", "operator": "isEmptyOrNotSet", "value": "", "options": { "intent": "custom" } } ], "steps": [ { "id": "ffd13531-a3b9-41de-a2fa-0e515feed2fe", "action": "sendConversationMessage", "options": { "content": { "text": "Please send an image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Ask to send an image", "highThroughput": false } }, { "id": "3d752bc6-cf35-4971-8155-44a2bea4bb49", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "aa_QVqjIn9" } ], "defaultCase": { "steps": [ { "id": "8f3748cf-9059-44fb-a177-bc0dab194e7b", "action": "sendConversationMessage", "options": { "content": { "text": "Thank you for the image! We started to detect a hotdog on the image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"Thanks for the image\"", "highThroughput": false } }, { "id": "808debc0-974d-4b3f-bd4f-ed4efb30a499", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Send image to VisionAPI", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "c9f771fb-06ff-4362-b783-07e4bd3ff53d", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{isHotDog}}", "operator": "==", "value": "true", "options": { "intent": "custom" } } ], "steps": [ { "id": "02629417-e3ac-4bfa-94a9-83047c250d54", "action": "sendConversationMessage", "options": { "content": { "text": "There is a hotdog on the image. Thank you!", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"we detected a hotdog!\"", "highThroughput": false } } ], "id": "AWzLv6jksY" } ], "defaultCase": { "steps": [ { "id": "b00034ce-db49-4ddf-bf8f-2be006e3fbbd", "action": "sendConversationMessage", "options": { "content": { "text": "Sorry, we didn't detect a hotdog on the image. Please try again.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Notify that we didn't detect a hotdog", "highThroughput": false } } ], "id": "mwk5RoiCo" }, "intent": "smsConditional" } }, { "id": "8778c563-c045-4aa6-80e5-4c2a29b38b3f", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "iuFXBNrWTr" }, "intent": "smsConditional", "label": "Check if user sent an image" } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:25:15.614170299Z", "revisionCount": 26 }
Masuk ke Dashboard Bird atau daftar untuk akun jika Anda belum memiliki satu.
Jika Anda baru di Flows dan Anda belum mengatur saluran, Anda perlu pergi ke halaman pengaturan Saluran, dan memilih untuk mengatur saluran Telegram. Saya memilih Telegram untuk demo ini karena mudah dan cepat untuk diatur.

Sekarang Anda memiliki saluran yang dapat kita gunakan di Flows. Pergi ke halaman Flows, buat alur kustom baru, dan pilih pemicu saluran “Telegram”.

Anda akan diarahkan ke halaman alur, di mana Anda harus memilih saluran Telegram Anda sebagai pemicu, dalam kasus kita ini adalah “Hotdog”. Harap tambahkan 2 langkah: “Ambil variabel” dan “Balas pesan saluran”.
Di dalam langkah “Ambil variabel” kita akan memanggil fungsi cloud kita dan mengambil respons ke dalam variabel “isHotDog” yang akan berisi “true” atau “false” sebagai respons dari fungsi GoogleClound. Di bidang URL silakan masukkan URL ke fungsi Anda https://your-function-address.cloudfunctions.net/HotDogOrNot dan isi semua bidang lainnya seperti pada gambar "Isi langkah Ambil variabel".
Dan di dalam langkah “Balas pesan saluran” kita akan membalas pelanggan dengan pesan yang berisi respons ya atau tidak. Untuk itu masukkan di bidang "Balas dengan pesan" teks berikut "Hotdog di gambar? {{isHotDog}}".


Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "19c3560f-a8d0-4787-8714-37c698108b69", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Is there a hotdog on the image?", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "ca9314a2-2f9d-489c-b4b1-50fc7a0b2cb6", "action": "sendConversationMessage", "options": { "content": { "text": "Hotdog on the image? {{isHotDog}}", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "highThroughput": false } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:15:43.669252097Z", "revisionCount": 22 }

Untuk mengujinya, kirim gambar ke bot Telegram Anda.
Sejauh ini, terlihat keren! Kami telah membuat bot obrolan kecil, yang memeriksa gambar yang dikirim oleh pelanggan. Untuk membuatnya lebih menarik, mari kita tambahkan beberapa langkah lagi seperti yang ditunjukkan di bawah ini:

Jika Anda mengalami kesulitan membangun alur, Anda dapat menggunakan cuplikan berikut:
{ "id": "", "revisionId": "", "trigger": "onReceivedConversationMessage", "options": { "callbacks": [], "targets": [] }, "metadata": { "title": "Image recognition", "isDraft": false, "triggerIntent": "onReceivedTelegramMessage" }, "steps": [ { "id": "0c3e4f35-0950-44dd-8682-0a21a111de77", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{messageImage}}", "operator": "isEmptyOrNotSet", "value": "", "options": { "intent": "custom" } } ], "steps": [ { "id": "ffd13531-a3b9-41de-a2fa-0e515feed2fe", "action": "sendConversationMessage", "options": { "content": { "text": "Please send an image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Ask to send an image", "highThroughput": false } }, { "id": "3d752bc6-cf35-4971-8155-44a2bea4bb49", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "aa_QVqjIn9" } ], "defaultCase": { "steps": [ { "id": "8f3748cf-9059-44fb-a177-bc0dab194e7b", "action": "sendConversationMessage", "options": { "content": { "text": "Thank you for the image! We started to detect a hotdog on the image.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"Thanks for the image\"", "highThroughput": false } }, { "id": "808debc0-974d-4b3f-bd4f-ed4efb30a499", "action": "fetchVariables", "options": { "url": "https://your-function-address.cloudfunctions.net/HotDogOrNot", "variableKeys": [ "isHotDog" ], "intent": "fetchVariables", "label": "Send image to VisionAPI", "method": "POST", "body": "{\"url\":\"{{messageImage}}\"}", "contentType": "application/json" } }, { "id": "c9f771fb-06ff-4362-b783-07e4bd3ff53d", "action": "switch", "options": { "cases": [ { "conditions": [ { "variable": "{{isHotDog}}", "operator": "==", "value": "true", "options": { "intent": "custom" } } ], "steps": [ { "id": "02629417-e3ac-4bfa-94a9-83047c250d54", "action": "sendConversationMessage", "options": { "content": { "text": "There is a hotdog on the image. Thank you!", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Send \"we detected a hotdog!\"", "highThroughput": false } } ], "id": "AWzLv6jksY" } ], "defaultCase": { "steps": [ { "id": "b00034ce-db49-4ddf-bf8f-2be006e3fbbd", "action": "sendConversationMessage", "options": { "content": { "text": "Sorry, we didn't detect a hotdog on the image. Please try again.", "image": { "url": "" }, "audio": { "url": "" }, "video": { "url": "" }, "file": { "url": "" }, "location": { "latitude": "", "longitude": "" }, "email": { "from": { "name": "", "address": "" }, "subject": "", "content": {}, "headers": null } }, "type": "text", "recipients": { "conversationIds": [ "{{conversationId}}" ] }, "intent": "replyConversationMessage", "label": "Notify that we didn't detect a hotdog", "highThroughput": false } } ], "id": "mwk5RoiCo" }, "intent": "smsConditional" } }, { "id": "8778c563-c045-4aa6-80e5-4c2a29b38b3f", "action": "endFlow", "options": { "intent": "endFlow" } } ], "id": "iuFXBNrWTr" }, "intent": "smsConditional", "label": "Check if user sent an image" } } ], "published": true, "createdAt": "2020-08-28T18:25:19.665815708Z", "updatedAt": "2020-08-29T01:25:15.614170299Z", "revisionCount": 26 }
Hasil


Sementara ini adalah contoh yang menyenangkan, kami percaya bahwa jenis fungsi ini bisa sangat berguna bagi pengguna kami.
Jika Anda menginginkan lebih banyak fitur seperti ini yang terintegrasi dalam Flows, tulislah kepada tim dukungan kami untuk memberi tahu kami.


Sementara ini adalah contoh yang menyenangkan, kami percaya bahwa jenis fungsi ini bisa sangat berguna bagi pengguna kami.
Jika Anda menginginkan lebih banyak fitur seperti ini yang terintegrasi dalam Flows, tulislah kepada tim dukungan kami untuk memberi tahu kami.


Sementara ini adalah contoh yang menyenangkan, kami percaya bahwa jenis fungsi ini bisa sangat berguna bagi pengguna kami.
Jika Anda menginginkan lebih banyak fitur seperti ini yang terintegrasi dalam Flows, tulislah kepada tim dukungan kami untuk memberi tahu kami.



