Menambahkan kondisi ke percakapan cabang - Amazon Lex

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menambahkan kondisi ke percakapan cabang

Anda dapat menggunakanpercabangan bersyaratuntuk mengontrol jalur yang diambil pelanggan Anda melalui percakapan dengan bot Anda. Anda dapat melakukan cabang percakapan berdasarkan nilai slot, atribut sesi, isi mode input dan bidang transkrip masukan, atau respons dari Amazon Kendra.

Anda dapat menentukan hingga empat cabang. Setiap cabang memiliki kondisi yang harus dipenuhi agar Amazon Lex V2 mengikuti cabang tersebut. Jika tidak ada cabang yang memenuhi kondisinya, cabang default diikuti.

Saat Anda menentukan cabang, Anda menentukan tindakan yang harus diambil Amazon Lex V2 jika kondisi yang sesuai dengan cabang tersebut dievaluasi menjadi true. Anda dapat menentukan salah satu tindakan berikut:

  • Tanggapan yang dikirim ke pengguna.

  • Nilai slot untuk diterapkan ke slot.

  • nilai atribut sesi untuk sesi saat ini.

  • Langkah selanjutnya dalam percakapan. Untuk informasi selengkapnya, lihat Membuat jalur percakapan.


                Anda dapat memilih opsi yang berbeda untuk percabangan bersyarat.

Setiap cabang bersyarat memiliki ekspresi Boolean yang harus dipenuhi agar Amazon Lex V2 mengikuti cabang. Ada operator perbandingan dan Boolean, fungsi, dan operator kuantifier yang dapat Anda gunakan untuk kondisi Anda. Misalnya, kondisi berikut mengembalikan true jika {age} slot kurang dari 24.

{age} < 24

Kondisi berikut mengembalikan true jika {topping} slot multi-nilai berisi kata “nanas”.

{toppings} CONTAINS "pineapple"

Anda dapat menggabungkan beberapa operator perbandingan dengan operator Boolean untuk kondisi yang lebih kompleks. Misalnya, kondisi berikut mengembalikan true jika nilai slot {make} adalah “Honda” dan nilai slot {model} adalah “Civic”. Gunakan tanda kurung untuk mengatur urutan evaluasi.

({make} = "Honda") AND ({model} = "Civic")

Topik berikut memberikan rincian tentang operator cabang kondisional dan fungsi.

catatan

Pada 17 Agustus 2022, Amazon Lex V2 merilis perubahan pada cara percakapan dikelola dengan pengguna. Perubahan ini memberi Anda kontrol lebih besar atas jalur yang diambil pengguna melalui percakapan. Untuk informasi selengkapnya, lihat Memahami manajemen alur percakapan. Bot yang dibuat sebelum 17 Agustus 2022 tidak mendukung pesan kait kode dialog, mengatur nilai, mengonfigurasi langkah selanjutnya, dan menambahkan kondisi.

Operator perbandingan

Amazon Lex V2 mendukung operator perbandingan berikut untuk kondisi:

  • Sama dengan (=)

  • Tidak sama (! =)

  • Kurang dari (<)

  • Kurang dari atau sama (<=)

  • Lebih besar dari (>)

  • Lebih besar dari atau sama (>=)

Saat menggunakan operator perbandingan, ia menggunakan aturan berikut.

  • Sisi kiri harus menjadi referensi. Misalnya, untuk referensi nilai slot, Anda gunakan{slotName}. Untuk mereferensikan nilai atribut sesi, Anda menggunakan[attribute]. Untuk mode input dan transkrip input, Anda gunakan$.inputModedan$.inputTranscript.

  • Sisi kanan harus konstan dan tipe yang sama dengan sisi kiri.

  • Setiap ekspresi referensi atribut yang belum ditetapkan diperlakukan sebagai tidak valid, dan tidak dievaluasi.

  • Bila Anda membandingkan slot multi-nilai, nilai yang digunakan adalah daftar dipisahkan koma dari semua nilai ditafsirkan.

Perbandingan didasarkan pada jenis slot referensi. Mereka diselesaikan sebagai berikut:

  • String- string dibandingkan berdasarkan representasi ASCII mereka. Perbandingannya adalah case-sensitive.

  • Angka- slot berbasis nomor dikonversi dari representasi string ke angka dan kemudian dibandingkan.

  • Tanggal/Waktu- slot berbasis waktu dibandingkan berdasarkan deret waktu. Tanggal atau waktu sebelumnya dianggap lebih kecil. Untuk durasi, periode yang lebih pendek dianggap lebih kecil.

Operator Boolean

Amazon Lex V2 mendukung operator Boolean untuk menggabungkan operator perbandingan. Mereka membiarkan Anda membuat pernyataan yang mirip dengan berikut ini:

({number} >= 5) AND ({number} <= 10)

Anda dapat menggunakan operator Boolean berikut:

  • DAN (&&)

  • ATAU (||)

  • TIDAK (!)

operator Quantifier

