有料スキルの実装方法

有料スキルの実装方法

新しいカスタムスキルを開発し、有料スキルとして定義できます。購入フローをAlexaへの引き渡しとしてスキルロジックに追加し、ユーザーに購入手順を案内します。

有料スキルを実装するには、以下の手順に従います。有料スキルの概要については、有料スキルの概要を参照してください。

前提条件

スキルを有料スキルに指定できるのは、カスタム音声対話モデルを選択し、有料スキルをサポートする言語でそのスキルを開発した場合です。カスタムスキルの詳細については、カスタムスキルとはを参照してください。

有料スキルを提供できる言語は 英語(米国)とスペイン語(米国)です。

購入フローとキャンセルフローをデザインする

スキルを有料スキルとして提供する場合は、お勧めと、購入を完了するためのAlexaへの引き渡しをデザインします。また、キャンセルと返金のフローもデザインするようにします。詳細については、購入フローとキャンセルフローのデザインを参照してください。

購入の詳細を設定する

有料スキルは、買い切り型またはサブスクリプション型として提供できます。Alexa開発者コンソールを使用して支払いモデルと購入の詳細を設定します。詳細については、購入の詳細の定義を参照してください。

購入インテントとキャンセルインテントを追加する

購入フローおよびキャンセルフローをデザインしたら、カスタムインテントを追加します。インテントを追加することで、ユーザーが直接Alexaにスキルを購入、キャンセル、返金するよう求めるケースに対応できます。

以下の例は、サブスクリプション型の支払いモデルによる有料スキル「クイックトリビア」の購入インテントとキャンセルインテントを示しています。

{
    "interactionModel": {
        "languageModel": {
            "invocationName": "クイックトリビア",
            "intents": [
                {
                    "name": "AMAZON.CancelIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.HelpIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.StopIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.NavigateHomeIntent",
                    "samples": []
                },
                {
                    "name": "AMAZON.FallbackIntent",
                    "samples": []
                },
                {
                    "name": "BuyIntent",
                    "slots": [],
                    "samples": [
                        "クイックトリビアを買って",
                        "クイックトリビアを購入して",
                        "クイックトリビアが欲しい",
                        "クイックトリビアをお願い"
                    ]
                },
                {
                    "name": "CancelSubscriptionIntent",
                    "slots": [],
                    "samples": [
                        "クイックトリビアのサブスクリプションをキャンセルして",
                        "クイックトリビアのサブスクリプションを止めて",
                        "クイックトリビアはいらない"
                        "クイックトリビアを返金して"
                    ]
                }
            ]

        }
    }
}

スキルコードに購入リクエストとキャンセルリクエストを追加する

この手順では、ユーザーの購入ステータスクエリ、購入リクエスト、キャンセルリクエストをスキルコードに追加します。

ユーザーの購入ステータスを確認する

各スキルセッションの開始時に、購入フローを呼び出すか有料スキルコンテンツを継続するかを判断するために、ユーザーの購入ステータスを取得します。ユーザーの購入ステータスクエリで返されるentitledステータスがENTITLEDに設定されている場合は、ユーザーが対象のスキルを購入済みであること、または無料お試し中であることを示します。ユーザーが対象のスキルを購入していない場合、無料お試しが終了している場合、ユーザーがサブスクリプションをキャンセルした場合は、NOT_ENTITLEDが返されます。

購入フローを呼び出す

スキルは、以下の場合にスキルセッションをAmazon購入フローに引き渡します。

  • 購入ステータスクエリによってユーザーがスキルを購入していないことが示され、提供できる無料コンテンツがない場合。
  • ユーザーが音声でAlexaにスキルの購入を依頼し、対象のスキルが購入インテントを受け取った場合。

購入フローに引き渡すには、インテントハンドラーからAlexaへの応答にBuyリクエストを含めます。購入フローが開始されると、スキルセッションは終了します。Amazonは、音声対話モデルと、購入のあらゆるしくみをサポートしています。

Buyリクエストを送信すると、スキルセッションは終了します。関連するユーザーデータは、必ずAWS DynamoDBやS3などの永続的なデータストアに保存してください。永続ストレージは任意のものを使用できます。

購入フローの完了後、Alexaがスキルを再開します。purchaseResultに基づいて、スキルをシームレスに継続するコードを追加します。詳細については、購入とキャンセルの応答を参照してください。

キャンセルと返金を処理する

ユーザーがAlexaにスキルのサブスクリプションをキャンセルするよう依頼した場合、または返金をリクエストした場合、スキルはキャンセルインテントを受け取ります。購入フローと同様、スキルはキャンセルリクエストと返金リクエストをAlexaに引き渡します。キャンセルして返金を行うには、Alexaへの応答にCancelリクエストを含めます。

Cancelリクエストを送信すると、スキルセッションは終了します。関連するユーザーデータは、必ず永続的なデータストアに保存してください。

キャンセルフローの完了後、Alexaがスキルを再開します。purchaseResultに基づいて、スキルを継続または終了するコードを追加します。詳細については、購入とキャンセルの応答を参照してください。

スキルをテストする

スキルをテストする準備ができたら、Alexa開発者コンソールのAlexaシミュレーターを使用できます。スキルの認定を申請する前に、以下の有料スキルのテストシナリオを完了してください。また、認定のテスト要件も完了してください。詳細については、認定の要件を参照してください。

