あなたのAlexaコンソール
?
サポート

リストスキルの作成と管理: FAQ

リストスキルの作成と管理: FAQ

このよくある質問のリストでは、リストスキルの作成と管理のさまざまな側面について説明します。

Q:スキルでは、アカウントリンクとこれらのリスト管理機能の両方を使用できますか?

はい。この機能により、スキルの開発者はお客様のAlexaリストを外部アプリ内で参照できます。アカウントリンクのセットアップの詳細については、「Alexaユーザーをシステムのユーザーにリンクする」を参照してください。

Q:Alexaのお客様は、2つ以上のスキルに対してAlexa To Doリストと買い物リストへのアクセスを許可できますか?

はい。

Q:お客様は自分のAlexaリストを削除できますか?

お客様はデフォルトのAlexaリストを削除できませんが、Alexaリストにあるすべてのアイテムを削除できます。お客様はカスタムリストを削除できますが、その場合は最初にすべてのアイテムを削除する必要があります。

Q:お客様は、単一のAlexaリストへのアクセスを許可できますか?

いいえ、お客様はスキルに共有するリストを制限することはできません。ただし、スキルは関係するリストのみにアクセスすることを選択できます。

Q:これらのリスト管理機能は、カスタムリストのメタデータをサポートしていますか?

いいえ。

Q:Alexaのお客様は、自分のリストをAmazon内の他のお客様と共有できますか?

はい、他のお客様が同じAmazonファミリー内にいる場合は可能です。Amazonファミリーについては、「Alexa端末上のファミリープロフィール」をご覧ください。

質問: スキル管理API(SMAPI)を使用して作成されたリストスキルをAmazon開発者ポータルで表示するには、どうすればよいですか?

