2016-10-18 1 views
0

Microsoft Bot Framework를 사용하여 LuisDialog를 사용하여 매우 간단한 봇을 만듭니다. 그러나 나는 계속 System.Collections.Generic.KeyNotFoundException을 얻는다. 여기 Microsoft Bot Framework를 사용하는 System.Collections.Generic.KeyNotFoundException

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

나는 3.0.0와 같은 봇 프레임 워크의 이전 버전을 사용하는 경우, 나는 다음과 같은 오류가 발생합니다 : (500) InternalServerError { "message": "오류가 발생했습니다." }

그러나 나는 최신 안정 버전 (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

None 메서드 위에 다음을 다시 추가 할 수 있습니까?

[LuisIntent("")] 

당신이 LuisDialog는 방법 (의도)를 확인할 수없는 경우 일반적으로 일어나고보고 된 오류가 수신 한 메시지에 따라 실행합니다.

LuisDialog가 빈 인 텐트를 찾을 때 here으로 문제가 제기 된 것으로 의심됩니다.

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

정확하게 맞으며 문서에도 반영되어야합니다. – K48