有料スキルインターフェースのリファレンス
有料スキルインターフェースには、スキルの購入ステータスを確認し、Amazonの購入フローとキャンセルフローを呼び出すAPIが含まれます。
ユーザーの購入ステータスクエリ
各スキルセッションの開始時にユーザーの購入ステータスを取得し、購入フローを呼び出すか有料スキルコンテンツを継続するかを判断します。このインターフェースは、ユーザーがスキルを購入した場合または無料お試し中の場合、ENTITLED
を返します。無料お試し期間が終了している場合、ユーザーがサブスクリプションをキャンセルした場合、ユーザーが対象のスキルを購入していない場合は、NOT_ENTITLED
が返され、ユーザーがスキルを購入できるかどうかが示されます。
特定のアクティビティのユーザーの購入ステータスを取得するには、inSkillProducts
リソースに対してHTTP GET
リクエストを実行します。
リクエスト
GET /v1/users/~current/skills/~current/inSkillProducts/{id}
Host: {apiEndpoint}
Accept-Language: {locale}
Authorization: Bearer {apiAccessToken}
ヘッダーパラメーターの詳細をリクエストする
フィールド | 説明 | 型 |
---|---|---|
|
有料スキルを識別します。このフィールドではスキルIDを使用します。 |
文字列 |
|
|
文字列 |
|
ユーザーのロケールに設定します。例: |
文字列 |
|
認証と認可に使用するアクセストークンです。 |
文字列 |
このリクエスト本文は空です。
応答
応答を使用して、お勧めを提示するか有料スキルコンテンツを継続するかを決定します。以下は、購入可能な開発段階のスキルへの応答の例です。
{
"productId": "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3",
"name": "スキル名",
"type": "ENTITLEMENT",
"summary": "スキルの説明",
"purchasable": "PURCHASABLE",
"entitled": "NOT_ENTITLED",
"entitledReason": "NOT_PURCHASED",
"activeEntitlementCount": 0,
"purchaseMode": "TEST",
"referenceName": ""
}
以下の表に応答コードを示します。
HTTPステータスコード | HTTPステータス | 説明 |
---|---|---|
200 |
Success |
リクエストされたスキルと購入ステータスを返します。 |
400 |
Invalid Request |
リクエストが無効であることを示します。応答本文に、リクエストが無効である理由を示す特定のエラーメッセージを含めることができます。 |
401 |
Unauthorized |
リクエストに認可トークンが含まれていない、トークンが無効または有効期限切れ、またはスキルにリクエストの権限がありません。 |
404 |
Not Found |
指定されたアクティビティIDのスキルが見つかりません。このエラーは、スキルの最新版を公開し、そのスキルを本番環境で使用できない場合に表示されることがあります。 |
500 |
Server Error |
サーバーでエラーが発生しました。スキルの再試行には指数バックオフを使用します。 |
応答本文パラメーターの詳細
成功すると、応答本文にスキル購入の詳細が含まれます。
フィールド | 説明 | 型 |
---|---|---|
|
有料スキルを識別します。スキルIDに設定します。 |
文字列 |
|
|
文字列 |
|
スキルの支払いモデルです。 |
列挙型文字列 |
|
|
文字列 |
|
ユーザーがこのスキルを購入できるかどうかを示します。ユーザーが既にスキルを所有している場合、 |
列挙型文字列 |
|
ユーザーがこの有料スキルを使用できるかどうかを示します。 |
列挙型文字列 |
|
entitledのステータスの理由を示します。ユーザーが無料お試しを使用している場合やスキルを既に購入している場合は、 |
列挙型文字列 |
|
(省略可能)有料スキルについては常にゼロに設定されます。 |
整数 |
|
ユーザーが公開中と開発段階のどちらでスキルを購入したかを示します。開発段階ではユーザーに対する課金は発生しません。 |
列挙型文字列 |
|
(省略可能)有料スキルについては常に空の文字列に設定します。 |
文字列 |
エラーの場合、応答本文にエラーの理由を示すmessage
文字列を含めることができます。
Buyリクエスト
Amazon購入フローを開始するには、インテントハンドラーからAlexaへの応答にConnections.SendRequest
ディレクティブを含めます。このディレクティブは、Skill Connectionsインターフェースを使用してBuy
タスクを呼び出します。有料スキルを識別するには、productID
をスキルIDに設定します。
Buy
リクエストを送信すると、スキルセッションは終了します。関連するユーザーデータは、必ず永続的なデータストアに保存してください。購入フローの完了後、Alexaがスキルを再開します。保存されたデータを使用してスキルを続行できます。永続アトリビュートの詳細については、Node.js、Java、PythonのASK SDKドキュメントを参照してください。以下の例は、購入フローを開始するリクエストを示しています。
このサンプルコードはAlexa Skills Kit SDK for Node.js(v2)を使用しています。
return handlerInput.responseBuilder
.addDirective({
type: "Connections.SendRequest",
name: "Buy",
payload: {
InSkillProduct: {
productId: "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3",
}
},
token: "correlationToken"
})
.getResponse();
購入リクエストのConnections.SendRequest
ディレクティブのJSON構文です。
{
"directives": [
{
"type": "Connections.SendRequest",
"name": "Buy",
"payload": {
"InSkillProduct": {
"productId": "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3"
}
},
"token": "correlationToken"
}
]
}
Buyタスクの定義
プロパティ | 説明 | 型 |
---|---|---|
|
リクエストのタイプです。 |
文字列 |
|
呼び出すタスクの名前です。 |
文字列 |
|
購入に必要なパラメーターが含まれます。 |
|
|
(オプション)購入フローが完了したときにAlexaが応答で返す文字列です。たとえば、このトークンを使用して、購入後にスキルを再開するための情報を保存できます。 |
文字列 |
リクエストをキャンセルする
キャンセルリクエストの場合は、インテントハンドラーからAlexaへの応答にConnections.SendRequest
ディレクティブを含めます。このディレクティブは、Skill Connectionsインターフェースを使用してCancel
タスクを呼び出します。有料スキルを識別するには、productID
をスキルIDに設定します。
Cancel
リクエストを送信すると、スキルセッションは終了します。関連するユーザーデータは、必ず永続的なデータストアに保存してください。購入フローの完了後、Alexaがスキルを再開します。保存されたデータを使用してスキルを続行できます。永続アトリビュートの詳細については、Node.js、Java、PythonのASK SDKドキュメントを参照してください。以下の例は、キャンセルフローを開始するリクエストを示しています。
このサンプルコードはAlexa Skills Kit SDK for Node.js(v2)を使用しています。
return handlerInput.responseBuilder
.addDirective({
type: 'Connections.SendRequest',
name: 'Cancel',
payload: {
InSkillProduct: {
productId: "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3",
}
},
token: "correlationToken"
})
.getResponse();
キャンセルリクエストのConnections.SendRequest
ディレクティブのJSON構文です。
{
"directives": [
{
"type": "Connections.SendRequest",
"name": "Cancel",
"payload": {
"InSkillProduct": {
"productId": "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3"
}
},
"token": "correlationToken"
}
]
}
Cancelタスクの定義
プロパティ | 説明 | 型 |
---|---|---|
|
リクエストのタイプです。 |
文字列 |
|
呼び出すタスクの名前です。 |
文字列 |
|
購入に必要なパラメーターが含まれます。 |
|
|
(オプション)購入フローが完了したときにAlexaが応答で返す文字列です。たとえば、このトークンを使用して、キャンセル後にスキルを再開するための情報を保存できます。 |
文字列 |
購入とキャンセルの応答
スキルは、購入またはキャンセルリクエストの結果をConnections.Response
リクエストとして受け取ります。payload
に含まれるpurchaseResult
に基づいてスキルを再開します。
以下は、購入フローへの応答の例です。
{
"type": "Connections.Response",
"requestId": "string",
"timestamp": "string",
"name": "Buy",
"status": {
"code": "200",
"message": "OK"
},
"payload": {
"purchaseResult": "ACCEPTED",
"productId": "amzn1.ask.skill.efd6d738-0a1b-4f14-ae0f-6e2174bd6be3",
"message": "任意の追加メッセージ"
},
"token": "correlationToken"
}
Connections.Responseの定義
プロパティ | 説明 | 型 |
---|---|---|
|
リクエストのタイプです。常に |
文字列 |
|
Connections.Responseリクエストの一意のIDです。 |
文字列 |
|
Connections.Responseリクエストの時間です。 |
文字列 |
|
この応答が適用されるリクエストの名前です。 |
文字列 |
|
HTTPステータスの結果です。 |
|
|
購入またはキャンセルリクエストの結果を含みます。 |
|
|
(オプション)購入またはキャンセルフローが完了したときにAlexaが応答で返す文字列です。たとえば、このトークンを使用して、購入後にスキルを再開するための情報を保存できます。 |
文字列 |
オブジェクトの定義
Payloadリクエストオブジェクト
このリクエストに含まれるPayload
オブジェクトは有料スキルを定義します。
Payloadオブジェクトの詳細
プロパティ | 説明 | 型 |
---|---|---|
|
有料スキルを定義します。1つのオブジェクトを含みます。 |
|
InSkillProductオブジェクト
InSkillProduct
オブジェクトは有料スキルIDを定義します。AlexaはこのスキルIDを使用して購入の詳細を検索します。
InSkillProductオブジェクトの詳細
プロパティ | 説明 | 型 |
---|---|---|
|
自分のスキルIDに設定します。 |
文字列 |
Payload応答オブジェクト
Connections.Response
リクエストに含まれているPayload
オブジェクトです。
Payloadオブジェクトの詳細
プロパティ | 説明 | 型 |
---|---|---|
|
購入またはキャンセルリクエストの結果です。 |
文字列 |
|
リクエストで送信された有料スキルIDです。 |
文字列 |
|
(オプション)キャンセルまたは購入トランザクションに関するそのほかの詳細です。 |
文字列 |
Statusオブジェクト
リクエストに含まれるStatus
オブジェクトです。
Statusオブジェクトの詳細
プロパティ | 説明 | 型 |
---|---|---|
|
HTTP応答のステータス(200、400、404など)です。 |
文字列 |
|
HTTPステータスメッセージ(OKなど)です。 |
文字列 |
関連トピック
最終更新日: 2022 年 01 月 24 日