在频道漫游器中发送通知

时间:2019-03-21 11:27:55

标签: node.js botframework microsoft-teams

我目前正在批准我的应用进入商店的批准过程。剩下的问题之一是:

1. Employer and Employee both didn’t receive any notification in the channel bot

我的机器人当前在manifest.json中设置为notificationOnly,因为我不需要/希望用户直接发送消息。

查看“主动消息传递”文档,对于哪些消息以及何时发送它们会通过上述失败有点模糊。

我需要将消息发送到频道吗?

我当前正在使用NodeJS

谢谢

1 个答案:

答案 0 :(得分:0)

这是一个很长的答案,涉及很多领域,只是因为我不确定100%是否知道您没有收到哪种通知。如果问题无法解决,请在问题中添加其他详细信息,我将对此答案进行编辑。

问题排查

  • Troubleshooting Guide
    • 特别注意需要启用通知的许多区域
      • 尤其是,用户可能需要“关注”和/或“收藏”频道以从中接收通知
  • 如果用户打开了桌面应用程序,则他们将在那里收到通知,除非他们在桌面应用程序上处于非活动状态超过3分钟,否则不会在手机上收到通知。否则,很可能是团队中的错误。

聊天通知

如果您遵循上面链接的《故障排除指南》,则您的用户应该会收到聊天通知。如果没有,您可以尝试更新您的MS Teams桌面或移动客户端。 @提及用户和/或频道也可能会有所帮助

发送带有正常通知的活动

通常,关键问题是需要从下面添加trustServiceUrl代码。通常,忽略此操作会显示500错误,但对于Teams而言,它似乎不会创建通知。基本上,您需要设置turncontext.activity的几个属性并信任serviceUrl。

实例化一些关键变量:

const teamsChannel = '19:8d60061c3d10xxxxxxxxxxxxxxxx@thread.skype';
const serviceUrl = 'https://smba.trafficmanager.net/amer/';
  • 注意:获取这些变量的最简单方法是将Teams的消息发送到机器人,同时在传入的活动上设置断点
  • serviceUrl可能因地理位置而异

发送活动

// This ensures that your bot can send to Teams - serviceUrl ensures notifications, too
turnContext.activity.conversation.id = teamsChannel;
turnContext.activity.serviceUrl = serviceUrl;
MicrosoftAppCredentials.trustServiceUrl(serviceUrl);

await turnContext.sendActivity(yourActivity);

活动Feed通知

您也可以create Activity Feed Notifications。要点是您需要:

  1. 在邮件中包含textsummary
  2. 包含将channelData设置为true的notifications.alert

此代码将完成以下任务:

const msg = MessageFactory.text('my message');
msg.summary = 'my summary';
msg.channelData = {
    notification: {
        alert: true,
    },
};
return await dc.context.sendActivity(msg);

结果:

enter image description here enter image description here

注意:要接收通知,您和您的用户必须跟随该频道。