你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

获取通知消息遥测

此 API 提供有关传出推送通知的已完成状态的其他遥测数据。 它旨在帮助监视从中心发送的推送通知。 可以从用于发送通知的 REST API 的响应中包含的 HTTP 位置标头中检索此 API 使用的通知 ID。

此按消息遥测功能也适用于 计划通知

此 API 仅适用于 标准层通知中心

请求

方法 请求 URI HTTP 版本
GET https://{namespace}.servicebus.windows.net/{NotificationHub}/messages/{notification message ID}?api-version=2016-07 HTTP/1.1

请求标头

下表介绍必需的和可选的请求标头。

请求标头 说明
授权 使用 服务总线进行共享访问签名身份验证中指定的生成的 SAS 令牌。
x-ms-version 2016-07 (2015-01 或更高版本支持)

请求正文

无。

响应

响应包括 HTTP 状态代码和一组响应标头。 成功时返回响应正文。

响应代码

代码 说明
200 已成功检索消息遥测。 遥测数据可能是部分响应,具体取决于发送的通知消息所针对的设备数,以及消息在系统中进行处理的进度。
400 无法检索消息遥测,因为请求格式不正确。
401 授权失败。 访问密钥不正确。
403 请求被拒绝,因为未为 SKU 启用此功能。 升级到标准。
404 遥测不存在。 当通知 ID 无效时,可能会发生此错误。

有关状态代码的信息,请参阅 状态和错误代码

响应头

响应标头 说明
Content-type application/xml; charset=utf-8

响应正文

响应正文是一个由以下元素组成的 NotificationDetails 文档:

元素 说明
NotificationId 传递给标识通知消息的请求的 ID。
位置 消息的 URI
状态 指示消息进度。 State 可以是以下值之一:
  • 已放弃:已放弃消息处理。 在可接受的时间范围内无法处理消息时,会发生此情况。 默认情况下,为 30 分钟。
  • 已取消:用户取消了此计划邮件。
  • 已完成:消息处理已完成。
  • 排队:消息已被接受,但尚未开始处理。
  • NoTargetFound:找不到发送此消息的设备。
  • 正在处理:消息处理已开始。
  • 已计划:消息在队列中,并在计划的时间发送。
  • 未知:消息处理处于未知状态。
EnqueueTime 指示消息被接受的时间。
StartTime 指示通知中心服务何时开始处理通知。
EndTime 指示通知中心服务何时完成对通知的工作。
NotificationBody 原始通知消息的正文。
TargetPlatforms 指示通知面向的平台。 可以包含以下值,以逗号分隔的字符串:
  • windows
  • apple
  • gcm
  • windowsphone
  • adm
  • baidu
  • template
  • windowstemplate
  • appletemplate
  • gcmtemplate
  • windowsphonetemplate
  • admtemplate
  • baidutemplate
ApnsOutcomeCounts 对于发送到 Apple 推送通知服务的通知,存在此元素。 包含结果实例的集合。
MpnsOutcomeCounts 对于发送到 Microsoft 推送通知服务的通知,存在此元素。 包含结果实例的集合。
WnsOutcomeCounts 此元素用于发送到 Windows 通知服务的通知。 包含结果实例的集合。
GcmOutcomeCounts 此元素用于发送到 Google Cloud Messaging 的通知。 包含结果实例的集合。
AdmOutcomeCounts 此元素用于发送到 Amazon 设备消息传送的通知。 包含结果实例的集合。
业务成效 这些实例的集合构成每个平台通知服务的上述计数。 每个结果可以是“ 结果 ”部分中提到的命名计数之一。
PnsErrorDetailsUri 需要 Api-Version 2016-07 及更高版本用于此 API 和发送通知消息的 API。

PNS 错误详细信息仅在关联的发送操作完成后才完全可用。

获取 Blob 的 URI,其中包含所涉及的每个 PNS 返回的错误。 如果 PNS 未报告任何错误,则响应中不包含此成员。 可以使用 Azure 存储 API 读取 Blob。 有关详细信息,请参阅 通过 .NET 开始使用 Azure Blob 存储Azure 存储服务 REST API 参考 可能的 PNS 错误包括:
  • PNS 凭据无效
  • PNS 不可访问
  • BadChannel
  • ExpiredChannel
  • PnsThrottled
  • InvalidToken
  • WrongToken
  • Dropped
  • WrongChannel

结果

名称 计数说明
AbandonedNotificationMessages 由于超时而丢弃的推送服务的发送请求计数。
BadChannel 由于通道无效,与推送服务的通信失败。
ChannelDisconnected 推送服务已断开连接。
ChannelThrottled 推送服务因限制而拒绝访问。
Dropped 推送服务指示消息已删除。
ExpiredChannel 由于通道已过期,与推送服务的通信失败。
InvalidCredentials 用于向推送服务进行身份验证的凭据失败。
InvalidNotificationSize 推送请求太大。
NoTargets 找不到要发送到的请求计数。
PnsInterfaceError 推送服务协定通信失败。
PnsServerError 推送服务指示其端发生了错误。
PnsUnavailable 推送服务不可用。
PnsUnreachable 推送服务无响应。
已跳过 (找到同一 PNS 句柄、不同注册 ID) 的重复注册计数。
成功 已成功将请求发送到某些数量的设备。
已中止 推送服务因限制而拒绝访问。
UnknownError 发生未知错误。
WrongToken PNS 未将 PNS 句柄识别为有效句柄。

下面是向 WNS 发送通知的示例遥测数据:

<NotificationDetails xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <NotificationId>{Your message id}</NotificationId>
  <Location>sb://{Your namespace}.servicebus.windows.net/{your hub name}/messages/{your message id}?api-version=2015-04</Location>
  <State>Completed</State>
  <EnqueueTime>2015-11-02T21:19:43Z</EnqueueTime>
  <StartTime>2015-11-02T21:19:43.9926996Z</StartTime>
  <EndTime>2015-11-02T21:19:43.9926996Z</EndTime>
  <NotificationBody>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;toast&gt;&lt;visual&gt;&lt;binding template="ToastText01"&gt;&lt;text id="1"&gt;Hello from a .NET App!&lt;/text&gt;&lt;/binding&gt;&lt;/visual&gt;&lt;/toast&gt;</NotificationBody>
  <TargetPlatforms>windows</TargetPlatforms>
  <WnsOutcomeCounts>
    <Outcome>
      <Name>Success</Name>
      <Count>3</Count>
    </Outcome>
    <Outcome>
      <Name>WrongToken</Name>
      <Count>1</Count>
    </Outcome>
  </WnsOutcomeCounts>
  <PnsErrorDetailsUri>{Blob uri}</PnsErrorDetailsUri>
</NotificationDetails>

另请参阅

发送模板通知
发送 APNS 本机通知
发送 GCM 本机通知
发送 MPNS 本机通知
发送 WNS 本机通知