リストスキルは、SMAPIを使用して作成する必要があり、SMAPIでのみ表示および編集が可能です。Amazon開発者ポータル(https://developer.amazon.com/)でリストスキルを表示および編集することはできません。

質問: お客様のアクションによってイベントが生成されるのはいつですか?

お客様がリストスキルを有効にすると、お客様がリストのアイテムを追加、変更、または削除したときにリストイベントが生成されます。スキルイベントは、お客様がスキルを有効または無効にしたとき、サードパーティのアカウントをスキルにリンクまたはリンク解除したとき、スキルに権限を付与したとき、またはスキルに付与される権限を変更したときに生成されます。

質問: alexa_user_idlist_idlist_item_idなどのIDは、お客様がスキルイベントを生成した後も存続しますか?

alexa_user_idの値は、お客様がスキルを無効にしてから再度有効にすると、そのたびに変更されます。アカウントのリンクまたはリンク解除によってalexa_user_idの値が変更されることはありません。list_idおよびlist_item_idの値は、スキルが無効になってから再度有効になったときでも変更されません。

質問: 開発者はTo Doリストと買い物リストのローカライズをどのように処理すべきですか?

デフォルトリスト(To Doリストと買い物リスト)のlist_idの値は、以下の形式を持つbase64エンコード文字列です。

  • -TASK</code>(To Doリスト)</li>
  • -SHOPPING_LIST</code>(買い物リスト)</li> </ul>

    開発者は、list_idの値をbase64でデコードし、末尾の指定された文字列を検索できます。この文字列は不変であり、ローカライズに依存しません。

    質問: お客様はリストの読み取り権限と書き込み権限のいずれか1つだけを付与できますか?

    お客様は、リストの読み取り権限と書き込み権限のいずれかまたは両方を付与できます。

    質問: リストAPIはべき等ですか?削除したアイテムを再度削除できますか?

    アイテムを削除すると、そのアイテムはシステムに存在しなくなるため、そのアイテムを削除する後続の呼び出しでは「Object not found」例外がスローされます。同様に、アイテムを作成する呼び出しを複数回行った場合、個々の呼び出しがまったく同じでも、複数のアイテムが作成されます。

    質問: イベント呼び出しにはどのようなタイムアウトが適用されますか?特に最初のリンクでは、最初の「同期」が非常に大規模で遅くなる可能性があります。

    AWS Lambdaスキルサービスのタイムアウト時間は、デフォルトで30秒です。この値は、スキルサービスの設定で変更できます。HTTPSエンドポイントのタイムアウトは10秒です。

    質問: サーバーはどのようなロジックでリストイベントとスキルイベントを再試行しますか?

    システム再試行の間隔は指数関数的に増加します。最初の間隔は30秒で、エンドポイントがメッセージを受信できなかったときに2倍になります。再試行が行われる期間は最大で1時間です。再試行の間隔は最大で30分です。スキルメッセージAPIによって送信されるメッセージの場合、再試行の最大期間はexpiresAfterSecondsフィールドを使用して設定され、最大24時間(86,400秒)まで設定できます。

    質問: リストAPIの呼び出しとリストイベントでは、日付と時刻の形式が異なりますか?

    リストイベントでは、ISO8061形式の日付と時刻が使用されます。リストAPIは、「Sat Jul 22 10:41:04 UTC 2017」という形式で日付と時刻を返します。

    質問: お客様はリージョンを変更できますか? その場合、リストAPIを呼び出すために異なるAPIエンドポイントが必要ですか?

    はい、お客様はリージョンを変更できますが、同じエンドポイントを使用してリストAPIを呼び出すことができます。システム内部では、お客様が優先するマーケットプレイスに従ってリクエストがルーティングされます。お客様が優先するマーケットプレイスを変更した場合、スキルによって制御されるデータは自動的には移行されません。

    質問: リストアイテムの移動はリストアイテム削除イベントとリストアイテム作成イベントで表されますか?item_idは維持されますか?

    お客様がAlexaアプリを使用してリスト間でアイテムを移動すると、この操作に対して2つのイベントが生成されます。これらのイベントは、移動元リストのItemsDeletedイベントと移動先リストのItemsCreatedイベントです。item_idの値は維持されます。

    開発者は、イベントが自分のスキルによってトリガーされたかどうかを判別できますか?

    次のシナリオについて考えてみましょう。

    • お客様がアプリでTo Doを作成します。
    • スキルサービスは、スキルメッセージAPIを使用してスキルにメッセージを送信し、Alexaにリストアイテムを作成します。
    • スキルは、スキルメッセージAPIのメッセージと、householdlistおよびリストアイテムに対するPOSTを受信します。

    POSTへの応答として、スキルサービスはalexa_item_idをローカルに記録します。リストアイテムが作成された時点で、ItemsCreateイベントも発生します。Alexaは、リストAPIの呼び出しによってリストアイテムが作成された場合でもイベントをトリガーします。スキル開発者は、CreateListItemから返されたitem_idの値を使用してアイテムを一意に識別できます。

    質問: リストAPIを呼び出してセッション外の承諾トークンを取得する呼び出しの例は、どのようなものですか?

    スキルメッセージAPIのセッション外トークンを取得するには、次のようにします。

    POST /auth/o2/token HTTP/1.1
    Host: api.amazon.com
    Content-Type: application/x-www-form-urlencoded
    Cache-Control: no-cache
    client_id=amzn1.application-oa2-client.e8621d747d6742d4a7aff2bbc614fc0d&client_secret=9ef36f40378fa1a7XXXXXXXXXXX12acd650030b07bb0fcc7e467&grant_type=client_credentials&scope=alexa%3Askill_messaging
    

    応答は次のとおりです。

    {
    &nbsp "access_token": "Atc|XXXXXXXXXXXXXXXXXUSyLA",
    &nbsp "scope": "alexa:skill_messaging",
    &nbsp "token_type": "bearer",
    &nbsp "expires_in": 3600
    }
    

    スキルメッセージAPIにメッセージを投稿するには、次のようにします。

    POST /v1/skillmessages/users/amzn1.ask.account.XXXXXXXXXXXXXX HTTP/1.1
    Host: api.amazonalexa.com
    Authorization: Bearer Atc|XXXXXXXXXX
    Content-Type: application/json
    Cache-Control: no-cache
    Postman-Token: 98b62082-ff25-a7de-f33b-95d9424beb22
    {"data":{"notificationTitle":"NewMessagefromBackend","spokenOutput":"Hi,This is the message sent from Backend."},"expiresAfterSeconds":60}
    Response: 202 Accepted
    

    質問: クライアントIDはスキルに固有のものですか?

    ClientIdClientSecretはスキルに固有のものであり、ClientIdの値とスキルは1対1で対応します。同様に、実際のお客様とスキルのalexa_user_idも1対1で対応します。複数のAlexaスキルを有効にしたお客様は、スキルごとに異なる一意のalexa_user_idを持っています。

    たとえば、お客様が2つのスキルABCSkillXYSSkillを持っており、クライアントIDがそれぞれClientId_ABCClientId_XYSだとします。

    お客様がABCSkillとXYSSkillを有効にすると、各スキルは別個のalexa_user_idを持ちます。たとえば、ABCSkillAlexaUserId_ABCXYZSkillAlexaUserId_XYSを持ち、これらは同じではありません。

    ClientId_ABC、ClientSecret_ABC、AlexaUserId_ABCの組み合わせを使用してスキルメッセージAPIを呼び出すと、正しい応答が返されます。ClientId_XYZClientSecret_XYZAlexaUserId_XYZの組み合わせにも同じことが言えます。

    質問: スキルサービスはスキルエンドポイントで受信したイベントが本物であることをどのようにして確認しますか?

    Alexa Skills Kitのセキュリティテスト」を参照してください。アクセストークンだけに頼って受信したリクエストの検証を行わないでください。すべてのサードパーティスキルは、リクエストの署名を検証して、リクエストがAlexaから送信されたことを確認する必要があります。そうしないと、スキルは認証に合格してライブになることができません。