2016-11-13 1 views
3

사람이 문제가 있습니다. 저는 Luis의 도움으로 간단한 로봇을 만들려고합니다. 나는 봇을 생성하여 푸른 하늘에 호스트했으며, LUIS에는 인 텐트을, 엔티티을 만들었습니다. 일부 개의 음성을으로 작성했으며 해당 항목이 정상적으로 작동합니다.Microsoft Bot Framework with LUIS

다음으로 나는 LuisDialog을 C#으로 작성했습니다. 나는 인지 서비스 API을 Azure에 등록해야했고, 내 LuisDialog에 생성 된 2 개의 키로 복사했습니다.

내 대화는 다음과 같습니다

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

내가 프로젝트를 실행하고 내 응답을 항상 아무도 안타하지 얻기 위해 봇 에뮬레이터를 사용하는 경우. 발화과 정확히 똑같은 메시지를 쓸지라도. 이제 나는 혼란 스럽기 때문에 그것이라고 생각합니다. 나는 인지 서비스에 의해 열쇠를 얻은 후에 다른 단계가 있다고 생각합니다. LUIS 끝점에 연결할 사람은 누구든지 내가 다음에해야 할 일을 알고 있습니까?


내 로봇을 만들 수 Alarm bot example을 사용했지만, 그것 (내가 전에 Autofac을 사용한 적이 주로하기 때문에) 저를 혼란, 그래서 내가 대신 Simple Alarm bot example로 전환 한

업데이트. 내가해야 변화는 Global.asax에 함께했다 :

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

그래서 같은 PiiiCKLuisDialogLuisModel 데이터 주석을 추가

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

내 응용 프로그램을 실행, I 오류가 나타나지 않고 내 컴퓨터를 사용할 때 Microsoft Bot Emulator MicrosoftAppId 및 Secret을 사용하여 메시지를 입력 할 수 있지만 여전히 이전과 동일합니다. 항상 없음 Luis Intent로 이동하고 절대로 "카테고리 선택"으로 이동하지 마십시오. 주목할 가치가 있습니다 LuisResult 항상 null입니다 ...

아이디어가 있으십니까?

+1

키를 설정하고 있습니까? (즉, [LuisModel ("YourModelId", "YourSubscriptionKey")]) – Lars

+0

Luis.ai에 루이 의도와 항목을 게시 했습니까? 그것들은 출판을 위해 출판 될 필요가 있습니다 –

답변

1

두 개의 키를 복사 할 필요가 없습니다.

두 개의 키 중 하나만 LuisModel의 두 번째 인수로 사용해야합니다. 첫 번째 인수의 경우 GUID처럼 보이고 LUIS.ai에서 찾을 수있는 앱 ID를 사용합니다.

업데이트 :

1) 여기서 당신이 [LuisModel("","")]에 첫 번째 매개 변수로 사용할 수 있습니다 - 즉 당신 루이스의 응용 프로그램 ID입니다 :

enter image description here

2) 두 번째 매개 변수로, 당신이 중 하나를 사용하여 Azure 포털이나인지 서비스 계정에서 가져온 두 개의 키. 둘 중 어느 것이 든 상관 없습니다.

마지막으로 언제든지 엔드 포인트를 테스트하여 luis.ai의 계정에서 두 입력 매개 변수를 볼 수 있습니다. '게시'를 클릭하고 '검색어'에 아무 것도 입력 한 다음 Enter 키를 누릅니다. URL에 매개 변수가 표시됩니다.

enter image description here

+0

luis 앱 ID로 첫 번째 키를 사용하도록 변경했으며 두 번째 키는 인식 서비스 계정 키를 사용하도록 변경했습니다. 그러나 정확히 동일한 일을합니다. 항상 아무 것도 반환하지 않습니다. – r3plica

+0

조금 더 설명하기 위해 web.config 파일에 MicrosoftAppId와 Secret이 있습니다. 나는 LuisModel 데이터 속성 (luis app id와 subscription key를 사용하여)을 ** PiiiCKLuisDialog **에 추가했고, Autofac을 사용하여 그 것이 문제인지를 확인하고 ** Post ** 메소드를 하나는 내가 편집에 넣었습니다. – r3plica

+0

나는 내 대답을 업데이트했습니다 @ r3plica – K48