Pemahaman bahasa percakapan (CLU), fitur Bahasa Azure AI, adalah versi LUIS yang diperbarui.
Untuk informasi selengkapnya tentang dukungan pemahaman bahasa di Bot Framework SDK, lihat Pemahaman bahasa alami.
Kemampuan untuk memahami apa arti pengguna Anda secara percakapan dan kontekstual bisa menjadi tugas yang sulit, tetapi dapat memberikan nuansa percakapan yang lebih alami kepada bot Anda. Pemahaman Bahasa (LUIS) adalah layanan API berbasis cloud yang memungkinkan Anda melakukan hal itu sehingga bot Anda dapat mengenali niat pesan pengguna, memungkinkan bahasa yang lebih alami dari pengguna Anda, dan mengarahkan alur percakapan dengan lebih baik.
Topik ini memandu Anda menambahkan LUIS ke aplikasi pemesanan penerbangan untuk mengenali niat dan entitas yang berbeda yang terkandung dalam input pengguna.
Catatan
Bot Framework JavaScript, C#, dan Python SDK akan terus didukung, namun, Java SDK dihentikan dengan dukungan jangka panjang akhir yang berakhir pada November 2023.
Bot yang ada yang dibangun dengan Java SDK akan terus berfungsi.
Sampel bot inti ini menunjukkan contoh aplikasi pemesanan penerbangan bandara. Ini menggunakan layanan LUIS untuk mengenali input pengguna dan mengembalikan niat LUIS yang dikenali teratas.
Model bahasa berisi tiga niat: Book Flight, , Canceldan None. LUIS akan menggunakan niat ini untuk memahami apa yang dimaksud pengguna saat mereka mengirim pesan ke bot. Model bahasa juga mendefinisikan entitas yang dapat diekstrak LUIS dari input pengguna, seperti bandara asal atau tujuan.
Setelah setiap pemrosesan input pengguna, DialogBot menyimpan status saat ini dari dan UserStateConversationState. Setelah semua informasi yang diperlukan dikumpulkan, sampel pengodean membuat reservasi pemesanan penerbangan demo. Dalam artikel ini, kita akan membahas aspek LUIS dari sampel ini. Namun, alur umum sampel adalah:
OnMembersAddedAsync dipanggil ketika pengguna baru tersambung dan menampilkan kartu selamat datang.
OnMessageActivityAsync dipanggil untuk setiap input pengguna yang diterima.
Modul OnMessageActivityAsync menjalankan dialog yang sesuai melalui Run metode ekstensi dialog. Kemudian dialog utama memanggil pembantu LUIS untuk menemukan niat pengguna penilaian teratas. Jika niat teratas untuk input pengguna mengembalikan "BookFlight", pembantu mengisi informasi dari pengguna yang dikembalikan LUIS. Setelah itu, dialog utama memulai BookingDialog, yang memperoleh informasi tambahan sesuai kebutuhan dari pengguna seperti:
Origin kota asal
TravelDate tanggal untuk memesan penerbangan
Destination kota tujuan
Setelah setiap pemrosesan input pengguna, dialogBot menyimpan status saat ini dari dan userStateconversationState. Setelah semua informasi yang diperlukan dikumpulkan, sampel pengodean membuat reservasi pemesanan penerbangan demo. Dalam artikel ini, kita akan membahas aspek LUIS dari sampel ini. Namun, alur umum sampel adalah:
onMembersAdded dipanggil ketika pengguna baru tersambung dan menampilkan kartu selamat datang.
OnMessage dipanggil untuk setiap input pengguna yang diterima.
Modul onMessage menjalankan mainDialog, yang mengumpulkan input pengguna.
Kemudian dialog utama memanggil pembantu FlightBookingRecognizer LUIS untuk menemukan niat pengguna penilaian teratas. Jika niat teratas untuk input pengguna mengembalikan "BookFlight", pembantu mengisi informasi dari pengguna yang dikembalikan LUIS.
Setelah respons kembali, mainDialog pertahankan informasi untuk pengguna yang dikembalikan oleh LUIS dan dimulai bookingDialog. bookingDialog memperoleh informasi tambahan sesuai kebutuhan dari pengguna seperti
destination kota tujuan.
origin kota asal.
travelDate tanggal untuk memesan penerbangan.
Setelah setiap pemrosesan input pengguna, DialogBot menyimpan status saat ini dari dan UserStateConversationState.
Setelah semua informasi yang diperlukan dikumpulkan, sampel pengodean membuat reservasi pemesanan penerbangan demo.
Dalam artikel ini, kita akan membahas aspek LUIS dari sampel ini. Namun, alur umum sampel adalah:
onMembersAdded dipanggil ketika pengguna baru tersambung dan menampilkan kartu selamat datang.
onMessageActivity dipanggil untuk setiap input pengguna yang diterima.
Modul onMessageActivity menjalankan dialog yang sesuai melalui run metode ekstensi dialog. Kemudian dialog utama memanggil pembantu LUIS untuk menemukan niat pengguna penilaian teratas. Jika niat teratas untuk input pengguna mengembalikan "BookFlight", pembantu mengisi informasi dari pengguna yang dikembalikan LUIS. Setelah itu, dialog utama memulai BookingDialog, yang memperoleh informasi tambahan sesuai kebutuhan dari pengguna seperti:
Origin kota asal
TravelDate tanggal untuk memesan penerbangan
Destination kota tujuan
Setelah setiap pemrosesan input pengguna, DialogBot menyimpan status saat ini dari dan user_stateconversation_state. Setelah semua informasi yang diperlukan dikumpulkan, sampel pengodean membuat reservasi pemesanan penerbangan demo. Dalam artikel ini, kita akan membahas aspek LUIS dari sampel ini. Namun, alur umum sampel adalah:
on_members_added_activity dipanggil ketika pengguna baru tersambung dan menampilkan kartu selamat datang.
on_message_activity dipanggil untuk setiap input pengguna yang diterima.
Modul on_message_activity menjalankan dialog yang sesuai melalui run_dialog metode ekstensi dialog. Kemudian dialog utama memanggil LuisHelper untuk menemukan niat pengguna penilaian teratas. Jika niat teratas untuk input pengguna mengembalikan "BookFlight", fungsi pembantu mengisi informasi dari pengguna yang dikembalikan LUIS. Setelah itu, dialog utama memulai BookingDialog, yang memperoleh informasi tambahan sesuai kebutuhan dari pengguna seperti:
Pada halaman Aplikasi percakapan di LUIS, pilih Impor, lalu Impor sebagai JSON.
Dalam dialog Impor aplikasi baru:
Pilih file FlightBooking.json di folder CognitiveModels sampel.
Masukkan FlightBooking sebagai nama opsional aplikasi, dan pilih Selesai.
Situs ini dapat menampilkan Cara membuat aplikasi LUIS yang efektif dan Memutakhirkan dialog entitas komposit Anda. Anda dapat menutup dialog ini dan melanjutkan.
Latih aplikasi Anda, lalu terbitkan aplikasi Anda ke lingkungan produksi .
Untuk informasi selengkapnya, lihat dokumentasi LUIS tentang cara melatih dan menerbitkan aplikasi.
Mengapa menggunakan entitas
Entitas LUIS memungkinkan bot Anda untuk memahami peristiwa di luar niat standar. Ini memungkinkan Anda untuk mengumpulkan informasi tambahan dari pengguna, sehingga bot Anda dapat mengajukan pertanyaan dan merespons dengan lebih cerdas. Bersama dengan definisi untuk tiga niat LUIS 'Book Flight', 'Cancel', dan 'None', file FlightBooking.json juga berisi sekumpulan entitas seperti 'From.Airport' dan 'To.Airport'. Entitas ini memungkinkan LUIS mendeteksi dan mengembalikan informasi tambahan yang terkandung dalam input asli pengguna saat mereka meminta pemesanan perjalanan baru.
Mendapatkan nilai untuk menyambungkan ke aplikasi LUIS Anda
Setelah aplikasi LUIS diterbitkan, Anda dapat mengaksesnya dari bot Anda. Anda harus merekam beberapa nilai untuk mengakses aplikasi LUIS dari dalam bot Anda. Anda dapat mengambil informasi tersebut menggunakan portal LUIS.
Mengambil informasi aplikasi dari portal LUIS.ai
File pengaturan (appsettings.json, .env atau config.py) bertindak sebagai tempat untuk menggabungkan semua referensi layanan di satu tempat. Informasi yang Anda ambil akan ditambahkan ke file ini di bagian berikutnya.
Pilih aplikasi LUIS yang diterbitkan dari luis.ai.
Dengan aplikasi LUIS yang diterbitkan terbuka, pilih tab KELOLA .
Pilih tab Pengaturan di sisi kiri dan rekam nilai yang diperlihatkan untuk ID Aplikasi sebagai <YOUR_APP_ID>.
Pilih Sumber Daya Azure, lalu Sumber Daya Prediksi. Catat nilai yang ditampilkan untuk Lokasi sebagai <YOUR_REGION> dan Kunci Primer sebagai <YOUR_AUTHORING_KEY>.
Atau, Anda dapat menggunakan wilayah dan kunci utama untuk sumber daya penulisan Anda.
Tambahkan informasi yang diperlukan untuk mengakses aplikasi LUIS Anda termasuk ID aplikasi, kunci penulisan, dan wilayah ke appsettings.json dalam file. Pada langkah sebelumnya, Anda mengambil nilai-nilai ini dari aplikasi LUIS yang diterbitkan. Nama host API harus dalam format <your region>.api.cognitive.microsoft.com.
Tambahkan informasi yang diperlukan untuk mengakses aplikasi LUIS Anda termasuk ID aplikasi, kunci penulisan, dan wilayah ke .env dalam file. Pada langkah sebelumnya, Anda mengambil nilai-nilai ini dari aplikasi LUIS yang diterbitkan. Nama host API harus dalam format <your region>.api.cognitive.microsoft.com.
Tambahkan informasi yang diperlukan untuk mengakses aplikasi LUIS Anda termasuk ID aplikasi, kunci penulisan, dan wilayah ke application.properties dalam file. Pada langkah sebelumnya, Anda mengambil nilai-nilai ini dari aplikasi LUIS yang diterbitkan. Nama host API harus dalam format <your region>.api.cognitive.microsoft.com.
Tambahkan informasi yang diperlukan untuk mengakses aplikasi LUIS Anda termasuk ID aplikasi, kunci penulisan, dan wilayah ke config.py dalam file. Pada langkah sebelumnya, Anda mengambil nilai-nilai ini dari aplikasi LUIS yang diterbitkan. Nama host API harus dalam format <your region>.api.cognitive.microsoft.com.
Pastikan bahwa paket NuGet Microsoft.Bot.Builder.AI.Luis diinstal untuk proyek Anda.
Untuk menyambungkan ke layanan LUIS, bot menarik informasi yang Anda tambahkan ke file appsetting.json. Kelas FlightBookingRecognizer berisi kode dengan pengaturan Anda dari file appsetting.json dan meminta layanan LUIS dengan metode panggilan RecognizeAsync .
FlightBookingRecognizer.cs
public class FlightBookingRecognizer : IRecognizer
{
private readonly LuisRecognizer _recognizer;
public FlightBookingRecognizer(IConfiguration configuration)
{
var luisIsConfigured = !string.IsNullOrEmpty(configuration["LuisAppId"]) && !string.IsNullOrEmpty(configuration["LuisAPIKey"]) && !string.IsNullOrEmpty(configuration["LuisAPIHostName"]);
if (luisIsConfigured)
{
var luisApplication = new LuisApplication(
configuration["LuisAppId"],
configuration["LuisAPIKey"],
"https://" + configuration["LuisAPIHostName"]);
// Set the recognizer options depending on which endpoint version you want to use.
// More details can be found in https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3
var recognizerOptions = new LuisRecognizerOptionsV3(luisApplication)
{
PredictionOptions = new Bot.Builder.AI.LuisV3.LuisPredictionOptions
{
IncludeInstanceData = true,
}
};
_recognizer = new LuisRecognizer(recognizerOptions);
}
}
// Returns true if luis is configured in the appsettings.json and initialized.
public virtual bool IsConfigured => _recognizer != null;
public virtual async Task<RecognizerResult> RecognizeAsync(ITurnContext turnContext, CancellationToken cancellationToken)
=> await _recognizer.RecognizeAsync(turnContext, cancellationToken);
public virtual async Task<T> RecognizeAsync<T>(ITurnContext turnContext, CancellationToken cancellationToken)
where T : IRecognizerConvert, new()
=> await _recognizer.RecognizeAsync<T>(turnContext, cancellationToken);
}
FlightBookingEx.cs berisi logika untuk mengekstrak Dari, Ke dan TravelDate; ini memperluas kelas FlightBooking.cs parsial yang digunakan untuk menyimpan hasil LUIS saat memanggil FlightBookingRecognizer.RecognizeAsync<FlightBooking> dari MainDialog.cs.
CognitiveModels\FlightBookingEx.cs
// Extends the partial FlightBooking class with methods and properties that simplify accessing entities in the luis results
public partial class FlightBooking
{
public (string From, string Airport) FromEntities
{
get
{
var fromValue = Entities?._instance?.From?.FirstOrDefault()?.Text;
var fromAirportValue = Entities?.From?.FirstOrDefault()?.Airport?.FirstOrDefault()?.FirstOrDefault();
return (fromValue, fromAirportValue);
}
}
public (string To, string Airport) ToEntities
{
get
{
var toValue = Entities?._instance?.To?.FirstOrDefault()?.Text;
var toAirportValue = Entities?.To?.FirstOrDefault()?.Airport?.FirstOrDefault()?.FirstOrDefault();
return (toValue, toAirportValue);
}
}
// This value will be a TIMEX. And we are only interested in a Date so grab the first result and drop the Time part.
// TIMEX is a format that represents DateTime expressions that include some ambiguity. e.g. missing a Year.
public string TravelDate
=> Entities.datetime?.FirstOrDefault()?.Expressions.FirstOrDefault()?.Split('T')[0];
}
Untuk menggunakan LUIS, proyek Anda perlu menginstal paket npm botbuilder-ai .
Untuk menyambungkan ke layanan LUIS, bot menggunakan informasi yang Anda tambahkan ke .env file. Kelas flightBookingRecognizer.js berisi kode yang mengimpor pengaturan Anda dari .env file dan meminta layanan LUIS dengan metode panggilan recognize() .
dialog/flightBookingRecognizer.js
class FlightBookingRecognizer {
constructor(config) {
const luisIsConfigured = config && config.applicationId && config.endpointKey && config.endpoint;
if (luisIsConfigured) {
// Set the recognizer options depending on which endpoint version you want to use e.g v2 or v3.
// More details can be found in https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3
const recognizerOptions = {
apiVersion: 'v3'
};
this.recognizer = new LuisRecognizer(config, recognizerOptions);
}
}
get isConfigured() {
return (this.recognizer !== undefined);
}
/**
* Returns an object with preformatted LUIS results for the bot's dialogs to consume.
* @param {TurnContext} context
*/
async executeLuisQuery(context) {
return await this.recognizer.recognize(context);
}
getFromEntities(result) {
let fromValue, fromAirportValue;
if (result.entities.$instance.From) {
fromValue = result.entities.$instance.From[0].text;
}
if (fromValue && result.entities.From[0].Airport) {
fromAirportValue = result.entities.From[0].Airport[0][0];
}
return { from: fromValue, airport: fromAirportValue };
}
getToEntities(result) {
let toValue, toAirportValue;
if (result.entities.$instance.To) {
toValue = result.entities.$instance.To[0].text;
}
if (toValue && result.entities.To[0].Airport) {
toAirportValue = result.entities.To[0].Airport[0][0];
}
return { to: toValue, airport: toAirportValue };
}
/**
* This value will be a TIMEX. And we are only interested in a Date so grab the first result and drop the Time part.
* TIMEX is a format that represents DateTime expressions that include some ambiguity. e.g. missing a Year.
*/
getTravelDate(result) {
const datetimeEntity = result.entities.datetime;
if (!datetimeEntity || !datetimeEntity[0]) return undefined;
const timex = datetimeEntity[0].timex;
if (!timex || !timex[0]) return undefined;
const datetime = timex[0].split('T')[0];
return datetime;
}
}
Logika untuk mengekstrak Dari, Ke dan TravelDate diimplementasikan sebagai metode pembantu di dalam flightBookingRecognizer.js. Metode ini digunakan setelah memanggil flightBookingRecognizer.executeLuisQuery() dari mainDialog.js
Pastikan bahwa paket com.microsoft.bot.bot-ai-luis-v3 ditambahkan ke file pom.xml Anda.
Untuk menyambungkan ke layanan LUIS, bot menarik informasi yang Anda tambahkan ke file application.properties. Kelas FlightBookingRecognizer berisi kode dengan pengaturan Anda dari file application.properties dan mengkueri layanan LUIS dengan metode panggilan recognize .
FlightBookingRecognizer.java
/**
* The constructor of the FlightBookingRecognizer class.
*
* @param configuration The Configuration object to use.
*/
public FlightBookingRecognizer(Configuration configuration) {
Boolean luisIsConfigured = StringUtils.isNotBlank(configuration.getProperty("LuisAppId"))
&& StringUtils.isNotBlank(configuration.getProperty("LuisAPIKey"))
&& StringUtils.isNotBlank(configuration.getProperty("LuisAPIHostName"));
if (luisIsConfigured) {
LuisApplication luisApplication = new LuisApplication(
configuration.getProperty("LuisAppId"),
configuration.getProperty("LuisAPIKey"),
String.format("https://%s", configuration.getProperty("LuisAPIHostName"))
);
// Set the recognizer options depending on which endpoint version you want to use.
// More details can be found in
// https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-migration-api-v3
LuisRecognizerOptionsV3 recognizerOptions = new LuisRecognizerOptionsV3(luisApplication);
recognizerOptions.setIncludeInstanceData(true);
this.recognizer = new LuisRecognizer(recognizerOptions);
}
}
/**
* Runs an utterance through a recognizer and returns a generic recognizer result.
*
* @param turnContext Turn context.
* @return Analysis of utterance.
*/
@Override
public CompletableFuture<RecognizerResult> recognize(TurnContext turnContext) {
return this.recognizer.recognize(turnContext);
}
FlightBookingRecognizer.cs berisi logika untuk mengekstrak Dari, Ke dan TravelDate; dan dipanggil dari MainDialog.java untuk mendekode hasil kueri Luis.
FlightBookingRecognizer.java
/**
* Gets the From data from the entities which is part of the result.
*
* @param result The recognizer result.
* @return The object node representing the From data.
*/
public ObjectNode getFromEntities(RecognizerResult result) {
String fromValue = "", fromAirportValue = "";
if (result.getEntities().get("$instance").get("From") != null) {
fromValue = result.getEntities().get("$instance").get("From").get(0).get("text")
.asText();
}
if (!fromValue.isEmpty()
&& result.getEntities().get("From").get(0).get("Airport") != null) {
fromAirportValue = result.getEntities().get("From").get(0).get("Airport").get(0).get(0)
.asText();
}
ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
ObjectNode entitiesNode = mapper.createObjectNode();
entitiesNode.put("from", fromValue);
entitiesNode.put("airport", fromAirportValue);
return entitiesNode;
}
/**
* Gets the To data from the entities which is part of the result.
*
* @param result The recognizer result.
* @return The object node representing the To data.
*/
public ObjectNode getToEntities(RecognizerResult result) {
String toValue = "", toAirportValue = "";
if (result.getEntities().get("$instance").get("To") != null) {
toValue = result.getEntities().get("$instance").get("To").get(0).get("text").asText();
}
if (!toValue.isEmpty() && result.getEntities().get("To").get(0).get("Airport") != null) {
toAirportValue = result.getEntities().get("To").get(0).get("Airport").get(0).get(0)
.asText();
}
ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
ObjectNode entitiesNode = mapper.createObjectNode();
entitiesNode.put("to", toValue);
entitiesNode.put("airport", toAirportValue);
return entitiesNode;
}
/**
* This value will be a TIMEX. And we are only interested in a Date so grab the first result and
* drop the Time part. TIMEX is a format that represents DateTime expressions that include some
* ambiguity. e.g. missing a Year.
*
* @param result A {link RecognizerResult}
* @return The Timex value without the Time model
*/
public String getTravelDate(RecognizerResult result) {
JsonNode datetimeEntity = result.getEntities().get("datetime");
if (datetimeEntity == null || datetimeEntity.get(0) == null) {
return null;
}
JsonNode timex = datetimeEntity.get(0).get("timex");
if (timex == null || timex.get(0) == null) {
return null;
}
String datetime = timex.get(0).asText().split("T")[0];
return datetime;
}
Pastikan paket botbuilder-ai PyPI diinstal untuk proyek Anda.
Untuk menyambungkan ke layanan LUIS, bot menggunakan informasi yang Anda tambahkan ke config.py file. Kelas FlightBookingRecognizer berisi kode yang mengimpor pengaturan Anda dari config.py file dan meminta layanan LUIS dengan metode panggilan recognize() .
flight_booking_recognizer.py
class FlightBookingRecognizer(Recognizer):
def __init__(self, configuration: DefaultConfig):
self._recognizer = None
luis_is_configured = (
configuration.LUIS_APP_ID
and configuration.LUIS_API_KEY
and configuration.LUIS_API_HOST_NAME
)
if luis_is_configured:
# Set the recognizer options depending on which endpoint version you want to use e.g v2 or v3.
# More details can be found in https://docs.microsoft.com/azure/cognitive-services/luis/luis-migration-api-v3
luis_application = LuisApplication(
configuration.LUIS_APP_ID,
configuration.LUIS_API_KEY,
"https://" + configuration.LUIS_API_HOST_NAME,
)
self._recognizer = LuisRecognizer(luis_application)
@property
def is_configured(self) -> bool:
# Returns true if luis is configured in the config.py and initialized.
return self._recognizer is not None
async def recognize(self, turn_context: TurnContext) -> RecognizerResult:
return await self._recognizer.recognize(turn_context)
Logika untuk mengekstrak Dari, Ke dan travel_date diimplementasikan sebagai metode pembantu dari kelas di LuisHelper dalam luis_helper.py. Metode ini digunakan setelah memanggil LuisHelper.execute_luis_query() dari main_dialog.py
helpers/luis_helper.py
class LuisHelper:
@staticmethod
async def execute_luis_query(
luis_recognizer: LuisRecognizer, turn_context: TurnContext
) -> (Intent, object):
"""
Returns an object with preformatted LUIS results for the bot's dialogs to consume.
"""
result = None
intent = None
try:
recognizer_result = await luis_recognizer.recognize(turn_context)
intent = (
sorted(
recognizer_result.intents,
key=recognizer_result.intents.get,
reverse=True,
)[:1][0]
if recognizer_result.intents
else None
)
if intent == Intent.BOOK_FLIGHT.value:
result = BookingDetails()
# We need to get the result from the LUIS JSON which at every level returns an array.
to_entities = recognizer_result.entities.get("$instance", {}).get(
"To", []
)
if len(to_entities) > 0:
if recognizer_result.entities.get("To", [{"$instance": {}}])[0][
"$instance"
]:
result.destination = to_entities[0]["text"].capitalize()
else:
result.unsupported_airports.append(
to_entities[0]["text"].capitalize()
)
from_entities = recognizer_result.entities.get("$instance", {}).get(
"From", []
)
if len(from_entities) > 0:
if recognizer_result.entities.get("From", [{"$instance": {}}])[0][
"$instance"
]:
result.origin = from_entities[0]["text"].capitalize()
else:
result.unsupported_airports.append(
from_entities[0]["text"].capitalize()
)
# This value will be a TIMEX. And we are only interested in a Date so grab the first result and drop
# the Time part. TIMEX is a format that represents DateTime expressions that include some ambiguity.
# e.g. missing a Year.
date_entities = recognizer_result.entities.get("datetime", [])
if date_entities:
timex = date_entities[0]["timex"]
if timex:
datetime = timex[0].split("T")[0]
result.travel_date = datetime
else:
result.travel_date = None
except Exception as exception:
print(exception)
return intent, result
LUIS sekarang dikonfigurasi dan terhubung untuk bot Anda.
Menguji bot
Unduh dan instal Emulator Kerangka Kerja Bot terbaru
Jalankan sampel secara lokal di komputer Anda. Jika Anda memerlukan instruksi, lihat README file untuk Sampel C#, Sampel JS, atau Sampel Python.
Di Emulator, ketik pesan seperti "perjalanan ke paris" atau "pergi dari paris ke berlin". Gunakan ucapan apa pun yang ditemukan dalam file FlightBooking.json untuk melatih niat "Pesan penerbangan".
Jika niat teratas yang dikembalikan dari LUIS diselesaikan ke "Pesan penerbangan", bot Anda akan mengajukan lebih banyak pertanyaan sampai memiliki informasi yang cukup yang disimpan untuk membuat pemesanan perjalanan. Pada titik itu akan mengembalikan informasi pemesanan ini kembali kepada pengguna Anda.
Pada titik ini, logika bot kode akan direset dan Anda dapat terus membuat lebih banyak pemesanan.
Informasi Tambahan
Untuk informasi selengkapnya tentang LUIS, lihat dokumentasi LUIS: