You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Notification Hub发送模板通知时出现PayloadErrors求助

排查Azure Notification Hub模板通知PayloadErrors问题

以下是免费版环境下可快速排查的几个方向:

1. FCM V1模板结构错误(最可能触发PayloadErrors)

你使用CreateFcmV1TemplateRegistrationAsync注册FCM V1模板,但当前模板嵌套了多余的message节点,导致最终生成的FCM payload不符合官方规范。

FCM V1的请求体要求外层为message节点,内部包含通知或数据内容;而Azure Notification Hub在处理FCM V1模板时,会自动将模板填充后的内容作为message的值,不需要你手动在外层添加message。你的模板:

{"message":{"title":"$(title)", "description":"$(description)"}}

填充后会生成如下错误结构:

{
  "message": {
    "message": {
      "title": "Test alert 2",
      "description": "Content of test alert"
    }
  }
}

这种嵌套会被FCM直接拒绝,引发PayloadErrors。

修正方案:将模板改为FCM V1要求的message内部结构,比如通知类型模板:

{"notification":{"title":"$(title)", "body":"$(description)"}}

或数据类型模板:

{"data":{"title":"$(title)", "description":"$(description)"}}

2. 设备令牌格式不合法

CreateFcmV1TemplateRegistrationAsync的第一个参数必须是合规的FCM V1设备令牌(160字符,由字母、数字、-和_组成)。你传入的command.InstallationId如果是随机生成的非格式字符串,Notification Hub向FCM发送请求时会被拒绝,进而触发PayloadErrors。

如果仅用于测试模板逻辑,可以生成一个符合格式的占位令牌,比如:

dQw4w9WgXcQ-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_dQw4w9WgXcQ-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

3. 标签匹配验证

确认注册时使用的标签$"{districtId}_{template.Key}"与发送时指定的标签$"{districtId}_{type}"完全一致(大小写敏感)。虽然标签不匹配不会触发PayloadErrors(只会导致无消息分发),但可以通过Azure门户的「通知发送历史」确认是否有匹配的注册数,排除干扰。

4. 参数与模板占位符一致性

检查模板中的占位符(如$(title)、$(description))和发送时parameters中的键是否完全一致(大小写敏感)。当前你的参数包含对应键,这部分无需调整,但后续修改模板时需注意。

内容的提问来源于stack exchange,提问作者peper1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:22:05