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?
Setzen Sie Ihre Schlüssel? (d. h. [LuisModel ("YourModelId", "YourSubscriptionKey")]) – Lars
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 –