Botframework 博特女士回复两次
在模拟器中的localhost上,一旦我连接到机器人,我就会得到登录卡,但在azure注册频道web聊天中,我没有得到登录卡,而是需要键入一些内容,然后我会得到两次。 我如何获得登录卡而无需在聊天中键入内容。 我已经打开了“始终打开”选项,但仍然没有用 登录卡来自社区身份验证中间件 我在onTurn的bot类中使用以下代码:Botframework 博特女士回复两次,botframework,Botframework,在模拟器中的localhost上,一旦我连接到机器人,我就会得到登录卡,但在azure注册频道web聊天中,我没有得到登录卡,而是需要键入一些内容,然后我会得到两次。 我如何获得登录卡而无需在聊天中键入内容。 我已经打开了“始终打开”选项,但仍然没有用 登录卡来自社区身份验证中间件 我在onTurn的bot类中使用以下代码: public async Task OnTurn(ITurnContext turnContext) { if (turnContext.Activ
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
});
}
}
}
会话开始时会发出两个会话更新:一个用于加入会话的用户,另一个用于加入会话的bot,因此您需要过滤掉bot的更新:
public static bool UserHasJustJoinedConversation(this Activity activity)
{
return activity.Type == ActivityTypes.ConversationUpdate
&& activity.MembersAdded.Any(channelAccount => channelAccount.Id != "YourBotName");
}
如果您需要此类案例的帮助,请至少添加执行此身份验证提示的代码的实现。非常感谢,现在我一打开网络聊天室就会收到登录卡。
public static bool UserHasJustJoinedConversation(this Activity activity)
{
return activity.Type == ActivityTypes.ConversationUpdate
&& activity.MembersAdded.Any(channelAccount => channelAccount.Id != "YourBotName");
}