2017-04-21 122 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

解决!结束为机器人创建另一个新的密钥和密码,并重新发布,它的工作! -