0

有没有办法在机器人框架请求中获取发件人/用户电子邮件 ID?

我可以在活动中获取发件人姓名,但还有其他方式可以获取电子邮件 ID 以及姓名和转换 ID?

4

2 回答 2

1

正如@md-farid-uddin-kiron 所说,您可以使用 Graph。有一个样本几乎已经设置好了。请在此处查看(例如,我链接到特定行)。

可以通过以下方式检索对话 ID: stepContext.Context.Activity.Conversation.Id

于 2020-03-03T17:46:55.167 回答
0

实际上,我可以看到 Bot Framework 可以很容易地从 Teams 频道获取信息。首先,在您的代码中添加以下using语句:

using Microsoft.Bot.Builder.Teams;

然后在要获取发件人数据的代码中使用以下行:

var members = await TeamsInfo.GetMembersAsync(turnContext, cancellationToken);
var userData = "";
foreach (var teamMember in members)
{
    if (teamMember.Id != turnContext.Activity.Recipient.Id)
    {
        userData = $"AadObjectId: {teamMember.AadObjectId}, Email: {teamMember.Email}, GivenName: {teamMember.GivenName}, Name: {teamMember.Name}, Role: {teamMember.Role}, Surname: {teamMember.Surname}, TenantId: {teamMember.TenantId}, UserPrincipalName: {teamMember.UserPrincipalName}, UserRole: {teamMember.UserRole}";
    }
}

members变量将包含 2 个元素:一个代表机器人,另一个代表发送者(人类用户)。此代码段构建userData字符串变量,其中包含teamMember对象中所有可用属性的值。

编辑:如果您无法访问该turnContext对象,而是可以访问该stepContext对象(它们分别存在于 Bot Framework 的 EchoBot 和 CoreBot 中),只需turnContext在我附加的代码片段中替换为stepContext.Context.

于 2021-01-13T12:20:15.187 回答