Alan AI


Legenda

  • pola - frasa untuk memanggil perintah suara/teks atau respons yang akan dimainkan
  • nilai - nilai yang ditentukan
  • params - parameter yang dilewatkan
  • action - tindakan yang akan dilakukan
  • output - 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 }

Lihat juga