operator Quantifier mengevaluasi unsur-unsur dari urutan dan menentukan apakah satu atau lebih elemen memenuhi kondisi.

  • MENGANDUNG- menentukan apakah nilai yang ditentukan terkandung dalam slot multi-dihargai dan mengembalikan nilai true jika itu. Sebagai contoh,{toppings} CONTAINS "pineapple"mengembalikan nilai true jika pengguna memerintahkan nanas pada pizza mereka.

Fungsi

Fungsi harus diawali dengan stringfn.. Argumen untuk fungsi adalah referensi ke slot, atribut sesi, atau atribut permintaan. Amazon Lex V2 menyediakan dua fungsi untuk mendapatkan informasi dari nilai slot, sessionAttribute, atau requestAttribute.

  • Fn.menghitung ()- menghitung jumlah nilai dalam slot multi-nilai.

    Misalnya, jika slotnya{toppings}mengandung nilai “pepperoni, nanas”:

    fn.COUNT({toppings}) = 2

  • Fn.is_set ()- nilai benar jika slot, atribut sesi, atau atribut permintaan diatur dalam sesi saat ini.

    Berdasarkan contoh sebelumnya:

    fn.IS_SET({toppings})

Contoh ekspresi kondisional

Berikut adalah beberapa contoh ekspresi kondisional. CATATAN:$.merepresentasikan titik masuk ke respons Amazon Lex JSON. Nilai berikut$.akan diurai dalam respons Amazon Lex untuk mengambil nilai. Ekspresi kondisional menggunakan referensi jalur JSON ke blok transkripsi dalam respons Amazon Lex hanya akan didukung di lokal yang sama yang mendukung skor transkripsi ASR.

Tipe nilai Kasus penggunaan Ekspresi bersyarat
Slot khusus pizzaSizeNilai slot sama dengan besar {pizzaSize} = "large"
Slot khusus pizzaSizesama dengan besar atau sedang {pizzaSize} = "large"ATAU{pizzaSize} = "medium"
Slot khusus Ekspresi dengan()danAND/OR {pizzaType} = "pepperoni"ATAU{pizzaSize} = "medium"ATAU{pizzaSize} = "small"
Slot khusus (Slot Multi-Nilai) Periksa apakah salah satu topping adalah Bawang {toppings} CONTAINS "Onion"
Slot khusus (Slot Multi-Nilai) Jumlah topping lebih dari 3 fn.COUNT({topping}) > 2
AMAZON.AlphaNumeric bookingIDadalah ABC123 {bookingID} = "ABC123"
AMAZON.Number nilai slot usia lebih besar dari 30 {age} > 30
AMAZON.Number nilai slot usia sama dengan 10 {age} = 10
AMAZON.Date dateOfBirthnilai slot sebelum 1990 {dateOfBirth} < "1990-10-01"
AMAZON.State destinationStateNilai slot sama dengan Washington {destinationState} = "washington"
AMAZON.Country destinationCountrynilai slot tidak Amerika Serikat {destinationCountry} != "united states"
AMAZON.FirstName firstNameNilai slot adalah John {firstName} = "John"
AMAZON.PhoneNumber phoneNumbernilai slot adalah 716767891932 {phoneNumer} = 716767891932
AMAZON.Percentage Periksa apakah nilai slot persentase lebih besar dari atau sama dengan 78 {percentage} >= 78
AMAZON.EmailAddress emailAddressnilai slot adalah userA@hmail.com {emailAddress} = "userA@hmail.com"
AMAZON.LastName lastNameNilai slot adalah Doe {lastName} = "Doe"
AMAZON.City Nilai slot kota sama dengan Seattle {city} = "Seattle"
AMAZON.Time Waktu setelah jam 8 malam {time} > "20:00"
AMAZON.StreetName streetNamenilai slot adalah Boren Avenue {streetName} = "boren avenue"
AMAZON.Duration travelDurationNilai slot kurang dari 2 jam {travelDuration} < P2H
Modus masukan Mode input adalah ucapan $.inputMode = "Speech"
Transkrip masukan Transkrip masukan sama dengan “Saya ingin pizza besar” $.inputTranscript = "I want a large pizza"
Atribut sesi periksa atribut customer_subscription_type [customer_subcription_type] = "yearly"
Atribut permintaan periksa bendera retry_enabled ((retry_enabled)) = "TRUE"
Tanggapan Kendra Tanggapan Kendra berisi FAQ fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1)))
Ekspresi kondisional dengan transkripsi Ekspresi kondisional menggunakan transkripsi jalur JSON $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence > 0.5
Atur atribut sesi Atur atribut sesi menggunakan transkripsi jalur JSON dan nilai slot [sessionAttribute] = "$.transcriptions..." AND [sessionAttribute] = "{<slotName>}"
Tetapkan nilai slot Mengatur nilai slot menggunakan atribut sesi dan transkripsi jalur JSON {slotName} = [<sessionAttribute>] AND {slotName} = "$.transcriptions..."
catatan

slotNamemengacu pada nama slot di bot Amazon Lex. Jika slot tidak diselesaikan (null), atau jika slot tidak ada, maka tugas diabaikan pada saat runtime.sessionAttributemengacu pada nama atribut sesi yang ditetapkan oleh pelanggan pada waktu pembuatan.