スキルにメッセージを送信するようアプリケーションやサービスを設定する

スキルにメッセージを送信するようアプリケーションやサービスを設定する

開発中のスキルに対応するサードパーティアプリケーションのバックエンドには、スキルにメッセージを送信することを認可させる必要があります。認可には、アクセストークンを使います。アクセストークンの取得には、開発者のサーバーからHTTPS接続でPOSTリクエストを発行します。

関連トピック:AlexaスキルのスキルイベントスキルメッセージングAPIリファレンス

アクセストークン取得リクエストの形式

このセクションでは、アクセストークンを取得するPOSTリクエストの形式について説明します。

HTTPヘッダー

POST /auth/O2/token HTTP/1.1
Host : api.amazon.com
Content-Type : application/x-www-form-urlencoded;charset=UTF-8

HTTPヘッダーのパラメーター

パラメーター説明
Content-Typeリソースのコンテンツタイプです。application/x-www-form-urlencodedの形式である必要があります。Content-Type: application/x-www-form-urlencoded

リクエスト本文の構文

grant_type=client_credentials&client_id=(clientID)&client_secret=(clientSecret)&scope=alexa:skill_messaging

リクエスト本文のパラメーター

パラメーター説明
grant_type 値はclient_credentialsにする必要があります。 grant_type=client_credentials
client_id Amazon開発者ポータルから取得したClientIdの値です。 client_id=amzn1.iba-client.b2b360f8a77d457981625636121d6edf
client_secret Amazon開発者ポータルから取得したClientSecretの値です。 client_secret=c559965801308f2bb79ca787b1dfc8deece8a2fd7d7618946cec1635d26dcbfb
scope 有効な値: alexa:skill_messaging scope=alexa:skill_messaging

cURLリクエストのサンプル

curl -k -X POST -H

'Content-Type: application/x-www-form-urlencoded' -d

'grant_type=client_credentials&client_id=xxxx&client_secret=yyyy&scope=alexa:skill_messaging'

https://api.amazon.com/auth/O2/token

応答の形式

ここでは、アクセストークンを要求するPOSTリクエストへの応答形式について説明します。

HTTPヘッダー

X-Amzn-RequestId: d917ceac-2245-11e2-a270-0bc161cb589d

Content-Type: application/json
パラメーター説明
X-Amzn-RequestIdサーバーで作成された値です。リクエストを一意に識別します。問題が発生する場合、Amazonはこの値をトラブルシューティングに使用します。X-Amzn-RequestId: d917ceac-2245-11e2-a270-0bc161cb589d
Content-Typeリソースのコンテンツタイプ: application/jsonContent-Type: application/json

応答本文の構文

{
    "access_token":"Atc|MQEWYJxEnP3I1ND03ZzbY_NxQkA7Kn7Aioev_OfMRcyVQ4NxGzJMEaKJ8f0lSOiV-yW270o6fnkI",
    "expires_in":3600,
    "scope":"alexa:skill_messaging",
    "token_type":"Bearer"
}

応答のパラメーター

パラメーター説明
access_tokenアクセストークンです。すべてのリクエストに使用します。"access_token":"Atc|MQEWYJxEnP3I1ND03Zz..."
expires_inアクセストークンの有効期間(秒)です。3600の場合、アクセストークンは応答が生成されてから1時間で無効になります。"expires_in":3600
scopeアクセストークンリクエストで指定したスコープです。値は、alexa:skill_messagingとなります。"scope":"alexa:skill_messaging"
token_type発行されるトークンのタイプです。ベアラートークンのみがサポートされます。"token_type":"Bearer"

リクエストが正常に完了しなかった場合、200以外のエラーステータスコードを受信します。200以外のコードの場合、応答メッセージのJSONObject本文に以下のパラメーターが含まれることがあります。

  • reason: «(リクエストが承認されなかった理由が表示されます)»

エラー

ステータスコード説明
400INVALID_REQUESTこの応答には、以下の理由が考えられます。
- 認可サーバーでコンテンツタイプがサポートされていません。コンテンツタイプがapplication/x-www-form-urlencodedではありません。
- リクエストに次の必須パラメーターがありません。grant-typescopeclient_idclient_secret
- リクエストの形式が正しくありません。
400 UNAUTHORIZED_CLIENT クライアントにリクエストされた操作を行う認可がありません。
400 UNSUPPORTED_GRANT_TYPE grant種別が認可サーバーでサポートされていません。grant種別がclient_credentialsでありません。
400 INVALID_SCOPE リクエストされたスコープが無効です。alexa:skill_messagingではありません。
401 INVALID_CLIENT クライアントの認証に失敗しました。
500 SERVER_ERROR 内部サーバーエラーです。リクエスターはリクエストを再試行できます。
503 SERVICE_UNAVAILABLE サーバーが一時的に使用できません。リクエスターは応答のRetry-Afterヘッダーを参照して再試行する必要があります。Retry-After値の形式については、HTTP/1.1仕様のセクション14.37を参照してください。

トークンを取得すると、アプリケーションはスキル管理APIを呼び出してスキルにメッセージを送信できるようになります。