2016-11-13 3 views
3

Man bin ich habe Probleme damit. Ich versuche mit Hilfe von Luis einen einfachen Bot zu erstellen. Ich habe es geschafft, einen Bot zu erstellen und hostet es auf azurblau, ich habe auch eine Absicht in LUIS und Einheit erstellt. Ich habe einige Äußerungen erstellt und diese Seite funktioniert gut.Microsoft Bot Framework mit LUIS

ich dann erstellt von LuisDialog in C#. Ich musste Cognitive Services API Subskription in Azure erstellen und ich habe auf 2 Schlüssel kopiert, die es in meine LuisDialog generiert hatte.

My Dialog sieht wie folgt aus:

/// <summary> 
/// Entities for the PiiiCK LUIS model. 
/// </summary> 
public static partial class PiiiCK 
{ 
    public const string DefaultCategory = "none"; 
    public const string ChooseCategoryIntent = "Choose category"; 
} 

[Serializable] 
public class PiiiCKLuisDialog : LuisDialog<object> 
{ 

    /// <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.ChooseCategoryIntent, out title)) 
      return title.Entity; 

     // Default fallback 
     return PiiiCK.DefaultCategory; 
    } 

    [LuisIntent("")] 
    public async Task None(IDialogContext context, LuisResult result) 
    { 

     // Create our response 
     var response = $"Sorry I did not understand"; 

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

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

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

     // Get our category 
     var category = TryFindCategory(result); 

     // Create our response 
     var response = $"Found our entity: { category }"; 

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

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

Wenn ich das Projekt und verwenden Sie den Bot Emulator laufen meine Antworten bekommen es keine immer Treffer. Auch wenn ich eine Nachricht genau so schreibe wie die Äußerung. Jetzt gehe ich davon aus, dass ich mich verwirrt habe. Ich glaube, es gibt einen weiteren Schritt nach dem Erhalt der Schlüssel von Kognitiven Service Konto, um es mit LUIS Endpunkt verbinden, weiß jemand, was ich als nächstes tun soll?


aktualisieren

ich die Alarm bot example wurde mit meinem Bot zu schaffen, aber es war verwirrend mich (vor allem, weil ich nie Autofac verwendet haben), so bin ich zu dem Simple Alarm bot example statt umgeschaltet. Die Änderungen, die ich machen müssen war mit Global.asax:

protected void Application_Start() => GlobalConfiguration.Configure(WebApiConfig.Register); 

und fügen Sie die LuisModel Daten Anmerkung zur PiiiCKLuisDialog wie so:

[Serializable] 
[LuisModel("The Luis App Id", "The microsoft cognitive services subscription key")] 
public class PiiiCKLuisDialog : LuisDialog<object> 

Wenn ich meine Anwendung ausführen, ich bekomme keine Fehler und wenn ich meine Microsoft Bot Emulator mit der MicrosoftAppId und Secret benutze kann ich eine Nachricht eingeben, aber es tut immer noch das gleiche wie zuvor. Es geht immer um die keine Luis Intent und nie auf die "Kategorie wählen". Es ist erwähnenswert, dass die LuisResult ist immer Null ...

Irgendwelche Ideen?

+1

Setzen Sie Ihre Schlüssel? (d. h. [LuisModel ("YourModelId", "YourSubscriptionKey")]) – Lars

+0

Sind Sie sicher, dass Sie Ihre Luis Intents und Entitäten auf Luis.ai veröffentlicht haben? Sie müssen veröffentlicht werden, um zu arbeiten –

Antwort

1

Sie müssen nicht zwei Schlüssel kopieren.

Sie müssen nur einen der beiden Schlüssel als zweites Argument für LuisModel verwenden. Verwenden Sie für das erste Argument die App-ID, die wie eine GUID aussieht und auf LUIS.ai gefunden werden kann.

Update:

1) Hier ist, was verwenden Sie als ersten Parameter zu [LuisModel("","")] - das ist Ihre LUIS App-ID:

enter image description here

2) als zweiten Parameter, verwenden Sie eine der die zwei Schlüssel, die Sie vom Azure-Portal oder vom Cognitive Services-Konto erhalten haben. Es spielt keine Rolle, welche der beiden.

Schließlich können Sie Ihren Endpunkt testen und beide Eingabeparameter von Ihrem Konto bei luis.ai sehen. Klicken Sie auf "Veröffentlichen", geben Sie alles in "Abfrage" ein, und drücken Sie die Eingabetaste. Sie sehen die Parameter in der URL.

enter image description here

+0

Ich änderte dies, um den ersten Schlüssel als die luis APP-ID zu verwenden, und der zweite den Schlüssel des kognitiven Dienstkontos, aber es tut genau dasselbe. Es gibt immer keine zurück. – r3plica

+0

Um ein bisschen mehr zu erklären, habe ich die MicrosoftAppId und Secret in meiner Datei web.config. Ich habe jetzt das LuisModel-Datenattribut (mit der luis-App-ID und dem Abonnementschlüssel) zum ** PiiiCKLuisDialog ** hinzugefügt und die Verwendung von Autofac gestoppt, um zu sehen, ob das ein Problem war, und ich habe die ** Post ** -Methode in geändert einen, den ich in meinen Schnitt gelegt habe. – r3plica

+0

Ich habe meine Antwort aktualisiert @ r3plica – K48

Verwandte Themen