Tambahkan 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.

Tambahkan kondisi ke percakapan cabang

Anda dapat menggunakan percabangan bersyarat untuk mengontrol jalur yang diambil pelanggan Anda melalui percakapan dengan bot Anda. Anda dapat mem-cabang percakapan berdasarkan nilai slot, atribut sesi, isi mode input dan bidang transkrip input, atau respons dari Amazon Kendra.

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

Saat Anda mendefinisikan cabang, Anda menentukan tindakan yang harus dilakukan 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 kondisional memiliki ekspresi Boolean yang harus dipenuhi untuk Amazon Lex V2 untuk mengikuti cabang. Ada operator perbandingan dan Boolean, fungsi, dan operator kuantifier yang dapat Anda gunakan untuk kondisi Anda. Misalnya, kondisi berikut mengembalikan nilai true jika slot {age} kurang dari 24.

{age} < 24

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

{toppings} CONTAINS "pineapple"

Anda dapat menggabungkan beberapa operator perbandingan dengan operator Boolean untuk kondisi yang lebih kompleks. Misalnya, kondisi berikut mengembalikan nilai 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 dan fungsi cabang bersyarat.

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, menyetel 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 menggunakan{slotName}. Untuk mereferensikan nilai atribut sesi, Anda menggunakan[attribute]. Untuk mode input dan transkrip input, Anda menggunakan $.inputMode dan$.inputTranscript.

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

  • Ekspresi apa pun yang mereferensikan atribut yang belum disetel diperlakukan sebagai tidak valid, dan tidak dievaluasi.

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

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

  • String — string dibandingkan berdasarkan representasi ASCII mereka. Perbandingannya tidak peka huruf besar/kecil.

  • Nomor — slot berbasis angka 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 jangka waktu, periode yang lebih pendek dianggap lebih kecil.

Operator Boolean

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

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

Anda dapat menggunakan operator Boolean berikut:

  • DAN (&&)

  • ATAU (||)

  • TIDAK (!)

Operator kuantifier

Operator kuantifier mengevaluasi elemen urutan dan menentukan apakah satu atau lebih elemen memenuhi kondisi.

  • CONTAINS — menentukan apakah nilai yang ditentukan terkandung dalam slot multi-nilai dan mengembalikan true jika itu. Misalnya, {toppings} CONTAINS "pineapple" mengembalikan true jika pengguna memesan nanas di 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.count () — menghitung jumlah nilai dalam slot multi-nilai.

    Misalnya, jika slot {toppings} berisi nilai “pepperoni, nanas”:

    fn.COUNT({toppings}) = 2

  • fn.is_set () — nilai true jika slot, atribut sesi, atau atribut permintaan diatur dalam sesi saat ini.

    Berdasarkan contoh sebelumnya:

    fn.IS_SET({toppings})

  • fn.length () - nilai adalah panjang dari nilai atribut sesi, nilai slot, atau atribut slot yang diatur dalam sesi saat ini. Fungsi ini tidak mendukung slot multi-nilai atau slot komposit.

    Contoh:

    Jika slot {credit-card-number} berisi nilai “123456781234":

    fn.LENGTH({credit-card-number}) = 12

Contoh ekspresi bersyarat

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

Tipe nilai Kasus penggunaan Ekspresi bersyarat
Slot kustom pizzaSizenilai slot sama dengan besar {pizzaSize} = "large"
Slot kustom pizzaSizesama dengan besar atau sedang {pizzaSize} = "large"ATAU {pizzaSize} = "medium"
Slot kustom Ekspresi dengan () dan AND/OR {pizzaType} = "pepperoni"ATAU {pizzaSize} = "medium" ATAU {pizzaSize} = "small"
Slot khusus (Slot Multi-Nilai) Periksa apakah salah satu toppingnya adalah Onion {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 bukan 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 persentase nilai slot 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 Waktunya 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 bersyarat dengan transkripsi Ekspresi bersyarat menggunakan transkripsi jalur JSON $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence > 0.5
Tetapkan atribut sesi Atur atribut sesi menggunakan transkripsi jalur JSON dan nilai slot [sessionAttribute] = "$.transcriptions..." AND [sessionAttribute] = "{<slotName>}"
Tetapkan nilai slot Tetapkan 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 saat runtime. sessionAttributemengacu pada nama atribut sesi yang ditetapkan oleh pelanggan pada waktu pembuatan.