node.js - 机器人如何从任务模块提交的上下文中发送私人消息?
问题描述
我有一个用例,在另一个用户通过任务模块提交后,机器人需要向 Teams 团队中的用户发送私人消息。消息基本上是,“Joe Schmo 与你分享了一些东西。”
我试过在这里使用这个代码示例,这就是我将要引用的:https ://github.com/microsoft/BotBuilder-Samples/blob/main/samples/javascript_nodejs/57.teams-conversation-bot/bots/团队ConversationBot.js#L172
但是,它似乎仅在上下文是发送给机器人的消息时才有效,无论是私人消息还是在频道中。
task/submit
当从事件调用此代码时,context
对象会以引发错误的方式进行修改:
(node:14206) UnhandledPromiseRejectionWarning: TypeError: Cannot perform 'get' on a proxy that has been revoked
发生此错误的行很简单:
const ref = TurnContext.getConversationReference(context.activity);
在调试时,我注意到在messageAllMembersAsync
函数开始时context
对象有一个activity
,但在执行TeamsInfo.getPagedMembers()
之后activity
是null
。
messageAllMembersAsync
在提交任务模块的上下文中我需要做什么?
解决方案
在这种情况下,您应该使用主动消息。
- 保存有关用户 1 的所需信息
- 当用户 2 完成任务时,您可以使用Proactive Message 示例代码向用户 1 发送消息。
检查如何/api/notify
用于发送主动消息:teams-conversation-bot
如果您遇到任何问题,请告诉我们。
推荐阅读
- javascript - Window.location 在 Javascript 中不起作用
- pandas - Pandas 从多列和滚动时间索引中获取最大值
- flutter - 如何使用颤振在共享首选项中保存布尔值?
- python - 根据字符串在新列中添加值包含在另一列中
- r - 使用 r 中 csv 中的文件名模式使用 for 循环重复相同的任务
- javascript - 如何在飞镖中连接和使用扩展运算符
- javascript - 根据当前的“日期”动态呈现以下工作日
- react-native - 错误:尝试更新 expo-cli 时“操作被您的操作系统拒绝”
- selenium-webdriver - 在自动上传文件时,katalon 和 eclipse 都面临这个问题。下面详细提到
- javascript - 如何在页面刷新时保持套接字实例?