在仿真器中的localhost
上,一旦我连接到漫游器,便获得了登录卡,但是在azure
注册频道的网络聊天中,我没有获得登录卡,而是需要输入一些东西,然后我得到两次。 webchat screenshot
我如何获得登录卡而无需在聊天中输入任何内容。
我已经打开了“始终打开”选项,但仍然没有帮助。
登录卡来自社区身份验证中间件Link here 我在onTurn的bot类中使用以下代码:
public async Task OnTurn(ITurnContext turnContext)
{
if (turnContext.Activity.UserHasJustJoinedConversation() || turnContext.Activity.UserHasJustSentMessage())
{
var state = turnContext.GetConversationState<Dictionary<string, object>>();
var dialogCtx = dialogs.CreateContext(turnContext, state);
await dialogCtx.Continue();
if (!turnContext.Responded)
{
await dialogCtx.Begin("mainDialog", new Dictionary<string, object>
{
["Value"] = turnContext.Activity.Text
});
}
}
}
我还使用以下两个功能
public static bool UserHasJustSentMessage(this Activity activity)
{
return activity.Type == ActivityTypes.Message;
}
public static bool UserHasJustJoinedConversation(this Activity activity)
{
return activity.Type == ActivityTypes.ConversationUpdate && activity.MembersAdded.FirstOrDefault().Id != activity.Recipient.Id;
}
答案 0 :(得分:1)
对话开始时会发出两个ConversationUpdate
:一个是供加入对话的用户使用的,另一个是供加入对话的漫游器的,因此您需要过滤出漫游器的一个:
public static bool UserHasJustJoinedConversation(this Activity activity)
{
return activity.Type == ActivityTypes.ConversationUpdate
&& activity.MembersAdded.Any(channelAccount => channelAccount.Id != "YourBotName");
}