共用方式為


取得通知訊息遙測

此 API 會在傳出推播通知的已完成狀態上提供額外的遙測。 其設計目的是協助監視從中樞傳送的推播通知。 此 API 使用的通知識別碼可以從用來傳送通知的 REST API 回應中包含的 HTTP 位置標頭擷取。

此每則訊息遙測功能也適用于 排程通知

此 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 遙測不存在。 當通知識別碼無效時,可能會發生此錯誤。

如需狀態碼的相關資訊,請參閱 狀態和錯誤碼

回應標頭

回應標頭 描述
Content-Type application/xml; charset=utf-8

回應本文

回應本文是 NotificationDetails 檔,其中包含下列元素:

元素 描述
NotificationId 傳遞至識別通知訊息之要求的識別碼。
位置 訊息的 URI
狀態 表示訊息進度。 狀態可能是下列其中一個值:
  • 已放棄:已放棄訊息處理。 當訊息無法在可接受的時間範圍內處理時發生。 根據預設,它是 30 分鐘。
  • 已取消:使用者已取消此排程的訊息。
  • 已完成:訊息處理已完成。
  • 排入佇列:已接受訊息,但尚未開始處理。
  • NoTargetFound:找不到裝置傳送此訊息。
  • 處理:訊息處理已啟動。
  • 已排程:訊息在佇列中,且會在排程的時間傳送。
  • 未知:訊息處理處於未知狀態。
EnqueueTime 指出接受訊息的時間。
StartTime 指出通知中樞服務在通知上何時開始運作。
EndTime 指出通知中樞服務在通知上完成工作時。
NotificationBody 原始通知訊息的本文。
TargetPlatforms 指出通知的目標平臺。 可能包含下列值做為逗號分隔字串:
  • windows
  • apple
  • gcm
  • windowsphone
  • adm
  • baidu
  • template
  • windowstemplate
  • appletemplate
  • gcmtemplate
  • windowsphonetemplate
  • admtemplate
  • baidutemplate
ApnsOutcomeCounts 此元素適用于傳送至 Apple Push Notification Service 的通知。 包含 Result 實例的集合。
MpnsOutcomeCounts 此元素適用于傳送至 Microsoft 推播通知服務的通知。 包含 Result 實例的集合。
WnsOutcomeCounts 此元素適用于傳送至 Windows 通知服務的通知。 包含 Result 實例的集合。
GcmOutcomeCounts 此元素適用于傳送至 Google 雲端通訊的通知。 包含 Result 實例的集合。
AdmOutcomeCounts 此元素適用于傳送至 Amazon 裝置傳訊的通知。 包含 Result 實例的集合。
成果 這些實例的集合組成每個平臺通知服務的上述計數。 Each outcome can be one of the named counts mentioned in the Outcomes section.
PnsErrorDetailsUri 需要用於此 API 和傳送通知訊息的 API Api-Version 2016-07 和更新版本。

PNS 錯誤詳細資料只有在相關聯的傳送作業完成之後才能完整使用。

取得 Blob 的 URI,其中包含每個涉及的 PNS 所傳回的錯誤。 如果 PNS 未回報任何錯誤,此成員就不會包含在回應中。 您可以使用 Azure 儲存體 API 來讀取 Blob。 如需詳細資訊,請參閱使用 .NET 或Azure 儲存體服務 REST API 參考可能的 PNS 錯誤開始使用 Azure Blob 儲存體,包括:
  • 不正確 PNS 認證
  • PNS 無法連線
  • BadChannel
  • ExpiredChannel
  • PnsThrottled
  • InvalidToken
  • WrongToken
  • Dropped
  • WrongChannel

結果

名稱 計數描述
AbandonedNotificationMessages 因為逾時而捨棄的推送服務傳送要求計數。
BadChannel 與推送服務的通訊失敗,因為通道無效。
ChannelDisconnected 推送服務已中斷連線。
ChannelThrottled 由於節流,推播服務拒絕存取。
Dropped 推送服務表示訊息已卸載。
ExpiredChannel 與推送服務的通訊失敗,因為通道已過期。
InvalidCredentials 用來向推送服務進行驗證的認證失敗。
InvalidNotificationSize 推送要求太大。
NoTargets 找不到任何要傳送的要求計數。
PnsInterfaceError 推送服務合約通訊失敗。
PnsServerError 推送服務指出其端發生錯誤。
PnsUnavailable 無法使用推播服務。
PnsUnreachable 推送服務沒有回應。
已略過 在找到的相同 PNS 控制碼 (重複註冊計數,不同的註冊識別碼) 。
Success 已成功將要求傳送至某些數目的裝置。
Throttled 由於節流,推播服務拒絕存取。
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 原生通知