SNS 通知メッセージ (DRS)
機器の変更、注文状態、サブスクリプションステータスなどのAmazonからの通知は、Amazonの Simple Notification Service (SNS) を使って送信されます。Amazon SNSを使用すると、タイムクリティカルなメッセージをアプリケーションが「push」メカニズムを通じて複数のサブスクライバーに送信できるため、サブスクライバーが更新を定期的にチェックする必要がありません。たとえばDash Replenishmentサービス (DRS) は、機器の登録解除やイベントエラーをSNSを使って皆さま (機器のメーカー) に通知します。また配送ステータスを提示する際にも通知が使用されます。
以降のセクションでは、参考としてさまざまな通知の例を紹介しています。
バージョニング
ユーザーに直接影響を及ぼさずに機能を段階的に更新するために、DRSではバージョニングが使用されます。
注文確定
注文確定通知は、Replenish API呼び出しをDRSが受信し、かつ生成された注文で問題が一切発生しなかったときに送信されます。機器のメーカーはこのメッセージの受領をもって、Replenish APIリクエストから受理された注文が、24時間位内にAmazonのユーザーによってキャンセルされない限り、商品が出荷されることを把握します。
注文確定通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "OrderPlacedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2016-12-02T21:09:58.689Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AH54JCXQ7WZKCZOFxxxxxxxx"
},
"orderInfo": {
"instanceId": "amzn1.dash.v2.o.ci45xxxxxxxxxxx",
"slotId": "myProduct",
"productInfo": [{
"quantity": 1.0,
"unit": "count",
"asin": "myAsinNumber",
"estimatedDeliveryDate": "2016-12-09T07:59:59Z"
}],
}
}
...
{
"MessageAttributes": {
"version": {
"type": "String",
"Value": 2.0
}
}
}
{
"notificationInfo": {
"notificationType": "OrderPlacedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-10-01T20:19:39.959Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
}
,
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
},
"orderInfo": {
"instanceId": "amzn1.dash.v2.o.ci43xxxxxxxxxx0",
"slotId": "myProduct",
"productInfo":[ {
"quantity": 12.0,
"unit": "count"
}],
"estimatedDeliveryDate": "2015-10-07T06:59:59Z"
}
}
}
バージョンに関する注意
注文確定のv2.0については、次の変更点に注意してください。
asin
情報がproductInfo内に含まれるようになりました。
estimatedDeliveryDate
がproductInfo内に含まれるようになりました。
MessageAttributes
は、バージョン通知メッセージのバージョンを識別するために使用されています。
注文キャンセル
注文キャンセル通知は、次の2つの状況で送信されます。
-
正常に確定された注文が、ユーザーによって手動でキャンセルされたとき。
-
Replenish APIリクエストがAmazon注文解決フローをたどることになってしまい、Amazonのユーザーが72時間以内に問題を解決できなかったとき。
注文キャンセル通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "OrderCancelledNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-10-01T20:20:29.461Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
},
"orderInfo": {
"instanceId": "amzn1.dash.v2.o.ci43xxxxxxxxxx0",
"slotId": "myProduct"
}
}
機器登録
機器登録通知は、ユーザーがLWAに成功したときに送信されます。この通知は、ユーザーがASINを選択する前にトリガーされます。
機器登録通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "DeviceRegisteredNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-10-01T02:23:52.747Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
}
}
機器登録解除
機器登録解除通知は、次のように、さまざまな理由で送信されます。
-
機器のメーカーがDeregistration APIを呼び出した。
-
AmazonのユーザーがAmazon.comにアクセスし、Amazon.comの管理ページから機器の登録を解除した。
-
AmazonのユーザーがAmazonカスタマーサービスに連絡し、カスタマーサービスエージェントがユーザーの代理で機器の登録を解除した。
-
AmazonのユーザーがManage Login with AmazonのWebサイトにアクセスし、機器のメーカーとの関連付けを解除した。これにより、機器のメーカーに関連付けられている全ユーザー機器の登録が解除されます。
機器登録解除通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "DeviceDeregisteredNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-09-29T18:03:28.669Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
}
}
サブスクリプション変更
サブスクリプション変更通知は、次の4つの状況で送信されます。
-
ユーザーが新しいLWA機器登録を完了したとき。
-
それまで選択したことのないASINをユーザーが選択したとき。
-
以前に入力されたASINの選択をユーザーがクリアしたとき。
-
ユーザーがサブスクリプションのオンとオフを切り替えたとき。
サブスクリプション変更通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "SubscriptionChangedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2016-12-06T19:33:27.368Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "MySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"subscriptionInfo": {
"slotsSubscriptionStatus": {
"SlotId1": {
"subscribed":true,
"productInfoList": [{
"quantity":1.0,
"unit": "count",
"asin": "myAsinNumber"
}]
},
"SlotId2": {
"subscribed":false,
"productInfoList":[{
"quantity":1.0,
"unit": "count",
"asin": "myAsinNumber"
}]
}
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AGY3J5MxxxxxxO4WRHHQA"
}
}
...
{
"MessageAttributes": {
"version": {
"type": "String",
"Value": 2.0
}
}
}
{
"notificationInfo": {
"notificationType": "SubscriptionChangedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-09-30T23:27:50.771Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"myDeviceModel": "myDeviceModel"
}
},
"subscriptionInfo": {
"slotsSubscriptionStatus": {
"myFirstSlot": true,
"mySecondSlot": true
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
}
}
バージョンに関する注意
サブスクリプション変更のv2.0については、次の変更点に注意してください。
-
slotsSubscriptionStatus
の構造体が変更されています。各スロットIDは、ブール型のsubscribed
とproductInfoList
構造体 (quantity
、unit
、asin
) を含んだ構造体にマッピングされています。
商品出荷通知
商品出荷通知は、Replenish APIリクエストが正常に受信されて注文が確定し、ユーザーによってキャンセルされず、かつAmazonフルフィルメントによって商品がユーザーに出荷されたときに送信されます。
商品出荷通知の例は次のとおりです。
{
"notificationInfo": {
"notificationType": "ItemShippedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2016-12-02T01:41:59.936Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AGY3J5MKHWP6I2RHDYPJO4WRHHQA"},
"orderInfo": {
"instanceId": "amzn1.dash.v2.o.ci43xxxxxxxxxx0",
"slotId": "myProduct",
"productInfo": [{
"quantity":1.0,
"unit": "count",
"asin": "myAsinNumber",
"estimatedDeliveryDate": "2016-11-16T07:59:59Z"
}]
}
}
}
...
{
"MessageAttributes": {
"version": {
"type": "String",
"Value": 2.0
}
}
}
{
"notificationInfo": {
"notificationType": "ItemShippedNotification",
"lwaClientId": "amzn1.application-oa2-client.6b68exxxxxxxxxx9",
"notificationTime": "2015-10-01T20:43:28.626Z",
"notificationId": "amzn1.dash.notification.v1.xxxxxxxxxxxxx13",
"version": "2015-06-05"
},
"deviceInfo": {
"deviceIdentifier": {
"serialNumber": "mySerialNumber"
},
"productIdentifier": {
"modelId": "myDeviceModel"
}
},
"customerInfo": {
"directedCustomerId": "amzn1.account.AHxxxxxxxxGA2O5Q"
},
"orderInfo": {
"instanceId": "amzn1.dash.v2.o.ci43xxxxxxxxxx0",
"slotId": "myProduct",
"productInfo": [{
"quantity": 12.0,
"unit": "Count"
}],
"estimatedDeliveryDate": "2015-10-07T06:59:59Z"
}
}
バージョンに関する注意
商品出荷のv2.0については、次の変更点に注意してください。
asin
情報がproductInfo内に含まれるようになりました。
estimatedDeliveryDate
がproductInfo内に含まれるようになりました。
MessageAttributes
は、バージョン通知メッセージのバージョンを識別するために使用されています。
v2.0の通知への移行
新しいベンダーとそれに関連付けられている機器は、登録の過程で自動的にv2.0通知をサブスクライブするように設定されます。ただし、既存のベンダーによって新たに登録された機器では、過去に登録された機器に合わせて最も多く利用されているバージョンの通知を受信します。たとえば、v1.0通知をサブスクライブしている機器のベンダーが新しい機器を登録する場合、そのベンダーはv1.0の通知を受信することになります。
OrderPlacedNotification、ItemShippedNotification、SubscriptionChangedNotificationの各通知をv2.0に移行するには、以下の手順に従ってください。
- テストモデルTestNotifV2ForVendorsを使用し、トピックarn:aws:sns:us-east-1:300797413096:TestNotifV2ForVendorsをサブスクライブします。
- このモデル用に新しいテスト機器を作成します。注文を確定するか、機器のサブスクリプションステータスを変更して、v2.0の通知をトリガーします。レスポンスの解析処理が、前掲の仕様に準拠していることを確認してください。
- v2.0の通知を正しく処理していることを確認したら、DRSフォーラムで、次の情報を含む新規投稿を作成します。
- 件名: Upgrade SNS Notifications to v2.0
- v2.0にアップグレードしようとしているのはどの通知メッセージか
- 新しい通知を使用するのはどの機器モデルか
- それらの通知がv2.0にアップグレードされた時点で、Amazonから通知が届きます。