Language Understanding (LUIS) wordt op 1 oktober 2025 buiten gebruik gesteld.
Vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources maken.
Er is nu een nieuwere versie van taalkennis beschikbaar als onderdeel van Azure AI Language.
Conversational Language Understanding (CLU), een functie van Azure AI Language, is de bijgewerkte versie van LUIS.
Zie Natuurlijke taalkennis voor meer informatie over ondersteuning voor taalkennis in de Bot Framework SDK.
De mogelijkheid om te begrijpen wat uw gebruiker gesprekskundig en contextueel betekent, kan een moeilijke taak zijn, maar kan uw bot een natuurlijker gespreksgevoel bieden. Language Understanding (LUIS) is een cloud-API-service waarmee u dit kunt doen, zodat uw bot de intentie van gebruikersberichten kan herkennen, meer natuurlijke taal van uw gebruiker kan toestaan en de gespreksstroom beter kan doorsturen.
In dit onderwerp wordt uitgelegd hoe u LUIS toevoegt aan een vluchtboekingstoepassing om verschillende intenties en entiteiten in gebruikersinvoer te herkennen.
Notitie
De Sdk's voor Bot Framework JavaScript, C# en Python blijven ondersteund, maar de Java SDK wordt buiten gebruik gesteld met definitieve langetermijnondersteuning die eindigt op november 2023.
Bestaande bots die zijn gebouwd met de Java SDK blijven functioneren.
Dit kernbotvoorbeeld toont een voorbeeld van een vluchtboekingstoepassing voor een luchthaven. Er wordt een LUIS-service gebruikt om de gebruikersinvoer te herkennen en de belangrijkste herkende LUIS-intentie te retourneren.
Het taalmodel bevat drie intenties: Book Flight, Cancelen None. LUIS gebruikt deze intenties om te begrijpen wat de gebruiker bedoelde wanneer ze een bericht naar de bot verzenden. Het taalmodel definieert ook entiteiten die LUIS kan extraheren uit de invoer van de gebruiker, zoals de luchthaven van oorsprong of bestemming.
Na elke verwerking van gebruikersinvoer wordt DialogBot de huidige status van beide UserState en ConversationState. Zodra alle vereiste informatie is verzameld, maakt het codevoorbeeld een reservering voor een demovluchtboeking. In dit artikel behandelen we de LUIS-aspecten van dit voorbeeld. De algemene stroom van de steekproef is echter:
OnMembersAddedAsync wordt aangeroepen wanneer een nieuwe gebruiker is verbonden en een welkomstkaart weergeeft.
OnMessageActivityAsync wordt aangeroepen voor elke ontvangen gebruikersinvoer.
De OnMessageActivityAsync module voert het juiste dialoogvenster uit via de Run dialoogvensterextensiemethode. Vervolgens roept het hoofddialoogvenster de LUIS-helper aan om de meest scorende gebruikersintentie te vinden. Als de belangrijkste intentie voor de invoer van de gebruiker 'BookFlight' retourneert, vult de helper informatie in van de gebruiker die LUIS heeft geretourneerd. Daarna wordt het hoofddialoogvenster gestart BookingDialog, waarmee aanvullende informatie wordt verkregen van de gebruiker, zoals:
Origin de oorspronkelijke stad
TravelDate de datum waarop de vlucht moet worden geboekt
Destination de bestemmingsstad
Na elke verwerking van gebruikersinvoer wordt dialogBot de huidige status van beide userState en conversationState. Zodra alle vereiste informatie is verzameld, maakt het codevoorbeeld een reservering voor een demovluchtboeking. In dit artikel behandelen we de LUIS-aspecten van dit voorbeeld. De algemene stroom van de steekproef is echter:
onMembersAdded wordt aangeroepen wanneer een nieuwe gebruiker is verbonden en een welkomstkaart weergeeft.
OnMessage wordt aangeroepen voor elke ontvangen gebruikersinvoer.
De onMessage module voert de mainDialog, die gebruikersinvoer verzamelt, uit.
Vervolgens roept het hoofddialoogvenster de LUIS-helper FlightBookingRecognizer aan om de meest scorende gebruikersintentie te vinden. Als de belangrijkste intentie voor de invoer van de gebruiker 'BookFlight' retourneert, vult de helper informatie in van de gebruiker die LUIS heeft geretourneerd.
Wanneer het antwoord is teruggezet, mainDialog behoudt u informatie voor de gebruiker die door LUIS wordt geretourneerd en wordt gestart bookingDialog. bookingDialog krijgt indien nodig aanvullende informatie van de gebruiker, zoals
destination de bestemmingsstad.
origin de oorspronkelijke stad.
travelDate de datum waarop de vlucht moet worden geboekt.
Na elke verwerking van gebruikersinvoer wordt DialogBot de huidige status van beide UserState en ConversationState.
Zodra alle vereiste informatie is verzameld, maakt het codevoorbeeld een reservering voor een demovluchtboeking.
In dit artikel behandelen we de LUIS-aspecten van dit voorbeeld. De algemene stroom van de steekproef is echter:
onMembersAdded wordt aangeroepen wanneer een nieuwe gebruiker is verbonden en een welkomstkaart weergeeft.
onMessageActivity wordt aangeroepen voor elke ontvangen gebruikersinvoer.
De onMessageActivity module voert het juiste dialoogvenster uit via de run dialoogvensterextensiemethode. Vervolgens roept het hoofddialoogvenster de LUIS-helper aan om de meest scorende gebruikersintentie te vinden. Als de belangrijkste intentie voor de invoer van de gebruiker 'BookFlight' retourneert, vult de helper informatie in van de gebruiker die LUIS heeft geretourneerd. Daarna wordt het hoofddialoogvenster gestart BookingDialog, waarmee aanvullende informatie wordt verkregen van de gebruiker, zoals:
Origin de oorspronkelijke stad
TravelDate de datum waarop de vlucht moet worden geboekt
Destination de bestemmingsstad
Na elke verwerking van gebruikersinvoer wordt DialogBot de huidige status van beide user_state en conversation_state. Zodra alle vereiste informatie is verzameld, maakt het codevoorbeeld een reservering voor een demovluchtboeking. In dit artikel behandelen we de LUIS-aspecten van dit voorbeeld. De algemene stroom van de steekproef is echter:
on_members_added_activity wordt aangeroepen wanneer een nieuwe gebruiker is verbonden en een welkomstkaart weergeeft.
on_message_activity wordt aangeroepen voor elke ontvangen gebruikersinvoer.
De on_message_activity module voert het juiste dialoogvenster uit via de run_dialog dialoogvensterextensiemethode. Vervolgens wordt het hoofddialoogvenster aanroepen LuisHelper om de meest scorende gebruikersintentie te vinden. Als de belangrijkste intentie voor de invoer van de gebruiker 'BookFlight' retourneert, vult de helperfunctie informatie in van de gebruiker die LUIS heeft geretourneerd. Daarna wordt het hoofddialoogvenster gestart BookingDialog, waarmee aanvullende informatie wordt verkregen van de gebruiker, zoals:
destination de bestemmingsstad.
origin de oorspronkelijke stad.
travel_date de datum waarop de vlucht moet worden geboekt.
Selecteer Importeren op de pagina Gespreks-apps in LUIS en importeer vervolgens als JSON.
In het dialoogvenster Nieuwe app importeren:
Kies het bestand FlightBooking.json in de map CognitiveModels van het voorbeeld.
Voer FlightBooking de optionele naam van de app in en selecteer Gereed.
Op de site kan worden weergegeven hoe u een effectieve LUIS-app maakt en dialoogvensters voor samengestelde entiteiten bijwerken. U kunt deze dialoogvensters sluiten en doorgaan.
Train uw app en publiceer uw app vervolgens naar de productieomgeving .
Zie de LUIS-documentatie over het trainen en publiceren van een app voor meer informatie.
Waarom entiteiten gebruiken
Met LUIS-entiteiten kan uw bot gebeurtenissen begrijpen die verder gaan dan standaardintenties. Hierdoor kunt u aanvullende informatie verzamelen van gebruikers, zodat uw bot vragen kan stellen en intelligenter kan reageren. Samen met definities voor de drie LUIS-intenties 'Book Flight', 'Cancel' en 'None', bevat het bestand FlightBooking.json ook een reeks entiteiten zoals 'Van.Airport' en 'Naar.Airport'. Met deze entiteiten kan LUIS aanvullende informatie detecteren en retourneren die is opgenomen in de oorspronkelijke invoer van de gebruiker wanneer ze een nieuwe reisboeking aanvragen.
Waarden verkrijgen om verbinding te maken met uw LUIS-app
Zodra uw LUIS-app is gepubliceerd, kunt u deze openen vanuit uw bot. U moet verschillende waarden vastleggen voor toegang tot uw LUIS-app vanuit uw bot. U kunt deze informatie ophalen met behulp van de LUIS-portal.
Toepassingsgegevens ophalen uit de LUIS.ai-portal
Het instellingenbestand (appsettings.jsonof .envconfig.py) fungeert als de plaats waar alle serviceverwijzingen op één plaats worden samengevoegd. De informatie die u ophaalt, wordt toegevoegd aan dit bestand in de volgende sectie.
Wanneer uw gepubliceerde LUIS-app is geopend, selecteert u het tabblad BEHEREN .
Selecteer het tabblad Instellingen aan de linkerkant en noteer de waarde die wordt weergegeven voor de toepassings-id als <YOUR_APP_ID>.
Selecteer Azure-resources en vervolgens Voorspellingsresource. Noteer de waarde die wordt weergegeven voor Locatie als <YOUR_REGION> en primaire sleutel als <YOUR_AUTHORING_KEY>.
U kunt ook de regio en primaire sleutel voor uw ontwerpresource gebruiken.
Voeg de informatie toe die nodig is voor toegang tot uw LUIS-app, inclusief toepassings-id, ontwerpsleutel en regio in het appsettings.json bestand. In de vorige stap hebt u deze waarden opgehaald uit uw gepubliceerde LUIS-app. De NAAM van de API-host moet de indeling <your region>.api.cognitive.microsoft.comhebben.
Voeg de informatie toe die nodig is voor toegang tot uw LUIS-app, inclusief toepassings-id, ontwerpsleutel en regio in het .env bestand. In de vorige stap hebt u deze waarden opgehaald uit uw gepubliceerde LUIS-app. De NAAM van de API-host moet de indeling <your region>.api.cognitive.microsoft.comhebben.
Voeg de informatie toe die nodig is voor toegang tot uw LUIS-app, inclusief toepassings-id, ontwerpsleutel en regio in het application.properties bestand. In de vorige stap hebt u deze waarden opgehaald uit uw gepubliceerde LUIS-app. De NAAM van de API-host moet de indeling <your region>.api.cognitive.microsoft.comhebben.
Voeg de informatie toe die nodig is voor toegang tot uw LUIS-app, inclusief toepassings-id, ontwerpsleutel en regio in het config.py bestand. In de vorige stap hebt u deze waarden opgehaald uit uw gepubliceerde LUIS-app. De NAAM van de API-host moet de indeling <your region>.api.cognitive.microsoft.comhebben.
Zorg ervoor dat het Microsoft.Bot.Builder.AI.Luis NuGet-pakket is geïnstalleerd voor uw project.
Om verbinding te maken met de LUIS-service, haalt de bot de informatie op die u hebt toegevoegd aan het appsetting.json-bestand. De FlightBookingRecognizer klasse bevat code met uw instellingen uit het appsetting.json-bestand en voert query's uit op de LUIS-service door de methode aan te roepen 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);
}
De FlightBookingEx.cs bevat de logica voor het extraheren van, Naar en TravelDate; het breidt de gedeeltelijke klasse FlightBooking.cs uit die wordt gebruikt om LUIS-resultaten op te slaan bij het aanroepen FlightBookingRecognizer.RecognizeAsync<FlightBooking> van de 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];
}
Als u LUIS wilt gebruiken, moet uw project het botbuilder-ai npm-pakket installeren.
Om verbinding te maken met de LUIS-service, gebruikt de bot de informatie die u aan het .env bestand hebt toegevoegd. De flightBookingRecognizer.js klasse bevat de code waarmee uw instellingen uit het .env bestand worden geïmporteerd en query's worden uitgevoerd op de LUIS-service door de methode aan te roepen recognize() .
dialoogvensters/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;
}
}
De logica voor het extraheren van, Naar en TravelDate wordt geïmplementeerd als helpermethoden in flightBookingRecognizer.js. Deze methoden worden gebruikt na het aanroepen flightBookingRecognizer.executeLuisQuery() vanuit mainDialog.js
Zorg ervoor dat het pakket com.microsoft.bot.bot-ai-luis-v3 is toegevoegd aan uw pom.xml-bestand.
Als u verbinding wilt maken met de LUIS-service, haalt de bot de informatie op die u hebt toegevoegd aan het bestand application.properties. De FlightBookingRecognizer klasse bevat code met uw instellingen uit het bestand application.properties en voert query's uit op de LUIS-service door de methode aan te roepen 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);
}
De FlightBookingRecognizer.cs bevat de logica om van, naar en reisdatum te extraheren en wordt aangeroepen van de MainDialog.java om de resultaten van het Luis-queryresultaat te decoderen.
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;
}
Zorg ervoor dat het botbuilder-ai PyPI-pakket is geïnstalleerd voor uw project.
Om verbinding te maken met de LUIS-service, gebruikt de bot de informatie die u aan het config.py bestand hebt toegevoegd. De FlightBookingRecognizer klasse bevat de code waarmee uw instellingen uit het config.py bestand worden geïmporteerd en query's worden uitgevoerd op de LUIS-service door de methode aan te roepen 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)
De logica voor het extraheren van, aan en travel_date wordt geïmplementeerd als helpermethoden uit de LuisHelper klasse binnen luis_helper.py. Deze methoden worden gebruikt na het aanroepen LuisHelper.execute_luis_query() vanuit 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 is nu geconfigureerd en verbonden voor uw bot.
Voer het voorbeeld lokaal uit op uw computer. Als u instructies nodig hebt, raadpleegt u het bestand voor het README C#-voorbeeld, JS-voorbeeld of Python-voorbeeld.
Typ in de Emulator een bericht zoals 'reizen naar Parijs' of 'van Parijs naar Berlijn'. Gebruik een uiting in het bestand FlightBooking.json voor het trainen van de intentie 'Boekvlucht'.
Als de belangrijkste intentie die door LUIS wordt geretourneerd, wordt omgezet in 'Boekvlucht', stelt uw bot meer vragen totdat er voldoende informatie is opgeslagen om een reisboeking te maken. Op dat moment worden deze boekingsgegevens teruggezet naar uw gebruiker.
Op dit moment wordt de logica van de codebot opnieuw ingesteld en kunt u meer boekingen blijven maken.
Aanvullende informatie
Zie de LUIS-documentatie voor meer informatie over LUIS:
Verschillende onderdelen van de SDK definiëren afzonderlijke entiteitsklassen of -elementen.
Zie Entiteiten en activiteitstypen voor berichtentiteiten.