botframework - 如何在 Bot Framework 中获取用户详细信息
问题描述
我正在构建一个需要向用户发送自适应卡片的团队机器人。
安装机器人后,我将向用户发送欢迎消息。从欢迎消息中,我可以使用 activity.from.id 获取用户的团队 ID。
From ID::29:1O_abckkskldjflkjfslxxxxxxxx
使用此 ID,我尝试使用以下方式获取用户详细信息
const member=TeamsInfo.getMember(context, context.activity.from.id);
但是我仍然无法获取用户详细信息。
如何获取用户的电子邮件 ID,以便将来我可以向用户发送通知?
解决方案
根据文档,您仅为 dotnet 库将“id”传递给 getMember。对于 Node,它看起来需要电子邮件/UPN - 请参阅此处,而您正在发送 activity.from.id。或许尝试调用getPagedMembers - 如果只有一个用户(即,这是一个 1-1 聊天),它实际上与 getMember 相同。
工作片段::
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded;
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
var continuationToken;
var members = [];
do {
var pagedMembers = await TeamsInfo.getPagedMembers(context, 100, continuationToken);
continuationToken = pagedMembers.continuationToken;
members.push(...pagedMembers.members);
} while (continuationToken !== undefined);
members.forEach(member => {
const userEmail=member.userPrincipalName;
});
const card = CardFactory.adaptiveCard(welcomeCard);
const message = {
attachments: [card],
summary: 'Welcome'
};
await context.sendActivity(message);
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
推荐阅读
- xamarin.android - 将阿拉伯语添加到 pdf 文件 iTextSharp
- git - Git eclipse插件找不到网络驱动器存储库(Windows)
- django - 如何自定义 django 管理面板
- javascript - 如何在 javascript 代码中使用 python 列表?
- mysql - Node.js 登录崩溃应用程序,因为 Mysql 的“结果”是“未定义的”
- apache-storm - Apache Strom 从 1.0.3 升级到 2.2.0 并没有使用所有的 worker
- javascript - 使用功能组件内的钩子的辅助函数
- spring-cloud-stream - Spring Cloud Stream App 自定义属性未显示在 Cloud Data Flow UI 中
- python - Pickle 能够序列化 .ipynb 中的代码对象,但无法在 .py 中进行。为什么这样?
- python - Python没有使用os.listdir打印目录中的所有文件