我们构建了一个自定义机器人服务应用程序,它利用 BotFramework 提供的 REST 端点以及一些图形 API 调用。
Graph API 记录了发送活动源通知的能力,我们已经工作得很好。
有什么方法可以让通知可点击,以便更有用吗?最初我假设主题中的 webUrl key/val 可以实现这一目标,但无论是使用注释掉的代码(在函数中运行,因此它在 .js 文件中有效)还是下面的代码,当用户单击时,不会发生任何事情。
提示?建议?我们是否误解了活动源通知的功能?
我们通过图形 API 将以下有效负载传递到 /appCatalogs/teamsApps/${this.Config.TEAMS_APP_EXTERNAL}
虽然通知确实到达并执行了它们应该执行的所有操作,但单击通知时,它不会将它们带到任何地方。
{
topic: {
// source: 'entityUrl',
// value: `https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/${this.Config.TEAMS_APP_EXTERNAL}`
source: 'text',
value: 'I am the source',
webUrl: 'https://teams.microsoft.com/l/message/'
},
activityType: 'generic',
previewText: {
content
},
recipients: [
{
'@odata.type': 'microsoft.graph.aadUserNotificationRecipient',
userId
}
],
templateParameters: [
{
name: 'text',
value
}
]
}
您可以在通知负载的 webUrl 属性中包含深层链接,以使活动源通知可单击。 在代码片段中,您已将 webUrl 属性设置为“https://teams.microsoft.com/l/message/”。此 URL 不提供任何特定的目的地或内容供用户导航到。您需要将此 URL 替换为与应用程序中所需位置或内容相对应的有效深层链接。 webUrl: 'https://teams.microsoft.com/l/entity/{appId}/{entityId}?webUrl={encodedWebUrl}' {appId}:您的 Teams 应用的 ID。您可以在 Teams 应用工作室或 Teams 管理中心中找到它。 {entityId}:您要导航到的应用内特定实体或内容的 ID。 {encodedWebUrl}:用户单击通知时要打开的 Web URL 的 URL 编码版本。 将 {appId}、{entityId} 和 {encodedWebUrl} 替换为适合您的应用的值。 例如,如果您想使用 URL https://example.com/myapp/page1 导航到应用程序中的特定页面,您可以按如下方式构造深层链接 URL: webUrl: 'https://teams.microsoft.com/l/entity/{appId}/{entityId}?webUrl=https%3A%2F%2Fexample.com%2Fmyapp%2Fpage1' 通过在 webUrl 属性中包含有效的深层链接,单击活动源通知会将用户带到应用程序中的指定位置或内容。