2017-04-21 3 views
0

로컬로 잘 작동하는 개발 한 채팅 봇에 어려움을 겪고 있지만 dev.botframework.com에 배포 한 후에는 제대로 작동하지 않습니다.배포 된 Chatbot에 대한 인증 실패

내 코드가 아래에 있고 줄에서 깨졌습니다. Conversation.SendAsync (activity,() => new MyBot.AppServices.ServiceLUIS()); { "Microsoft App ID a8641a16-932c-49a5-af8b-a58ab2ce251f에 대한 인증이 상태 코드 Unauthorized 및 이유문 'Unauthorized'로 실패했습니다.}}.

나는 다음과 같은 결과로 Troubleshooting Bot Framework Authentication의 지침을 시도 :

  • 1 단계 : 로컬 호스트에 암호없이 연결 - 일 벌금을!
  • 2 단계 : AppID와 비밀번호가 올바른지 확인 - 해당 사항!
  • 3 단계 : 로컬 호스트에서 보안 설정 및 실행 - 작동하지 않습니다. (그러나 끝점은 MicrosoftAppID 및 암호와 동일합니다.
  • 4 단계 : 봇 프레임 워크 개발자 포털을 사용하여 봇에 연결 -이 방법은 작동합니다. 그러나 포털 내에서 웹 채팅 기능을 사용할 때도 내부 서버 오류가 발생합니다.

내 LUIS 서비스에 대한 호출로 인해 내 Bot가 권한이없는 것 같습니다. 내 LUIS 모델을 호출합니다.하지만 내 봇이 게시 된 Azure에서 아무것도 찾을 수 없는데 LUIS 모델은 내 BOT에 대한 액세스 권한을 LUIS 모델에 허용합니다 .Luis.ai 또는 Bot에서 아무것도 볼 수 없습니다. 프라 작업 포털.

해결 방법에 대한 아이디어는 실제로 도움이 될 것입니다.

namespace MyBot 
{ 
[BotAuthentication] 
public class MessagesController : ApiController 
{ 
    /// <summary> 
    /// POST: api/Messages 
    /// Receive a message from a user and reply to it 
    /// </summary> 
    public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
    { 
     try 
     { 
      if (activity.Type == ActivityTypes.Message) 
      { 
       **await Conversation.SendAsync(activity,() => new MyBot.AppServices.ServiceLUIS());** 
      } 
      else 
      { 
       ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
       var reply = HandleSystemMessage(activity); 
       if (reply != null) 
        await connector.Conversations.ReplyToActivityAsync(reply); 
       HandleSystemMessage(activity); 
      } 
      var response = Request.CreateResponse(HttpStatusCode.OK); 
      return response; 
     } 
     catch (Exception e) 
     { 
      return null; 
     } 
    } 

    private Activity HandleSystemMessage(Activity message) 
    { 
     if (message.Type == ActivityTypes.DeleteUserData) 
     { 
      // Implement user deletion here 
      // If we handle user deletion, return a real message 
     } 
     else if (message.Type == ActivityTypes.ConversationUpdate) 
     { 
      // Handle conversation state changes, like members being added and removed 
      // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info 
      // Not available in all channels 
     } 
     else if (message.Type == ActivityTypes.ContactRelationUpdate) 
     { 
      // Handle add/remove from contact lists 
      // Activity.From + Activity.Action represent what happened 
     } 
     else if (message.Type == ActivityTypes.Typing) 
     { 
      // Handle knowing tha the user is typing 
     } 
     else if (message.Type == ActivityTypes.Ping) 
     { 
     } 

     return null; 
    } 
} 
} 
+0

LUIS 모델에 LUIS 자격 증명을 설정 했습니까? –

+0

@EzequielJadib - 답변 해 주셔서 감사합니다. 예, LUIS 응용 프로그램 ID와 구독 키가 모두 설정됩니다. 아니면 뭔가 다른 것을 의미 했습니까? – jgoraya

+0

LUIS 대화 상자가 [Serializable] 속성으로 장식되어 있습니까? –

답변

0

해결! 봇과 재발행을위한 또 다른 새로운 키와 암호를 만들어 냈습니다. -