2016-11-13 4 views
3

У меня проблема с этим. Я пытаюсь создать простой бот с помощью Луиса. Мне удалось создать бот и разместить его на лазурном, я также создал намерение в LUIS и entity. Я создал некоторые высказывания, и эта сторона работает нормально.Microsoft Bot Framework с LUIS

Я тогда создал LuisDialog в C#. Я должен был создать API-интерфейс Cognitive Services в Azure, и я скопировал его на 2 ключа, которые он сгенерировал в моем LuisDialog.

My Dialog выглядит следующим образом:

/// <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); 
    } 
} 

Когда я запустить проект и использовать Bot эмулятор, чтобы мои ответы, которые он всегда хиты нет. Даже если я напишу сообщение точно так же, как произнесение. Теперь я предполагаю, что это потому, что я запутался. Я считаю, что есть еще один шаг после получения ключей от Когнитивная служба аккаунт, чтобы связать его с LUIS конечная точка, знает ли кто-нибудь, что я должен делать дальше?


Update

Я использовал Alarm bot example создать бот, но это путает меня (в основном потому, что я никогда раньше не использовал Autofac), поэтому я перешел на Simple Alarm bot example вместо этого. изменения мне нужно сделать был с Global.asax:

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

И добавить LuisModel данных аннотаций к PiiiCKLuisDialog так:

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

Когда я запускаю мое приложение, я не получайте ошибок, и когда я использую свой Microsoft Bot Emulator с MicrosoftAppId и Secret, я могу напечатать сообщение, но он по-прежнему делает то же самое, что и раньше. Он всегда идет к None Luis Intent и никогда не выбирайте категорию «Выбрать категорию». Стоит отметить, что LuisResult всегда имеет значение null ...

Любые идеи?

+1

Вы настраиваете ключи? (т. е. [LuisModel («YourModelId», «YourSubscriptionKey»)]) – Lars

+0

Вы уверены, что опубликовали свои идеи и сущности на Luis.ai? Они должны быть опубликованы для работы –

ответ

1

Вам не нужно копировать две клавиши.

Вы должны использовать только одну из двух клавиш в качестве второго аргумента для LuisModel. Для первого аргумента используйте идентификатор приложения, который выглядит как GUID и может быть найден на LUIS.ai.

Update:

1) Вот что вы используете в качестве первого параметра [LuisModel("","")] - это ваш ЛУИС приложение ID:

enter image description here

2) В качестве второго параметра, можно использовать любого из два ключа, которые вы получили от портала Azure или учетной записи Cognitive Services. Неважно, какая из двух.

Наконец, вы всегда можете проверить свою конечную точку и увидеть оба входных параметра из своей учетной записи в luis.ai. Нажмите «Опубликовать», введите что-нибудь в «запрос», затем нажмите «Ввод». Вы увидите параметры в URL-адресе.

enter image description here

+0

Я изменил это, чтобы использовать первый ключ в качестве идентификатора приложения luis, а второй - использовать ключ учетной записи когнитивных служб, но он делает то же самое. Он всегда возвращает ничего. – r3plica

+0

Чтобы объяснить немного больше, у меня есть MicrosoftAppId и Secret в моем файле web.config. Теперь я добавил атрибут данных LuisModel (используя идентификатор приложения luis и ключ подписки) в ** PiiiCKLuisDialog ** и прекратил использование Autofac, чтобы узнать, была ли эта проблема, и я изменил метод ** Post ** на один, который я ввел в мое редактирование. – r3plica

+0

Я обновил свой ответ @ r3plica – K48

Смежные вопросы