2017-04-21 120 views
0

我遇到了一個我開發的可在本地正常工作但在將其部署到dev.botframework.com之後似乎無法工作的聊天機器人。已部署的Chatbot授權失敗

我的代碼是下面和它打破在該行... 等待Conversation.SendAsync(活性,()=>新MyBot.AppServices.ServiceLUIS());其狀態 {「Microsoft App ID爲a8641a16-932c-49a5-af8b-a58ab2ce251f的授權失敗,狀態碼未經授權,原因短語'未經授權'」}。

我試圖說明在Troubleshooting Bot Framework Authentication結果如下:

  • 第1步:無需密碼在本地主機連接 - 工作得很好!
  • 步驟2:驗證AppID和密碼是否正確 - 它們是!
  • 步驟3:啓用安全性和本地主機上運行 - 這不工作:(然而,終點是正確的,因爲是MicrosoftAppID和密碼
  • 第4步:連接到使用機器人Framework開發人員門戶網站你的機器人 - 這也適用!但是使用門戶內的網絡聊天功能時,我也得到一個內部服務器錯誤

凡被打破是在通話過程中我LUIS服務,所以對我來說,好像我的機器人沒有授權調用我的LUIS模型,但是我似乎無法在Azure中發現我的機器人發佈的任何內容,並且LUIS模型駐留在允許LUIS模型授權訪問我的BOT的位置,也沒有在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

裝飾有[Serializable]屬性的LUIS對話框? –

回答

0

解決!結束爲機器人創建另一個新的密鑰和密碼,並重新發布,它的工作! -