Legenda
pola
- frasa untuk memanggil perintah suara/teks atau respons yang akan dimainkannilai
- nilai yang ditentukanparams
- parameter yang dilewatkanaction
- tindakan yang akan dilakukanoutput
- hasil data[...]
- data atau parameter opsional
Skrip dialog
Maksud & pola
Menentukan perintah suara/teks untuk memainkan respons
maksud('pola'[, 'polaN'], balas('pola'))
Menentukan perintah suara/teks untuk memainkan respons atau melakukan tindakan
intent('pattern'[, 'patternN'], p => { action })
Menentukan alternatif
intent('frase1|frase2')
Menentukan kata dan frasa opsional
intent('pola (frasa opsional|)')
Fungsi respons
Memainkan respons (jika ada beberapa pola, respons dipilih secara acak)
balas ('pola'[, 'polaN'])
Memainkan respons
p.play('pattern')
Menetapkan pengaturan suara untuk balasan asisten: aksen (en, fr, de, it, ru, es)
, jenis kelamin (pria/wanita)
, jenis suara
, nada suara
, kecepatan suara
p.play([suara(kode, jenis kelamin, jenis, nada, kecepatan), ]'pola')
Menetapkan opsi pemutaran: force:true
(jalankan jika tombol tidak aktif), activate:true
(aktifkan tombol sebelumnya), deactivate:true
(nonaktifkan tombol setelahnya)
p.play('pattern'[, opts(options)])
Mengirim perintah ke aplikasi
p.play({perintah:data})
Slot yang ditentukan pengguna
Tentukan daftar statis nilai yang diharapkan dalam input
$(SLOTNAME nilai1|nilai2) => p.SLOTNAME.value
Berikan label untuk mengklasifikasikan atau mengidentifikasi nilai slot
$(NAMA SLOT nilai1 ~ label1 ~ nilai2 ~ label2) => p.NAMA SLOT.label
Aktifkan pencocokan fuzzy untuk menangkap varian yang serupa
$(NAMA LOT ~ nilai1|nilai2) => p.NAMA LOT.nilai
Membuat slot menjadi opsional
$(NAMA SLOT nilai1|nilai2|)
Menangkap beberapa nilai slot
intent('$(SLOTNAME nilai1|nilai2) dan $(SLOTNAME nilai1|nilai2)') => p.SLOTNAME_ (array), p.SLOTNAME_[0].value, p.SLOTNAME_[1].value
Slot yang telah ditentukan sebelumnya
Menangkap nilai tanggal
$(DATE) => p.DATE.value, p.DATE.moment, p.DATE.luxon
Menangkap nilai waktu
$(TIME) => p.TIME.value, p.TIME.moment
Menangkap angka-angka utama
$(NUMBER) => p.NUMBER.value, p.NUMBER.number
Menangkap nomor urut
$(ORDINAL) => p.ORDINAL.value, p.ORDINAL.number
Lokasi pengambilan gambar
$(LOC) => p.LOC.value
Menangkap nama
$(NAME) => p.NAME.value
Slot dinamis
Menentukan slot dinamis di tingkat proyek
project.name = {en: "value1|value2|value3"}
$(SLOTNAME p: nama) => p.SLOTNAME.value
Tentukan slot dinamis pada tingkat sesi dialog
p.userData.name = {en: "nilai1|nilai2|nilai3"}
$(SLOTNAME u: nama) => p.SLOTNAME.value
Dapatkan data untuk slot dinamis dengan status visual
let nama = ["nilai1|nilai2|nilai3"]
p.visual.data = {en: nama};
$(SLOTNAME v: nama) => p.SLOTNAME.value
Mendefinisikan slot dinamis dalam bentuk singkat
project.name = {en: "value1|value2|value3"}
$(p: nama) => p.SLOTNAME.value
Tentukan label untuk slot dinamis: lihat [Slot yang ditentukan pengguna] (#user-defined-slots).
Mengaktifkan pencocokan fuzzy untuk slot dinamis: lihat [Slot yang ditentukan pengguna] (#user-defined-slots).
Membuat slot dinamis menjadi opsional: lihat Slot yang ditentukan pengguna.
Menangkap beberapa nilai slot: lihat Slot yang ditentukan pengguna.
Slot RegEx
Menangkap kombinasi angka dan/atau huruf
const reg = "([A-Za-z]{1}\\s?){6}"
$(SLOTNAME* ${reg}) => p.SLOTNAME.value
Menangkap setiap masukan dari pengguna
$(SLOTNAME* .+) => p.SLOTNAME.value
Konteks
Mendefinisikan sebuah konteks
let contextName = context(() => { action })
Mengaktifkan sebuah konteks
intent('pattern', p => {..., p.then(contextName)}
Mengoper data ke konteks
p.then(contextName, state: {data: yourData}) => p.state.data
Menyelesaikan sebuah konteks
p.resolve([data:yourData])
Menyetel ulang konteks
p.resetContext()
Tentukan maksud yang akan dicocokkan kapan saja tanpa mengganti konteks saat ini
intent(noctx, 'pattern', ...) atau noContext(() => {intent(...)})
Memainkan prompt untuk masukan yang diharapkan
fallback('pattern1'[, 'patternN'])
Memberi judul sebuah konteks
title('namaKonteks')
Objek yang telah ditentukan sebelumnya
Menyimpan data statis perangkat dan data khusus pengguna yang dikirimkan dari aplikasi klien
authData.data => p.authData.data
Menyimpan data status agar tersedia secara global di lingkup proyek
project.info = {data:yourData} => project.info.data
Menyimpan skor kecocokan maksud
p.score
Menyimpan data yang akan diteruskan antar konteks
p.state.data
Menyimpan data konteks visual yang akan diteruskan dari aplikasi klien dengan setVisualState()
p.visual.data
Menyimpan data status khusus pengguna agar dapat diakses selama sesi dialog
p.userData.data
Panggilan balik yang telah ditentukan sebelumnya
Tentukan tindakan yang akan dilakukan ketika skrip disimpan dan model dialog dibuat
onCreateProject(() => { action })
Tentukan tindakan yang akan dilakukan saat sesi dialog dimulai
onCreateUser((p) => { action })
Tentukan tindakan yang akan dilakukan saat sesi dialog berakhir
onCleanupUser((p) => { action })
Tentukan tindakan yang akan dilakukan saat status visual diatur
onVisualState((p, s) => { action })
Tentukan tindakan yang akan dilakukan ketika peristiwa pengguna dipicu di aplikasi klien: buttonReady
, buttonClicked
, micPermissionPrompt
, micAllowed
, firstActivate
, showPopup
, popupCloseClicked
, recognized
onUserEvent((p, e) => { action })
Mendefinisikan tindakan yang akan dilakukan ketika konteks diaktifkan
onEnter((p) => { action })
Layanan Tanya Jawab
Menentukan URL sumber daya yang akan diindeks
corpus({url: url, depth: depthLevel})
Tentukan korpus teks yang akan digunakan oleh asisten dalam dialog
corpus('text')
Pustaka JS bawaan
Membuat panggilan API
axios, request
Bekerja dengan waktu
moment-timezone, luxon
Bekerja dengan larik, angka, objek, string, dan sebagainya
lodash
Lainnya
Menyediakan daftar petunjuk untuk membantu mengenali istilah tertentu
recognitionHints('hint'[, 'hintN'])
Menulis pesan info ke log Alan Studio
console.log(data)
Menulis pesan kesalahan ke log Alan Studio
console.error(data)
SDK Klien
Metode API Klien
Mengirimkan informasi tentang status visual dari aplikasi klien ke skrip dialog
setVisualState(visualStateData:object)
Mengirim data atau melakukan tindakan tanpa perintah suara/teks
projectAPI.method = function(p, param, callback) {
p.userData.data = param.data;
callback();
};
callProjectApi(method: string, data: object, callback: function)
Memutar pesan teks di aplikasi klien
playText(teks:string)
Mengirim pesan teks ke Alan sebagai masukan dari pengguna
sendText(teks:string)
Menjalankan perintah di aplikasi klien
playCommand(perintah:objek)
Metode API Klien (lanjutan)
Mengaktifkan tombol Alan secara terprogram
mengaktifkan()
Menonaktifkan tombol Alan secara terprogram
menonaktifkan()
Memeriksa status tombol Alan
isActive()
Menghapus tombol Alan dari elemen induk, halaman (didukung di Web, Ionic)
hapus()
Memeriksa status kata bangun (didukung di iOS, Android)
getWakewordEnabled()
Mengatur status kata pengaktifan (didukung di iOS, Android)
setWakewordEnabled(enabled:boolean)
Penangan
// Contoh disediakan untuk platform Web
Menangani perintah yang dikirim dari skrip dialog ke aplikasi klien
onCommand: function (commandData) { action }
Menangani perubahan status tombol Alan
onButtonState: function (e) { action }
Menangani status koneksi ke proyek asisten virtual di Alan Cloud
onConnectionStatus: function (e) { action }
Menangani peristiwa yang diterima dari Alan
onEvent: fungsi (e) { action }