テストが完了したら、一般公開するのではなく、人数が制限されたテスターグループでスキルをテストすることもできます。詳細については、Alexaスキルのベータテストを行うを参照してください。

購入フローをテストする

開発段階では、スキルに関連付けられた開発者アカウントにAmazonから課金が行われることはありません。テスト中は、reset-isp-entitlementコマンドを使用して購入のステータスをリセットできます。

以下のテストシナリオを含めます。

  • さまざまな応答を含む購入ステータスクエリ
  • 選択した支払いモデルの購入フロー(直接購入とお勧め後を含む)
  • ユーザーが購入を拒否した場合
  • ユーザーがサブスクリプションをキャンセルした場合
  • ユーザーがサブスクリプションのキャンセルを依頼したものの、その後サブスクリプションを継続した場合
  • ユーザーが返金を依頼した場合

さまざまなマーケットプレイスでテストする

スキルが複数のマーケットプレイスをサポートしている場合、Alexaシミュレーターを使用して、各マーケットプレイスのデフォルトのロケールで購入をテストできます。シミュレーターでは、開発者アカウントを使用して各マーケットプレイスをテストできます。実際のEchoデバイスでテストする場合は、マーケットプレイスごとにアカウントを作成する必要があります。

各マーケットプレイスの購入をテストするには

  1. Alexa開発者コンソールにサインインします。
  2. 一覧からスキルを検索します。
  3. アクション編集を選択します。
  4. テストページのこのスキルでは、テストは無効になっています開発中を選択します。
  5. Alexaシミュレータの下で、購入をテストするロケールを選択します。

    ロケールを選択するドロップダウンを示すAlexa開発者コンソールのスクリーンショット。
  6. 音声またはテキストを使用してスキルを開始し、適宜スキルを操作します。
    Alexaシミュレーターは、選択されたロケールに応じて、購入フローで地域のデフォルトロケールに対応した価格を使用します。

ユーザーエクスペリエンスをテストする

スキルは、カスタムスキルのユーザーエクスペリエンステストに合格する必要があります。その後、以下のテストを完了してください。

テスト 想定される結果

スキルを開き、スキルの購入シナリオを呼び出す。

お勧めが適切で、ユーザーはスキルが購入を勧めている内容を理解できます。購入プロンプトには標準価格が含まれません。お勧めと購入プロンプトは別のものになっています。

スキルの購入シナリオを直接呼び出す。

お勧めが適切で、ユーザーはスキルが購入を勧めている内容を理解できます。購入プロンプトには標準価格が含まれません。お勧めと購入プロンプトは別のものになっています。

スキルを開き、購入を無事に完了してから、スキルセッションを終了する。スキルセッションを再開してから、スキルを使用してみる。

スキルがユーザーの購入ステータスチェックを正しく処理したため、ユーザーはそのスキルを別のセッションで使用できます。ユーザーが既に所有しているスキルのお勧めを受け取らないようにします。

スキルを購入する。

アイテムごとの領収書を確認します。商品の説明と画像が、購入した商品を正しく反映しています。

無効な支払い情報でスキルの購入を試行する。

ユーザーは購入フローで失敗の理由を聞き取ります。スキルはその情報を繰り返さずに、無料コンテンツを再開するか、スキルセッションを終了します。

購入シナリオを拒否で完了する。

ユーザーはお勧めを受け入れますがオファーを断ります。ユーザーがスキルの再開後にお勧めを受け取らないようにします。

サブスクリプション型の支払いモデルの場合、音声によるリクエストでサブスクリプションをキャンセルする。

ユーザーは、正常にサブスクリプションをキャンセルできます。ユーザーは、現在のサブスクリプション期間が終了するまでスキルにアクセスできます。ユーザーは、サブスクリプション期間の終了後はスキルにアクセスできなくなります。

買い切り型の購入モデルの場合、返金を依頼する。

ユーザーが返金を依頼すると、スキルセッションは終了します。ユーザーのAlexaアプリにAmazonカスタマーサポートへのリンクが表示されます。

公開中のスキルをテストする

スキルに関連付けられた開発者アカウントでは、開発中の購入料金は発生しません。ユーザーエクスペリエンスを完全にテストするには、開発者アカウント以外のアカウントで最終テストに合格してください。公開中のスキルのテストでは、Amazonはすべての購入について課金を行います。

スキルの認定を申請する

テストが完了したら、スキルの詳細と購入可能状況を定義します。スキルにはアイコンを関連付け、アイコンのURLは正しく解決されるものである必要があります。

スキルの認定を申請する前に、スキルがすべての認定テスト要件を確実に満たすようにします。また、納税者確認インタビューを完了し、支払い情報を入力する必要もあります。

スキルの認定を申請します。詳細については、スキルをテストして認定を申請するを参照してください。

支払いを受け取る

認定を受け、Alexa有料スキルを公開したら、ロイヤリティを受け取ることができるようになります。支払いの受領の詳細については、支払いの受け取りを参照してください。

スキルのメトリクスと収益を確認する

スキルのパフォーマンスは開発者コンソールでモニタリングできます。開発者コンソールのレポートページでスキルメトリクスを確認し、レポートを生成します。利用可能なメトリクスの詳細については、スキルのレポートとはを参照してください。

開発者コンソールの収益および支払いタブを使用して、売上レポートと分析を確認できます。ここには、購入、コンバージョン、リテンション率、返金、キャンセルなどの情報が含まれています。