2016-10-18 2 views
0

Я использую Microsoft Bot Framework для создания действительно простого бота с использованием LuisDialog. Однако я продолжаю получать System.Collections.Generic.KeyNotFoundException.System.Collections.Generic.KeyNotFoundException с Microsoft Bot Framework

Вот мой контроллер:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
{ 
    if (activity.Type == ActivityTypes.Message) 
    { 
     await Conversation.SendAsync(activity,() => new QuotesDialog()); 
    } 
    else 
    { 
     HandleSystemMessage(activity); 
    } 
    var response = Request.CreateResponse(HttpStatusCode.OK); 
    return response; 
} 

Вот мой диалог:

[Serializable] 
[LuisModel("MyModelIdGoesHere", "MySubscriptionKeyGoesHere")] 
public class QuotesDialog : LuisDialog<object> 
{ 
    [LuisIntent("CheckQuote")] 
    public async Task CheckQuote(IDialogContext context, LuisResult result) 
    { 
     await context.PostAsync("Hello you!"); 
     context.Wait(MessageReceived); 
    } 

    [LuisIntent("None")] 
    public async Task None(IDialogContext context, LuisResult result) 
    { 
     await context.PostAsync("I'm sorry. I didn't get that."); 
     context.Wait(MessageReceived); 
    } 
} 

Если я использую старую версию Bot Framework, как 3.0.0, я получаю следующее сообщение об ошибке: 500 InternalServerError { «сообщение»: «Произошла ошибка». }

Однако если я обновиться до последней стабильной версии (3.2.1), то я получаю следующее сообщение об ошибке типа «System.Collections.Generic.KeyNotFoundException»:

"Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key) at Microsoft.Bot.Builder.Dialogs.LuisDialog "

Полный стек трассировки здесь:

http://pastebin.com/uLJF5fcV

Я попытался создать новый проект на другое решение, но я получаю ту же ошибку. Я попытался установить различные версии Bot Framework через nuget, но, как я уже говорил, так или иначе, я все еще получаю сообщение об ошибке. На данный момент у меня мало опыта работы с Bot Framework, поэтому я не знаю, что еще попробовать.

ответ

1

Можете ли вы попробовать снова добавить следующее поверх метода «Нет»?

[LuisIntent("")] 

ошибка, что вы видите, как правило, происходит, когда LuisDialog не может решить метод (намерение) для выполнения на основе полученного сообщения.

Я подозреваю, что проблема поднимается here, когда LuisDialog ищет пустые намерения.

handler = this.handlerByIntent[string.Empty]; 
+0

Это точно, а также должно быть отражено в документах. – K48

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