OnTeamsMessageExtensionSubmitationAsync(.Net核心、Botframework、Microsoft团队)的用户状态
我正在尝试验证Teams应用程序中的用户身份(来自消息传递扩展提交操作) 在中,我发现身份验证流从OnTeamsMessageExtensionSubmitationAsync(.Net核心、Botframework、Microsoft团队)的用户状态,.net,.net-core,botframework,microsoft-teams,microsoft-graph-teams,.net,.net Core,Botframework,Microsoft Teams,Microsoft Graph Teams,我正在尝试验证Teams应用程序中的用户身份(来自消息传递扩展提交操作) 在中,我发现身份验证流从OnTeamsMessagingExtensionQueryAsync开始,但我需要从onteamsmessagingextensionsubmitationasync(Submitaction)对用户进行身份验证 一切正常,但我无法访问用户的状态,以了解用户是否已通过身份验证,然后获取用于使用图形的令牌。 onteamsMessageExtensionQueryAsync接收MessagingEx
OnTeamsMessagingExtensionQueryAsync
开始,但我需要从onteamsmessagingextensionsubmitationasync
(Submit
action)对用户进行身份验证
一切正常,但我无法访问用户的状态
,以了解用户是否已通过身份验证,然后获取用于使用图形的令牌。
onteamsMessageExtensionQueryAsync
接收MessagingExtensionQuery
作为操作,该操作具有状态
属性。
但是onteamsmessagingextensionsubmitationasync
接收MessagingExtensionAction
作为操作,它没有状态
属性
我已经试过了
var state = turnContext.TurnState.Get<string>("State");
嗨,Alexander,您不可能设置发送到submit的有效负载吗?在操作中,您可以利用一个数据字段来设置自己的数据。Hi Alexander,您不可能在发送到submit的有效负载中设置数据吗?在操作中有一个数据字段,您可以利用该字段设置自己的数据
protected override async Task<MessagingExtensionActionResponse> OnTeamsMessagingExtensionSubmitActionAsync(ITurnContext<IInvokeActivity> turnContext, MessagingExtensionAction action, CancellationToken cancellationToken)
{
var magicCode = string.Empty;
var state = turnContext.TurnState.Get<string>("State"); // always null
// var state = action.State - in sample
if (!string.IsNullOrEmpty(state))
{
int parsed = 0;
if (int.TryParse(state, out parsed))
{
magicCode = parsed.ToString();
}
}
var tokenResponse = await(turnContext.Adapter as IUserTokenProvider).GetUserTokenAsync(turnContext, _connectionName, magicCode, cancellationToken: cancellationToken);
if (tokenResponse == null || string.IsNullOrEmpty(tokenResponse.Token))
{
var signInLink = await(turnContext.Adapter as IUserTokenProvider).GetOauthSignInLinkAsync(turnContext, _connectionName, cancellationToken);
return new MessagingExtensionActionResponse
{
ComposeExtension = new MessagingExtensionResult
{
Type = "auth",
SuggestedActions = new MessagingExtensionSuggestedAction
{
Actions = new List<CardAction>
{
new CardAction
{
Type = ActionTypes.OpenUrl,
Title = "Authorization",
Value = signInLink,
},
},
},
},
};
}
<<remaining code>>
return null;
}