Ekspresi adaptif
BERLAKU UNTUK: SDK v4
Bot menggunakan ekspresi adaptif untuk mengevaluasi hasil kondisi berdasarkan informasi runtime yang tersedia dalam memori untuk dialog atau sistem Pembuatan Bahasa. Evaluasi ini menentukan bagaimana bot Anda bereaksi terhadap input pengguna dan faktor lain yang memengaruhi fungsionalitas bot.
Ekspresi adaptif mengatasi kebutuhan inti ini dengan menyediakan bahasa ekspresi adaptif yang dapat digunakan dengan Bot Framework SDK dan komponen AI percakapan lainnya, seperti Bot Framework Composer, Pembuatan Bahasa, dialog Adaptif, dan templat Kartu Adaptif.
Ekspresi adaptif dapat berisi satu atau beberapa nilai eksplisit, fungsi bawaan, atau fungsi kustom. Konsumen ekspresi adaptif juga memiliki kemampuan untuk menyuntikkan fungsi tambahan yang didukung. Misalnya, semua templat pembuatan bahasa tersedia sebagai fungsi serta fungsi tambahan yang hanya tersedia dalam penggunaan ekspresi adaptif komponen tersebut.
Operator
Ekspresi adaptif mendukung jenis operator dan sintaks ekspresi berikut:
- Aritmatika
- perbandingan
- logis
- operator dan sintaks ekspresi lainnya
Operator | Fungsi | Fungsi bawaan yang setara |
---|---|---|
+ | Penambahan. Contoh: A + B | penambahan |
- | Pengurangan. Contoh: A - B | sub |
unary + | Nilai positif. Contoh: +1, +A | T/A |
Unari- | Nilai negatif. Contoh: -2, -B | T/A |
* | Perkalian. Contoh: A * B | mul |
/ | Pembagian. Contoh: A / B | div |
^ | Exponentiation. Contoh: A ^ B | exp |
% | Modulus. Contoh: A % B | mod |
Variabel
Variabel selalu dirujuk dengan namanya dalam format ${myVariable}
. Mereka dapat dirujuk baik oleh operator pemilih properti dalam bentuk myParent.myVariable
, menggunakan operator pemilihan indeks item seperti di myParent.myList[0]
, atau oleh fungsi getProperty().
Ada dua variabel khusus. [] mewakili daftar kosong, dan {} mewakili objek kosong.
Nilai eksplisit
Nilai eksplisit dapat diapit dalam tanda kutip tunggal 'myExplicitValue' atau tanda kutip ganda "myExplicitValue".
Fungsi
Ekspresi adaptif memiliki satu atau beberapa fungsi. Untuk informasi selengkapnya tentang fungsi yang didukung oleh ekspresi adaptif, lihat artikel referensi fungsi bawaan .
Bot Framework Composer
Bot Framework Composer adalah kanvas penulisan visual sumber terbuka untuk pengembang dan tim lintas-disiplin untuk membangun bot. Composer menggunakan ekspresi adaptif untuk membuat, menghitung, dan memodifikasi nilai. Ekspresi adaptif dapat digunakan dalam definisi templat pembuatan bahasa dan sebagai properti di kanvas penulisan. Seperti yang terlihat dalam contoh di bawah ini, properti dalam memori juga dapat digunakan dalam ekspresi adaptif.
Ekspresi (dialog.orderTotal + dialog.orderTax) > 50
menambahkan nilai properti dialog.orderTotal
dan dialog.orderTax
, dan mengevaluasi ke True
jika jumlahnya lebih besar dari 50 atau False
jika jumlahnya adalah 50 atau kurang.
Baca Alur percakapan dan memori untuk informasi selengkapnya tentang bagaimana ekspresi digunakan dalam memori.
Pembuatan bahasa
Ekspresi adaptif digunakan oleh sistem pembuatan bahasa (LG) untuk mengevaluasi kondisi yang dijelaskan dalam templat LG. Dalam contoh di bawah ini, fungsi bawaan gabungan digunakan untuk mencantumkan recentTasks
semua nilai dalam koleksi.
# RecentTasks
- IF: ${count(recentTasks) == 1}
- Your most recent task is ${recentTasks[0]}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) == 2}
- Your most recent tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) > 2}
- Your most recent ${count(recentTasks)} tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSE:
- You don't have any tasks.
Baca bagian menggunakan fungsi bawaan dalam variasi dari artikel format file .lg untuk informasi selengkapnya.
Templat Kartu Adaptif
Templat Kartu Adaptif dapat digunakan oleh pengembang bot dan teknologi lain untuk memisahkan data dari tata letak dalam Kartu Adaptif. Pengembang dapat menyediakan data sebaris dengan AdaptiveCard
payload, atau pendekatan yang lebih umum untuk memisahkan data dari templat.
Misalnya, Anda memiliki data berikut:
{
"id": "1291525457129548",
"status": 4,
"author": "Matt Hidinger",
"message": "{\"type\":\"Deployment\",\"buildId\":\"9542982\",\"releaseId\":\"129\",\"buildNumber\":\"20180504.3\",\"releaseName\":\"Release-104\",\"repoProvider\":\"GitHub\"}",
"start_time": "2018-05-04T18:05:33.3087147Z",
"end_time": "2018-05-04T18:05:33.3087147Z"
}
Properti message
adalah string berseri JSON. Untuk mengakses nilai dalam string, fungsi bawaan json dapat dipanggil:
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
Dan akan menghasilkan objek berikut:
{
"type": "TextBlock",
"text": "Release-104"
}
Untuk informasi dan contoh selengkapnya, lihat dokumentasi templat kartu adaptif.
Sumber daya tambahan
- Paket NuGet AdaptiveExpressions untuk C#
- Paket ekspresi adaptif npm untuk JavaScript
- Fungsi bawaan yang didukung oleh pustaka ekspresi adaptif
- Referensi C# API
- Referensi API JavaScript