Library klien Node.js Actions on Google adalah cara yang direkomendasikan untuk mengakses dan berinteraksi dengan platform Actions on Google jika Anda membuat web fulfillment fulfillment di JavaScript.
Pengantar
Library klien Node.js adalah library fulfillment untuk Actions on Google yang menyediakan fitur berikut:
- Mendukung semua fitur Actions on Google, termasuk respons multimedia dan teks, login akun, penyimpanan data, transaksi, dan lainnya.
- Memberikan lapisan abstraksi idiomatis dalam JavaScript yang menggabungkan API webhook HTTP/JSON percakapan.
- Menangani detail komunikasi tingkat rendah antara fulfillment Anda dan platform Actions on Google.
- Dapat diinstal menggunakan alat pengelolaan paket yang sudah dikenal, seperti
npm
atauyarn
. - Memungkinkan Anda men-deploy webhook fulfillment Anda dengan mudah di platform komputasi serverless seperti Cloud Functions for Firebase atau AWS Lambda. Anda juga dapat menghosting webhook fulfillment di penyedia layanan cloud atau di lingkungan yang dihosting sendiri dan dikelola sendiri.
- Kompatibel dengan Node.js v6.0.0 dan yang lebih baru.
Anda dapat menggunakan library klien bersama dengan integrasi Dialogflow untuk Actions on Google atau dengan Actions SDK.
Untuk melihat contoh kode lengkap penggunaan library klien, Anda dapat mengunjungi halaman contoh.
Melihat referensi API
Referensi API dihosting di halaman GitHub library klien Actions on Google Node.js.
Anda juga dapat membuat salinan referensi lokal dengan menjalankan perintah berikut dari direktori tempat Anda mendownload kode library klien:
yarn docs
Dokumen yang dihasilkan akan tersedia di folder docs
pada direktori tempat Anda mendownload kode library klien.
Memahami cara kerjanya
Sebelum menggunakan library klien, sebaiknya pahami cara web fulfillment Anda menggunakan library klien untuk memproses permintaan pengguna yang dikirim Actions on Google ke fulfillment Anda.
Saat membuat webhook fulfillment di JavaScript, Anda dapat men-deploy dan menghosting kode Anda di lingkungan komputasi serverless seperti Cloud Functions for Firebase Google atau AWS Lambda. Anda juga dapat menghosting kode sendiri tanpa perlu pekerjaan tambahan menggunakan framework web Express.
Dalam lingkungan runtime, webhook fulfillment dapat memanggil fungsi di library klien untuk memproses permintaan pengguna dan mengirim kembali respons ke Actions on Google untuk dirender menjadi output pengguna.
Tugas utama yang ditangani webhook fulfillment Anda dengan bantuan library klien dirangkum secara singkat di bawah ini:
- Menerima permintaan pengguna: Saat pengguna membuat kueri ke Asisten Google, platform Actions on Google akan mengirimkan permintaan HTTP ke webhook fulfillment Anda; permintaan tersebut mencakup payload JSON yang berisi intent dan data lainnya seperti teks mentah input pengguna, dan kemampuan platform perangkat pengguna. Untuk contoh konten payload JSON lainnya, lihat panduan format webhook Dialogflow dan format webhook percakapan.
- Deteksi format panggilan framework: Untuk framework yang didukung, library klien akan otomatis mendeteksi format panggilan framework (misalnya, jika permintaan berasal dari framework web Express atau AWS Lambda) dan mengetahui cara menangani komunikasi dengan platform Actions on Google dengan lancar.
- Pemrosesan pengendali layanan: Library klien menampilkan API webhook HTTP/JSON percakapan untuk Dialogflow dan Actions SDK sebagai fungsi layanan. Webhook fulfillment Anda menggunakan layanan yang sesuai untuk
membuat instance
app
global. Instanceapp
bertindak sebagai pengendali untuk permintaan HTTP dan memahami protokol khusus layanan. - Pemrosesan percakapan: Library klien mewakili
informasi per percakapan sebagai objek
Conversation
yang dilampirkan ke instanceapp
. Webhook fulfillment Anda dapat menggunakan objekConversation
untuk mengambil informasi status atau data yang disimpan lintas percakapan, mengirim respons kepada pengguna, atau menutup mikrofon. - Pemrosesan middleware: Library klien memungkinkan Anda membuat
middleware layanan percakapan Anda sendiri, yang terdiri dari satu atau beberapa fungsi
yang Anda tentukan bahwa library klien otomatis dijalankan sebelum memanggil
pengendali intent. Webhook fulfillment Anda dapat menggunakan middleware untuk menambahkan properti
atau class helper ke objek
Conversation
. - Pemrosesan pengendali intent: Library klien memungkinkan Anda menentukan pengendali untuk intent yang dipahami webhook fulfillment Anda. Untuk Dialogflow, library klien akan merutekan permintaan ke pengendali intent yang benar dengan
memetakan ke string nama intent yang sama persis seperti yang didefinisikan dalam
konsol Dialogflow. Untuk Actions SDK, rute tersebut dirutekan berdasarkan properti
intent
yang dikirim dari Actions on Google. - Mengirim respons ke pengguna: Untuk membuat respons, webhook fulfillment Anda
memanggil fungsi
Conversation#ask()
. Fungsiask()
dapat dipanggil beberapa kali untuk mem-build respons secara bertahap. Library klien menserialisasi respons ke dalam permintaan HTTP dengan payload JSON dan mengirimkannya ke Actions on Google. Fungsiclose()
memiliki perilaku yang serupa denganask()
, tetapi menutup percakapan.
Menyiapkan lingkungan pengembangan lokal
Sebelum menerapkan webhook fulfillment, pastikan Anda menginstal library klien terlebih dahulu.
Menginstal library klien
Cara termudah untuk menginstal library klien ke lingkungan pengembangan
lokal Anda adalah dengan menggunakan pengelola paket, seperti npm
atau yarn
.
Untuk menginstal, jalankan salah satu perintah berikut dari terminal:
- Jika menggunakan npm:
npm install actions-on-google
- Jika menggunakan benang:
yarn add actions-on-google
Menyiapkan folder project
Bergantung pada tempat Anda berencana men-deploy webhook fulfillment (Google Cloud Functions for Firebase, AWS Lambda, atau Express yang dihosting sendiri), Anda mungkin perlu membuat struktur folder project khusus untuk menyimpan file.
Misalnya, jika menggunakan Cloud Functions for Firebase, Anda dapat menyiapkan folder project yang diperlukan dengan melakukan langkah-langkah yang dijelaskan dalam Menyiapkan Node.js dan Firebase CLI , serta Melakukan inisialisasi Firebase untuk Cloud Functions. Untuk Cloud Functions for Firebase, Anda biasanya menulis webhook fulfillment di file /functions/index.js
.
Membuat instance aplikasi
Actions on Google menggunakan format pesan tertentu untuk bertukar permintaan dan respons dengan webhook fulfillment Anda, bergantung pada apakah Anda membuat Action percakapan menggunakan Dialogflow atau Actions SDK atau membuat Action smart home.
Untuk merepresentasikan berbagai protokol permintaan dan respons ini, library klien menyediakan tiga fungsi layanan:
Protokol webhook percakapan digunakan oleh kedua layanan percakapan (Dialogflow dan Actions SDK), tetapi setiap layanan menggabungkan pesan dengan cara yang berbeda.
Anda menggunakan layanan untuk membuat instance app
. Instance app
mengenkapsulasi
logika status dan fulfillment global untuk webhook Anda serta menangani
komunikasi antara Actions on Google dan fulfillment Anda menggunakan
protokol khusus layanan.
Anda dapat mengonfigurasi properti instance app
dan memanggil metodenya untuk
mengarahkan perilaku webhook fulfillment. Anda juga dapat menghubungkan instance app
dengan mudah ke lingkungan komputasi serverless, seperti Cloud Functions for Firebase, yang menerima fungsi JavaScript sebagai pengendali untuk permintaan HTTP.
Untuk membangun instance app
di webhook fulfillment Anda, ikuti langkah-langkah berikut:
Panggil fungsi
require()
untuk mengimpor modul 'actions-on-google' dan memuat layanan yang Anda inginkan. Misalnya, cuplikan berikut menunjukkan cara memuat layanandialogflow
dan beberapa elemen yang digunakan untuk membuat respons, serta menetapkannya ke konstanta bernamadialogflow
:// Import the service function and various response classes const { dialogflow, actionssdk, Image, Table, Carousel, } = require('actions-on-google');
Di sini,
actions-on-google
merujuk pada dependensi yang ditentukan dalam filepackage.json
di folder project (Anda dapat melihat contoh filepackage.json
ini sebagai contoh).Saat mendapatkan instance
app
, Anda juga dapat menentukan class yang mewakili respons lengkap, intent bantuan, dan fungsi Actions on Google lainnya yang ingin Anda gunakan. Untuk mengetahui daftar lengkap class valid yang dapat Anda muat, lihat dokumentasi referensi untuk modul respons percakapan dan intent bantuan.Buat instance
app
dengan memanggil layanan yang telah Anda muat. Misalnya:const app = dialogflow();
Untuk mengonfigurasi instance
app
saat inisialisasi, Anda dapat memberikan objekoptions
sebagai argumen pertama saat memanggil layanan. (LihatDialogflowOptions
untuk detail selengkapnya.) Misalnya, cuplikan berikut menunjukkan cara mencatat payload JSON mentah ke dalam log dari permintaan atau respons pengguna dengan menyetel flag{ debug: true }
:
const app = dialogflow({ debug: true });
Menetapkan pengendali untuk peristiwa
Untuk memproses Action pada peristiwa terkait Google yang dibuat oleh library klien selama siklus proses interaksi pengguna dengan Action, Anda akan menggunakan library klien untuk membuat pengendali guna memproses permintaan pengguna dan mengirim kembali respons.
Anda dapat membuat fungsi yang berfungsi sebagai pengendali untuk jenis peristiwa utama berikut yang dikenali library klien:
- Peristiwa intent: Intent adalah ID unik yang dikirimkan Actions on Google ke fulfillment Anda setiap kali pengguna meminta beberapa fungsi tertentu. Jika Anda menggunakan Dialogflow, ini sama dengan Dialogflow yang mencocokkan kueri pengguna dengan intent dalam agen Dialogflow Anda.
- Peristiwa error: Saat terjadi error pada JavaScript atau library klien, Anda dapat menggunakan fungsi
catch
instanceapp
untuk memproses pengecualian error dengan tepat. Anda harus mengimplementasikan fungsicatch
tunggal untuk menangani semua error yang penting bagi fulfillment Anda. - Peristiwa penggantian: Peristiwa penggantian terjadi saat pengguna
mengirim kueri yang tidak dapat dikenali Actions on Google. Anda dapat menggunakan fungsi
fallback
instanceapp
untuk mendaftarkan pengendali penggantian generik yang akan dipicu jika tidak ada pengendali intent yang cocok untuk permintaan pemenuhan yang masuk. Anda harus mengimplementasikan fungsifallback
tunggal untuk menangani semua peristiwa penggantian. Jika Anda menggunakan Dialogflow, Dialogflow dapat memicu intent penggantian tertentu saat tidak ada intent lain yang cocok. Anda harus membuat pengendali intent yang sesuai untuk intent penggantian tersebut.
Setiap kali pengguna mengirim permintaan ke Action Anda, instance app
akan membuat
objek Conversation
yang mewakili sesi percakapan tersebut. Objek ini diakses melalui
nama variabel conv
yang diteruskan dalam fungsi pengendali intent sebagai
argumen fungsi pertama. Biasanya Anda akan menggunakan objek conv
dalam pengendali untuk mengirim respons kepada pengguna.
Kueri pengguna juga dapat menyertakan parameter yang dapat diekstrak dan digunakan oleh Action Anda untuk menyaring respons.
- Jika menggunakan Actions SDK, Anda menentukan parameter dalam Paket Action. Untuk melihat contoh cara mengekstrak parameter dari intent, lihat contoh kode Eliza.
- Jika menggunakan Dialogflow, Anda dapat mengakses parameter value melalui
variabel
params
. Untuk melihat contoh penanganan intent dengan parameter di Dialogflow, lihat Parameter dan konteks akses.
Menetapkan pengendali untuk intent
Untuk menetapkan pengendali untuk sebuah intent, panggil fungsi intent()
dari instance app
Anda. Misalnya, jika Anda menggunakan Dialogflow, ini adalah
fungsi
DialogflowApp#intent()
. Dalam argumen, tentukan nama intent dan berikan fungsi pengendali.
Jika menggunakan Dialogflow, Anda tidak perlu menetapkan pengendali untuk setiap intent dalam agen Anda. Sebagai gantinya, Anda dapat memanfaatkan pengendali respons bawaan Dialogflow untuk menangani intent secara otomatis tanpa mengimplementasikan fungsi pengendali Anda sendiri. Misalnya, intent sambutan default dapat didelegasikan ke Dialogflow dengan cara ini.
Contoh berikut menunjukkan pengendali intent untuk intent 'greeting' dan 'bye'. Fungsi pengendali anonim mengambil argumen conv
dan mengirim kembali respons string sederhana kepada pengguna melalui fungsi conv.ask()
:
app.intent('Default Welcome Intent', (conv) => { conv.ask('How are you?'); }); app.intent('bye', (conv) => { conv.close('See you later!'); });
Perhatikan bahwa fungsi close()
mirip dengan ask()
, tetapi fungsi ini menutup
mikrofon dan percakapan selesai.
Untuk mempelajari lebih lanjut cara mem-build pengendali untuk intent, lihat Mem-build pengendali intent.
Menetapkan pengendali untuk peristiwa error
Guna menetapkan pengendali untuk error, panggil fungsi catch()
dari instance app
Anda. (Misalnya, jika Anda menggunakan Dialogflow, ini adalah
fungsi
DialogflowApp#catch()
.)
Contoh berikut menunjukkan pengendali error catch sederhana yang mengirimkan error ke
output konsol dan mengirimkan kembali respons string sederhana untuk meminta pengguna melalui
fungsi conv.ask()
:
app.catch((conv, error) => { console.error(error); conv.ask('I encountered a glitch. Can you say that again?'); });
Menetapkan pengendali untuk peristiwa penggantian
Untuk menetapkan pengendali penggantian umum saat tidak ada intent yang cocok untuk
permintaan fulfillment masuk, panggil fungsi fallback()
dari
instance app
Anda. (Misalnya, jika Anda menggunakan Dialogflow, ini adalah
fungsi
DialogflowApp#fallback()
.)
Contoh berikut menunjukkan pengendali penggantian sederhana yang mengirim kembali respons string sederhana untuk meminta pengguna melalui fungsi conv.ask()
:
app.fallback((conv) => { conv.ask(`I couldn't understand. Can you say that again?`); });
Membangun pengendali intent Anda
Bagian ini membahas beberapa kasus penggunaan umum saat Anda menerapkan pengendali intent dengan library klien. Untuk melihat kecocokan library klien dengan intent, lihat bagian 'Pemrosesan pengendali intent' di Memahami cara kerjanya.
Parameter dan konteks akses
Jika menggunakan Dialogflow, Anda dapat menentukan parameter dan konteks dalam agen Dialogflow untuk mengelola informasi status dan mengontrol alur percakapan.
Parameter berguna untuk mengambil kata, frasa, atau nilai penting dalam kueri pengguna. Dialogflow akan mengekstrak parameter yang sesuai dari kueri pengguna saat runtime, dan Anda dapat memproses parameter value ini di webhook fulfillment untuk menentukan cara merespons pengguna.
Setiap kali pengguna mengirim permintaan ke Action Anda, instance DialogflowApp
akan membuat objek parameters
yang mewakili parameter value yang diekstrak Dialogflow dari
permintaan tersebut. Objek ini diakses melalui nama variabel params
.
Cuplikan berikut menunjukkan cara mengakses properti name
dari
objek params
saat pengguna mengirim permintaan:
app.intent('Default Welcome Intent', (conv, params) => { conv.ask(`How are you, ${params.name}?`); });
Berikut cuplikan alternatif yang memiliki fungsi yang sama. Kurung kurawal ({}
) menjalankan destrukturisasi JavaScript untuk mengambil properti name
dari objek parameters
dan menggunakannya sebagai variabel lokal:
app.intent('Default Welcome Intent', (conv, {name}) => { conv.ask(`How are you, ${name}?`); });
Dalam cuplikan berikut, nama parameternya adalah full-name
, tetapi didestrukturisasi dan ditetapkan ke variabel lokal yang disebut name
:
app.intent('Default Welcome Intent', (conv, {'full-name': name}) => { conv.ask(`How are you, ${name}?`); });
Konteks adalah fitur lanjutan Dialogflow. Anda dapat menggunakan konteks untuk mengelola status, alur, dan
cabang percakapan. Library klien memberikan akses ke konteks melalui
objek
DialogflowConversation#contexts
. Cuplikan berikut menunjukkan cara menetapkan konteks secara terprogram
di webhook fulfillment Anda dan cara mengambil objek konteks:
app.intent('intent1', (conv) => { const lifespan = 5; const contextParameters = { color: 'red', }; conv.contexts.set('context1', lifespan, contextParameters); // ... conv.ask('...'); }); app.intent('intent2', (conv) => { const context1 = conv.contexts.get('context1'); const contextParameters = context1.parameters; // ... conv.ask('...'); }); app.intent('intent3', (conv) => { conv.contexts.delete('context1'); // ... conv.ask('...'); });
Mengakses hasil intent helper
Untuk memudahkan, library klien menyediakan class intent helper yang menggabungkan jenis umum data pengguna yang sering diminta Action. Ini mencakup class yang mewakili hasil untuk berbagai intent bantuan Actions on Google. Anda menggunakan intent bantuan saat ingin Asisten Google menangani bagian percakapan tempat pengguna harus memberikan input untuk melanjutkan percakapan.
Contoh: Hasil penunjang konfirmasi
Intent helper konfirmasi memungkinkan
Anda meminta konfirmasi ya/tidak dari pengguna dan mendapatkan jawaban yang dihasilkan.
Cuplikan berikut menunjukkan cara webhook Anda dapat menyesuaikan responsnya berdasarkan hasil yang ditampilkan oleh intent helper konfirmasi. Untuk
contoh yang lebih lengkap, lihat
dokumentasi referensi class
Confirmation
.
// Create Dialogflow intent with `actions_intent_CONFIRMATION` event app.intent('get_confirmation', (conv, input, confirmation) => { if (confirmation) { conv.close(`Great! I'm glad you want to do it!`); } else { conv.close(`That's okay. Let's not do it now.`); } });
Contoh: Hasil carousel
Cuplikan berikut menunjukkan cara webhook fulfillment Anda dapat menyesuaikan responsnya
berdasarkan input pengguna untuk
carousel. Komponen carousel memungkinkan
Action Anda menyajikan pilihan opsi yang dapat dipilih pengguna. Untuk contoh
yang lebih lengkap, lihat dokumentasi referensi class
Carousel
.
app.intent('carousel', (conv) => { conv.ask('Which of these looks good?'); conv.ask(new Carousel({ items: { car: { title: 'Car', description: 'A four wheel vehicle', synonyms: ['automobile', 'vehicle'], }, plane: { title: 'Plane', description: 'A flying machine', synonyms: ['aeroplane', 'jet'], } } })); }); // Create Dialogflow intent with `actions_intent_OPTION` event app.intent('get_carousel_option', (conv, input, option) => { if (option === 'one') { conv.close(`Number one is a great choice!`); } else { conv.close(`Number ${option} is a great choice!`); } });
Mengonfigurasi objek respons percakapan
Library klien menyediakan class respons percakapan yang mewakili respons lengkap atau elemen multimedia yang dapat dikirim Action Anda. Biasanya, Anda mengirimkan respons atau elemen ini saat pengguna tidak perlu memberikan input apa pun untuk melanjutkan percakapan.
Contoh: Gambar
Cuplikan berikut menunjukkan cara webhook fulfillment Anda dapat mengirim
Image
dalam respons yang akan dilampirkan ke respons BasicCard
secara otomatis oleh
library:
app.intent('Default Welcome Intent', (conv) => { conv.ask('Hi, how is it going?'); conv.ask(`Here's a picture of a cat`); conv.ask(new Image({ url: '/web/fundamentals/accessibility/semantics-builtin/imgs/160204193356-01-cat-500.jpg', alt: 'A cat', })); });
Melakukan panggilan fungsi asinkron
Library klien Node.js Actions on Google dirancang untuk pemrograman asinkron. Pengendali intent Anda dapat menampilkan promise yang di-resolve saat web fulfillment Anda selesai menghasilkan respons.
Cuplikan berikut menunjukkan cara melakukan panggilan fungsi asinkron untuk menampilkan objek promise, lalu merespons dengan pesan jika webhook fulfillment Anda menerima intent 'greeting'. Dalam cuplikan ini, promise ini memastikan bahwa web fulfillment Anda menampilkan respons percakapan hanya setelah promise untuk panggilan API eksternal telah diselesaikan.
Dalam contoh ini, kita menggunakan API palsu untuk mendapatkan data cuaca.
/** * Make an external API call to get weather data. * @return {Promise<string>} */ const forecast = () => { // ... }; app.intent('Default Welcome Intent', (conv) => { return forecast().then((weather) => { conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); }); });
Cuplikan kode yang disederhanakan berikut memiliki efek yang sama, tetapi menggunakan fitur async
await
yang diperkenalkan dalam ECMA 2017 (Node.js versi 8). Untuk menggunakan kode ini dengan Cloud Functions for Firebase, pastikan Anda menggunakan versi firebase-tools yang benar dan memiliki konfigurasi yang benar.
app.intent('Default Welcome Intent', async (conv) => { const weather = await forecast(); conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); });
Menyimpan data percakapan
Library klien memungkinkan webhook fulfillment Anda menyimpan data dalam percakapan untuk digunakan di masa mendatang. Objek utama yang dapat Anda gunakan untuk penyimpanan data meliputi:
DialogflowConversation#data
atauActionsSdkConversation#data
: Menyimpan data dalam format JSON selama durasi satu sesi percakapan antara pengguna dan Action Anda.Conversation#user.storage
: Menyimpan data dalam format JSON di beberapa sesi percakapan.
Cuplikan berikut menunjukkan cara webhook fulfillment Anda dapat menyimpan data di
properti arbitrer yang Anda tentukan (someProperty
) dan melampirkannya ke
objek
Conversation#user.storage
. Untuk contoh yang lebih lengkap, lihat
dokumentasi referensi class
Conversation#user.storage
.
app.intent('Default Welcome Intent', (conv) => { conv.user.storage.someProperty = 'someValue'; conv.ask('...'); });
Anda dapat menggunakan objek Conversation#user
untuk mendapatkan informasi tentang pengguna, termasuk ID string dan
informasi pribadi. Kolom tertentu seperti conv.user.name.display
dan conv.user.email
masing-masing memerlukan permintaan conv.ask(new Permission)
untuk NAME dan conv.ask(new SignIn)
untuk Login dengan Google.
const {Permission} = require('actions-on-google'); app.intent('Default Welcome Intent', (conv) => { if (conv.user.last.seen) { conv.ask('Welcome back! How are you?'); } else { conv.ask('Nice to meet you! How are you doing?'); } }); app.intent('permission', (conv) => { conv.ask(new Permission({ context: 'To greet you personally', permissions: 'NAME', })); }); // Create Dialogflow intent with `actions_intent_PERMISSION` event app.intent('get_permission', (conv, input, granted) => { if (granted) { conv.close(`Hi ${conv.user.name.display}!`); } else { // User did not grant permission conv.close(`Hello!`); } });
Penskalaan dengan middleware
Anda dapat memperluas library klien melalui middleware.
Lapisan middleware terdiri dari satu atau beberapa fungsi yang Anda tentukan, yang otomatis dijalankan oleh library klien sebelum memanggil pengendali intent. Penggunaan lapisan middleware memungkinkan Anda mengubah instance Conversation
dan menambahkan fungsi tambahan.
Layanan Dialogflow dan Actions SDK mengekspos fungsi app.middleware()
yang memungkinkan Anda menambahkan properti atau class helper ke instance
Conversation
.
Cuplikan berikut menunjukkan contoh cara menggunakan middleware:
class Helper { constructor(conv) { this.conv = conv; } func1() { this.conv.ask(`What's up?`); } } app.middleware((conv) => { conv.helper = new Helper(conv); }); app.intent('Default Welcome Intent', (conv) => { conv.helper.func1(); });
Mengekspor aplikasi
Untuk mengekspos webhook fulfillment Anda bagi framework web atau platform komputasi serverless,
Anda harus mengekspor objek app
sebagai webhook yang dapat diakses secara publik. Library klien langsung mendukung deployment ke sejumlah lingkungan.
Cuplikan berikut menunjukkan cara mengekspor app
dalam runtime yang berbeda:
Contoh: Cloud Functions for Firebase
const functions = require('firebase-functions'); // ... app code here exports.fulfillment = functions.https.onRequest(app);
Contoh: Editor inline Dialogflow
const functions = require('firebase-functions'); // ... app code here // Exported function name must be 'dialogflowFirebaseFulfillment' exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
Contoh: Server Express yang dihosting sendiri (sederhana)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here express().use(bodyParser.json(), app).listen(3000);
Contoh: Server Express yang dihosting sendiri (beberapa rute)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here const expressApp = express().use(bodyParser.json()); expressApp.post('/fulfillment', app); expressApp.listen(3000);
Contoh: Gateway AWS Lambda API
// ... app code here exports.fulfillment = app;