2016-11-14 7 views
5

Ich versuche, einen Bot mit LUIS zu bauen, aber es ist viel schwieriger als ich dachte. Bisher habe ich es geschafft, meine LUIS Anwendung und erstellen Sie eine Intent und ein Entity und ich habe ein paar Utterances, die gut zu funktionieren scheinen geschaffen zu erstellen.Microsoft Bot Framework, LUIS und Aktionsparameter

Ich habe dann meinen Bot erstellt und habe es an Luis angeschlossen. Wenn ich meinen Bot teste, funktioniert es wie erwartet. Jetzt zum Spaß. Ich möchte mit Parametern umgehen. Auf Luis fügte ich eine Aktion meine Intent:

enter image description here

Wie Sie habe ich eine Eingabeaufforderung hinzugefügt sehen können. Mein Code in meinem Bot sieht derzeit wie folgt aus:

/// <summary> 
/// Tries to find the category 
/// </summary> 
/// <param name="result">The Luis result</param> 
/// <param name="alarm"></param> 
/// <returns></returns> 
public string TryFindCategory(LuisResult result) 
{ 

    // Variable for the title 
    EntityRecommendation title; 

    // If we find our enenty, return it 
    if (result.TryFindEntity(PiiiCK.Category, out title)) 
     return title.Entity; 

    // Default fallback 
    return null; 
} 

[LuisIntent("Choose category")] 
public async Task ChooseCategory(IDialogContext context, LuisResult result) 
{ 

    // Get our category 
    var category = TryFindCategory(result); 
    var response = "The category you have chosen is not in the system just yet."; 

    switch (category) 
    { 
     case "camera": 
      response = $"You need help buying a { category }, is this correct?"; 
      this.started = true; 
      break; 
     default: 
      if (!string.IsNullOrEmpty(category)) response = $"Sorry, PiiiCK does not deal with { category.Pluralise() } just yet."; 
      break; 
    } 

    // Post our response back to the user 
    await context.PostAsync(response); 

    // Execute the message recieved delegate 
    context.Wait(MessageReceived); 
} 

Ich glaube, Sie können erraten, wo ich mit diesem gehe. Wenn der Benutzer Hilft mir eine Kamera kaufen, wird es Wählen Sie die Kategorie Intent und wird die richtige Entität ausgewählt haben. Aber wenn sie eingeben Helfen Sie mir, kaufen, wird es immer noch auf die richtige Absicht gehen, aber es wird keine Entität haben. Ich möchte, dass mein Bot das sieht und den Text in der Eingabeaufforderung verwendet, die ich in LUIS herstellte, und wenn der Benutzer ihre Einheit auswählt, möchte ich, dass es mit diesem Parameter zu LUIS zurückgeht.

Ich habe keine Ahnung, wie man das macht und ich kann keine Tutorials zu diesem Thema finden. Jede Hilfe wäre wünschenswert (sogar Links!)

+0

Können Sie ein Bild Ihres LUIS-Modells hinzufügen, damit wir Ihre Absicht/Ihren Namen verstehen?Was macht TryFindCategory? –

+0

Momentan gibt es nur 1 Absicht (Kategorie wählen) und 1 Entität (Kategorie). TryFindCategory einfach ein Auszug aus https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Samples/AlarmBot/Dialogs/AlarmLuisDialog.cs Zeile 60, wo ich, anstatt Boolean zu sein, nur die Entity oder Null zurückliefern. – r3plica

Antwort

1

Zunächst müssen Sie sicherstellen, dass Sie in Ihren Äußerungen, die Kategorien enthält, sie als die Kategorie-Entität kennzeichnen. Dies geschieht, indem Sie einfach das Wort/die Wörter auswählen, die Ihre Entität darstellen und dann auf die tatsächliche Kategorie klicken, bevor Sie Ihre Äußerung absenden.

Labeling utterances

, die auf den Aktionsparameter unabhängig ist Sie hinzugefügt. Um nach den Aktionsparametern zu suchen, müssen Sie durch die tatsächliche Absicht navigieren. Die IntentRecommendation hat eine Actions Sammlungseigenschaft; enthält eine Parameters Sammlungseigenschaft.

Action parameters

Etwas hier hinzuzufügen, ist, dass in dem develop Zweig, nur das BotFramework Team Unterstützung für LUIS v2 API hinzugefügt und fügte einige brandneuen capabilitites.

Zum Beispiel, jetzt wird der LuisDialog handeln, wenn Ihre Absicht Parameter erfordert und diese nicht zur Verfügung gestellt werden. In diesem Szenario (das Ihnen scheint), wird der LuisDialog automatically launch eine LuisActionDialog und fragen Sie den Benutzer für den fehlenden Parameter mit der Eingabeaufforderung Nachricht, die Sie im Aktionsparameter definiert.

Bitte beachten Sie, dass dies noch nicht als Nuget-Paket veröffentlicht wurde.

+0

War das hilfreich? –

Verwandte Themen