2017-01-16 68 views
2

我怎么能要求用户从机器人登录到我的网站,以及稍后当用户要求bot首先检查用户是否在我的网站进行身份验证,如果不是重定向到web登录。我已经在bot中使用登录卡进行了登录,并且我传递了activity.user.id,但是如果用户登录或不登录,我不知道如何检索信息。微博僵尸框架,如何验证用户登录网络应用程序

ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
Activity reply = activity.CreateReply($"Well hello there. What can I do for you today?"); 
await connector.Conversations.ReplyToActivityAsync(reply); 

var id = activity.From.Id; 
reply.Attachments = new List<Attachment>(); 
List<CardAction> cardButtons = new List<CardAction>(); 
CardAction plButton = new CardAction() 
{ 
    Value = $"http://myapp.azurewebsites.net/Account/Login?userid='{id}'", 
    Type = "signin", 
    Title = "Connect" 
}; 

cardButtons.Add(plButton); 
SigninCard plCard = new SigninCard("You need to authorize me", new List<CardAction>() 
     { plButton }); 

Attachment plAttachment = plCard.ToAttachment(); 
reply.Attachments.Add(plAttachment); 
var replyt = await connector.Conversations.SendToConversationAsync(reply); 

回答

3

你可以通过这篇文章https://blogs.msdn.microsoft.com/tsmatsuz/2016/09/06/microsoft-bot-framework-bot-with-authentication-and-signin-login/
和样品的GitHub代码 https://github.com/tsmatsuz/AuthDemoBot

当你的web应用(网站)在浏览器中打开,页面被重定向到登录网址。 用户登录(登录成功)后,您的Web应用程序可能会获得一些经过身份验证的安全令牌。使用Bot Framework API,您的Web应用程序将给定的令牌作为用户状态存储到机器人状态服务中。 (此时,用户标识用于标识符。) 用户可以关闭您的Web应用程序(Web浏览器)。
最后,当用户在您的机器人中输入一些聊天时,您的机器人(在服务器端)可以从机器人状态服务中检索以前的令牌。 (从目前来看,这个机器人可以使用这个检索令牌调用一些API)。

enter image description here

信用:刚松崎

+0

我试过这个,但是当我试图让机器人数据通过GetPrivateConversationDataAsync它总是返回null。 –

+0

检查您实际设置令牌的位置。它是PrivateConversationData/UserData吗? – Satheesh

相关问题