Botframework 重启bot后,主动消息在MS团队中不起作用
我有一个主动消息传递端点,当用户积极参与对话时,该端点可以正常工作。例如,一个用例,其中用户请求检索发票数据,这是异步发生的,并通过主动消息发送回。这个很好用。但是,如果在几周后尝试继续对话,则Botframework 重启bot后,主动消息在MS团队中不起作用,botframework,microsoft-teams,Botframework,Microsoft Teams,我有一个主动消息传递端点,当用户积极参与对话时,该端点可以正常工作。例如,一个用例,其中用户请求检索发票数据,这是异步发生的,并通过主动消息发送回。这个很好用。但是,如果在几周后尝试继续对话,则continueConversation操作将失败。如果我进入团队并启动与机器人的新对话,那么重新发送主动消息(不做任何更改)将再次起作用 在我的一个用例中,bot需要在未来1周以上与用户进行跟踪。因此,我需要弄清楚如何向团队用户发送一条主动消息,即使他们最近没有与机器人对话。我不确定为什么continu
continueConversation
操作将失败。如果我进入团队并启动与机器人的新对话,那么重新发送主动消息(不做任何更改)将再次起作用
在我的一个用例中,bot需要在未来1周以上与用户进行跟踪。因此,我需要弄清楚如何向团队用户发送一条主动消息,即使他们最近没有与机器人对话。我不确定为什么continueConversation
不起作用,因为会话ID没有变化(而且几个月没有变化,可能永远不会)
下面是我用来发送主动消息的函数
server.post('/api/notify',异步(req,res)=>{
//控制台日志(请求主体);
试一试{
const conversationReference=req.body.conversationReference;
等待适配器。continueConversation(conversationReference,async turnContext=>{
//如果在发送此邮件时遇到与权限相关的错误,请参阅
// https://aka.ms/BotTrustServiceUrl
等待turnContext.sendActivity(请求正文消息);
});
res.setHeader('Content-Type','text/html');
书面记录(200);
res.write('已发送主动消息');
res.end();
}捕获(错误){
console.log('请求错误。请确保您的邮件包含对话引用和邮件文本');
console.log(错误);
appInsightsClient.trackTrace({
消息:`${error.name}-${path.basename(\uu filename)}`,
严重程度:4,
属性:{'error':error.message,'callStack':error.stack,'botName':process.env.botName}
});
res.setHeader('Content-Type','text/html');
书面记录(400);
res.write(“请求错误。请确保您的邮件包含对话引用和邮件文本。”);
res.end();
}
});
正如上面所说
如果机器人重新启动,等待主动消息的用户将无法接收该消息,除非他们在机器人重新启动后再次向其发送消息
这就是问题所在。但那一页上的说明并没有给出全部细节。您必须通过const{MicrosoftAppCredentials}=require('botframework-connector')
添加该类,并设置要传递的serviceUrl(已在conversationReference.serviceUrl
中提供)
因此,通过这些更改,我添加了MicrosoftAppCredentials.trustServiceUrl(conversationReference.serviceUrl)代码>在我发送主动消息之前,即使在bot重新启动后,它也开始正常工作。如
如果机器人重新启动,等待主动消息的用户将无法接收该消息,除非他们在机器人重新启动后再次向其发送消息
这就是问题所在。但那一页上的说明并没有给出全部细节。您必须通过const{MicrosoftAppCredentials}=require('botframework-connector')
添加该类,并设置要传递的serviceUrl(已在conversationReference.serviceUrl
中提供)
因此,通过这些更改,我添加了MicrosoftAppCredentials.trustServiceUrl(conversationReference.serviceUrl)代码>在我发送主动消息之前,即使在bot重新启动后,它也开始正常工作