Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır.
1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız.
Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.
Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür.
Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.
Kullanıcınızın konuşma ve bağlamsal olarak ne anlama geldiğini anlama becerisi zor bir görev olabilir, ancak botunuza daha doğal bir konuşma hissi sağlayabilir. Language Understanding (LUIS), botunuzun kullanıcı iletilerinin amacını tanıyabilmesi, kullanıcınızdan daha doğal bir dil elde edebilmesi ve konuşma akışını daha iyi yönlendirmesi için bunu yapmanızı sağlayan bulut tabanlı bir API hizmetidir.
Bu konu başlığında, kullanıcı girişi içinde yer alan farklı amaçları ve varlıkları tanımak için bir uçuş rezervasyon uygulamasına LUIS ekleme adımları açıklanmaktadır.
Not
Bot Framework JavaScript, C# ve Python SDK'ları desteklenmeye devam edecektir, ancak Java SDK'sı son uzun vadeli destek Kasım 2023'te sona erecek şekilde kullanımdan kaldırılacaktır.
Java SDK ile oluşturulan mevcut botlar çalışmaya devam edecektir.
Yeni bot derlemesi için Microsoft Copilot Studio'yu kullanmayı göz önünde bulundurun ve doğru copilot çözümünü seçme hakkında bilgi edinin.
Bu çekirdek bot örneği, bir havaalanı uçuş rezervasyon uygulaması örneğini gösterir. Kullanıcı girişini tanımak ve en çok tanınan LUIS amacını döndürmek için bir LUIS hizmeti kullanır.
Dil modeli üç amaç içerir: Book Flight, Cancelve None. LUIS, kullanıcının bota ileti gönderirken ne demek istediğini anlamak için bu amaçları kullanır. Dil modeli ayrıca LUIS'in kaynak veya hedef havaalanı gibi kullanıcının girişinden ayıklayabileceğiniz varlıkları da tanımlar.
Kullanıcı girişinin her işlenmesinden sonra hem DialogBot hem ConversationStatede UserState geçerli durumunu kaydeder. Gerekli tüm bilgiler toplandıktan sonra, kodlama örneği bir demo uçuş rezervasyon rezervasyonu oluşturur. Bu makalede, bu örneğin LUIS yönlerini ele alacağız. Ancak, örneğin genel akışı şöyledir:
OnMembersAddedAsync , yeni bir kullanıcı bağlandığında çağrılır ve bir hoş geldiniz kartı görüntüler.
OnMessageActivityAsync , alınan her kullanıcı girişi için çağrılır.
Modül, OnMessageActivityAsync iletişim kutusu uzantısı yöntemi aracılığıyla uygun iletişim kutusunu Run çalıştırır. Ardından ana iletişim kutusu LUIS yardımcısını çağırarak en çok puan alan kullanıcı amacını bulur. Kullanıcı girişinin en üst amacı "BookFlight" değerini döndürürse yardımcı, LUIS'in döndürdüğü kullanıcı bilgilerini doldurur. Bundan sonra ana iletişim kutusu, kullanıcıdan gereken ek bilgileri alan şu şekilde başlatılır BookingDialog:
Origin kaynak şehir
TravelDate uçuş rezervasyonu tarihi
Destination hedef şehir
Kullanıcı girişinin her işlenmesinden sonra hem dialogBot hem conversationStatede userState geçerli durumunu kaydeder. Gerekli tüm bilgiler toplandıktan sonra, kodlama örneği bir demo uçuş rezervasyon rezervasyonu oluşturur. Bu makalede, bu örneğin LUIS yönlerini ele alacağız. Ancak, örneğin genel akışı şöyledir:
onMembersAdded , yeni bir kullanıcı bağlandığında çağrılır ve bir hoş geldiniz kartı görüntüler.
OnMessage , alınan her kullanıcı girişi için çağrılır.
Modül, onMessage kullanıcı girişini toplayan öğesini çalıştırır mainDialog.
Ardından ana iletişim kutusu LUIS yardımcısını FlightBookingRecognizer çağırarak en çok puan alan kullanıcı amacını bulur. Kullanıcı girişinin en üst amacı "BookFlight" değerini döndürürse yardımcı, LUIS'in döndürdüğü kullanıcı bilgilerini doldurur.
Yanıt geri alındıktan sonra LUIS mainDialog tarafından döndürülen kullanıcının bilgilerini korur ve başlatır bookingDialog. bookingDialog kullanıcıdan gerekli ek bilgileri alır, örneğin
destination hedef şehir.
origin kaynak şehir.
travelDate uçuş rezervasyonu için tarih.
Kullanıcı girişinin her işlenmesinden sonra hem DialogBot hem ConversationStatede UserState geçerli durumunu kaydeder.
Gerekli tüm bilgiler toplandıktan sonra, kodlama örneği bir demo uçuş rezervasyon rezervasyonu oluşturur.
Bu makalede, bu örneğin LUIS yönlerini ele alacağız. Ancak, örneğin genel akışı şöyledir:
onMembersAdded , yeni bir kullanıcı bağlandığında çağrılır ve bir hoş geldiniz kartı görüntüler.
onMessageActivity , alınan her kullanıcı girişi için çağrılır.
Modül, onMessageActivity iletişim kutusu uzantısı yöntemi aracılığıyla uygun iletişim kutusunu run çalıştırır. Ardından ana iletişim kutusu LUIS yardımcısını çağırarak en çok puan alan kullanıcı amacını bulur. Kullanıcı girişinin en üst amacı "BookFlight" değerini döndürürse yardımcı, LUIS'in döndürdüğü kullanıcı bilgilerini doldurur. Bundan sonra ana iletişim kutusu, kullanıcıdan gereken ek bilgileri alan şu şekilde başlatılır BookingDialog:
Origin kaynak şehir
TravelDate uçuş rezervasyonu tarihi
Destination hedef şehir
Kullanıcı girişinin her işlenmesinden sonra hem DialogBot hem conversation_statede user_state geçerli durumunu kaydeder. Gerekli tüm bilgiler toplandıktan sonra, kodlama örneği bir demo uçuş rezervasyon rezervasyonu oluşturur. Bu makalede, bu örneğin LUIS yönlerini ele alacağız. Ancak, örneğin genel akışı şöyledir:
on_members_added_activity , yeni bir kullanıcı bağlandığında çağrılır ve bir hoş geldiniz kartı görüntüler.
on_message_activity , alınan her kullanıcı girişi için çağrılır.
Modül, on_message_activity iletişim kutusu uzantısı yöntemi aracılığıyla uygun iletişim kutusunu run_dialog çalıştırır. Ardından ana iletişim kutusu en çok puan alan kullanıcı amacını bulmak için arar LuisHelper . Kullanıcı girişinin en üst amacı "BookFlight" değerini döndürürse yardımcı işlevi, LUIS'in döndürdüğü kullanıcı bilgilerini doldurur. Bundan sonra ana iletişim kutusu, kullanıcıdan gereken ek bilgileri alan şu şekilde başlatılır BookingDialog:
Örneğin CognitiveModels klasöründeki FlightBooking.json dosyasını seçin.
Uygulamanın isteğe bağlı adı olarak girin FlightBooking ve Bitti'yi seçin.
Sitede Etkili bir LUIS uygulaması oluşturma ve Bileşik varlıklarınızı yükseltme iletişim kutuları görüntülenebilir. Bu iletişim kutularını kapatabilir ve devam edebilirsiniz.
Uygulamanızı eğitin ve ardından uygulamanızı üretim ortamında yayımlayın.
Daha fazla bilgi için bir uygulamayı eğitmeye ve yayımlamaya ilişkin LUIS belgelerine bakın.
Varlıkları neden kullanmalısınız?
LUIS varlıkları, botunuzun standart amaçların ötesindeki olayları anlamasını sağlar. Bu, kullanıcılardan ek bilgi toplamanıza olanak tanır, böylece botunuz soru sorabilir ve daha akıllıca yanıt verebilir. 'Book Flight', 'Cancel' ve 'None' adlı üç LUIS amacının tanımlarının yanı sıra, FlightBooking.json dosyası 'From.Airport' ve 'To.Airport' gibi bir dizi varlık da içerir. Bu varlıklar LUIS'in yeni bir seyahat rezervasyonu istediğinde kullanıcının özgün girişinde yer alan ek bilgileri algılamasına ve döndürmesine olanak tanır.
LUIS uygulamanıza bağlanmak için değerleri alma
LUIS uygulamanız yayımlandıktan sonra botunuzdan erişebilirsiniz. LUIS uygulamanıza botunuzun içinden erişmek için birkaç değer kaydetmeniz gerekir. LUIS portalını kullanarak bu bilgileri alabilirsiniz.
LUIS.ai portalından uygulama bilgilerini alma
Ayarlar dosyası (appsettings.json.envveya config.py) tüm hizmet başvurularını tek bir yerde bir araya getirmek için yer görevi görür. Aldığınız bilgiler sonraki bölümde bu dosyaya eklenecektir.
Yayımlanmış LUIS uygulamanız açıkken YÖNET sekmesini seçin.
Sol taraftaki Ayarlar sekmesini seçin ve Uygulama Kimliği için gösterilen değeri YOUR_APP_ID> olarak <kaydedin.
Azure Kaynakları'yı ve ardından Tahmin Kaynağı'yı seçin. Konum <için gösterilen değeri YOUR_REGION> ve Birincil Anahtar'ı YOUR_AUTHORING_KEY> olarak <kaydedin.
Alternatif olarak, yazma kaynağınız için bölge ve birincil anahtarı kullanabilirsiniz.
LUIS uygulamanıza erişmek için gerekli olan uygulama kimliği, yazma anahtarı ve bölge gibi bilgileri dosyaya appsettings.json ekleyin. Önceki adımda, bu değerleri yayımlanan LUIS uygulamanızdan aldıysanız. API ana bilgisayar adı biçiminde <your region>.api.cognitive.microsoft.comolmalıdır.
LUIS uygulamanıza erişmek için gerekli olan uygulama kimliği, yazma anahtarı ve bölge gibi bilgileri dosyaya .env ekleyin. Önceki adımda, bu değerleri yayımlanan LUIS uygulamanızdan aldıysanız. API ana bilgisayar adı biçiminde <your region>.api.cognitive.microsoft.comolmalıdır.
LUIS uygulamanıza erişmek için gerekli olan uygulama kimliği, yazma anahtarı ve bölge gibi bilgileri dosyaya application.properties ekleyin. Önceki adımda, bu değerleri yayımlanan LUIS uygulamanızdan aldıysanız. API ana bilgisayar adı biçiminde <your region>.api.cognitive.microsoft.comolmalıdır.
LUIS uygulamanıza erişmek için gerekli olan uygulama kimliği, yazma anahtarı ve bölge gibi bilgileri dosyaya config.py ekleyin. Önceki adımda, bu değerleri yayımlanan LUIS uygulamanızdan aldıysanız. API ana bilgisayar adı biçiminde <your region>.api.cognitive.microsoft.comolmalıdır.
Projeniz için Microsoft.Bot.Builder.AI.Luis NuGet paketinin yüklü olduğundan emin olun.
BOT, LUIS hizmetine bağlanmak için appsetting.json dosyasına eklediğiniz bilgileri çeker. sınıfı, FlightBookingRecognizer appsetting.json dosyasındaki ayarlarınızla birlikte kod içerir ve yöntemini çağırarak RecognizeAsync LUIS hizmetini sorgular.
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, From, To ve TravelDate değerlerini ayıklama mantığını içerir; öğesinden MainDialog.csçağrılırken FlightBookingRecognizer.RecognizeAsync<FlightBooking> LUIS sonuçlarını depolamak için kullanılan kısmi sınıfı FlightBooking.cs genişletir.
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];
}
LUIS'i kullanmak için projenizin botbuilder-ai npm paketini yüklemesi gerekir.
BOT, LUIS hizmetine bağlanmak için dosyaya .env eklediğiniz bilgileri kullanır. sınıfı, flightBookingRecognizer.js dosyadan .env ayarlarınızı içeri aktaran ve yöntemini çağırarak recognize() LUIS hizmetini sorgulayan kodu içerir.
iletişim kutuları/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;
}
}
From, To ve TravelDate ayıklama mantığı, içinde flightBookingRecognizer.jsyardımcı yöntemler olarak uygulanır. Bu yöntemler, çağrısından flightBookingRecognizer.executeLuisQuery() sonra kullanılır mainDialog.js
BOT, LUIS hizmetine bağlanmak için application.properties dosyasına eklediğiniz bilgileri çeker. sınıfı, FlightBookingRecognizer application.properties dosyasındaki ayarlarınız ile kod içerir ve yöntemini çağırarak recognize LUIS hizmetini sorgular.
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);
}
From, To ve TravelDate'ı ayıklama mantığını içerir ve Luis sorgu sonucunun sonuçlarının kodunu çözmek için dosyasından çağrılırMainDialog.java.FlightBookingRecognizer.cs
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;
}
Projeniz için botbuilder-ai PyPI paketinin yüklü olduğundan emin olun.
BOT, LUIS hizmetine bağlanmak için dosyaya config.py eklediğiniz bilgileri kullanır. sınıfı, FlightBookingRecognizer dosyadan config.py ayarlarınızı içeri aktaran ve yöntemini çağırarak recognize() LUIS hizmetini sorgulayan kodu içerir.
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)
From, To ve travel_date ayıklama mantığı, içindeki luis_helper.pysınıfından LuisHelper yardımcı yöntemler olarak uygulanır. Bu yöntemler, çağrısından LuisHelper.execute_luis_query() sonra kullanılır main_dialog.py
yardımcılar/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 artık botunuz için yapılandırıldı ve bağlandı.
Örneği makinenizde yerel olarak çalıştırın. Yönergelere ihtiyacınız varsa C# Örneği, JS Örneği veya Python Örneği dosyasına bakınREADME.
Öykünücü'ye "paris'e seyahat" veya "Paris'ten berlin'e gitme" gibi bir ileti yazın. Dosya FlightBooking.json bulunan tüm konuşmaları kullanarak "Kitapla uçuş" amacını eğitin.
LUIS'ten döndürülen en önemli amaç "Uçuş rezervasyonu" olarak çözümlenirse, botunuz seyahat rezervasyonu oluşturmak için depolanmış yeterli bilgiye sahip olana kadar daha fazla soru sorar. Bu noktada bu rezervasyon bilgileri kullanıcınıza geri döndürülecektir.
Bu noktada kod botu mantığı sıfırlanır ve daha fazla rezervasyon oluşturmaya devam edebilirsiniz.
Ek bilgi
LUIS hakkında daha fazla bilgi için LUIS belgelerine bakın: