取得通知訊息遙測
此 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 |
狀態 | 表示訊息進度。 狀態可能是下列其中一個值:
|
EnqueueTime | 指出接受訊息的時間。 |
StartTime | 指出通知中樞服務在通知上何時開始運作。 |
EndTime | 指出通知中樞服務在通知上完成工作時。 |
NotificationBody | 原始通知訊息的本文。 |
TargetPlatforms | 指出通知的目標平臺。 可能包含下列值做為逗號分隔字串:
|
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 儲存體,包括:
|
結果
名稱 | 計數描述 |
---|---|
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><?xml version="1.0" encoding="utf-16"?><toast><visual><binding template="ToastText01"><text id="1">Hello from a .NET App!</text></binding></visual></toast></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>