如何使用Azure bot framework从消息传递扩展查询中获取用户的电子邮件?

2024-04-19 09:42:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个Azure机器人,用于使用消息传递扩展功能进行快速搜索,但我需要用户的电子邮件来证实一些数据

我用了

print(turn_context.activity.from_property.id)

输出:

29:xxxxxx_-ZeW4Q6vIILx8BGjD-xxx88tLxqZFPYPxxxl_42i-siINFZkxxxfgbgGczHXZxx5crxx_xxxxxxxxxx

不确定如何转换或交叉匹配此字符串以获取用户的电子邮件

我正在将“TeamsActivityHandler”传递到我的SearchBasedMessageExtension类中。 另外,使用github中基于搜索的消息传递扩展采样器进行查询

还有别的办法吗

编辑:100721

我试着像下面那样添加函数,但函数从未被调用

class SearchBasedMessagingExtension(TeamsActivityHandler):

async def _show_members(self, turn_context: TurnContext ):
    member = await TeamsInfo.get_member(turn_context, turn_context.activity.from_property.id)
    print(member)

async def on_teams_messaging_extension_query(self, turn_context: TurnContext, query: MessagingExtensionQuery):
    search_query = str(query.parameters[0].value).strip()
    if search_query == "":
        await turn_context.send_activity(MessageFactory.text("You cannot enter a blank string for the search"))
        return
    
    
    print(turn_context.activity.from_property.id)

然后我在if条件之后调用它,如下所示:

async def on_teams_messaging_extension_query(self, turn_context: TurnContext, query: MessagingExtensionQuery):
    search_query = str(query.parameters[0].value).strip()
    if search_query == "":
        await turn_context.send_activity(MessageFactory.text("You cannot enter a blank string for the search"))
        return
    print(await self._show_members(turn_context))

    print(turn_context.activity.from_property.id)

并收到下一个错误:

source is not a known attribute of class <class 'botbuilder.schema.teams._models_py3.TeamsChannelData'> and will be ignored


Tags: fromselfidsearchasyncdefcontextproperty
1条回答
网友
1楼 · 发布于 2024-04-19 09:42:48

您可以致电get_member以询问成员

async def _show_members(
self, turn_context: TurnContext ):
member = await TeamsInfo.get_member(turn_context, turn_context.activity.from_property.id)

请参阅文档中的python sample

相关问题 更多 >