スキルにメッセージを送信するようアプリケーションやサービスを設定する
Note: Sign in to the developer console to build or publish your skill.
スキルにメッセージを送信するようアプリケーションやサービスを設定する
開発中のスキルに対応するサードパーティアプリケーションのバックエンドには、スキルにメッセージを送信することを認可させる必要があります。認可には、アクセストークンを取得します。 アクセストークンの取得には、開発者のサーバーからHTTPS接続でPOSTリクエストを発行します。
注: これらのリクエストには、スキルの
ClientId
値とClientSecret
値が必要です。これらの値を確認するには、開発者コンソールのスキルリストに移動します。スキルに権限を設定すれば、スキルIDおよびクライアントシークレットを表示のリンクが表示されます。このリンクをクリックすると、スキルID、クライアントID、クライアントシークレットがポップアップ表示されます。後で使用できるようこれらの値をコピーしておきます。関連トピック: 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 |
開発者コンソールで取得したClientId 値です。 |
client_id=xxxx |
client_secret |
開発者コンソールで取得したClientSecret 値です。 |
client_secret=xxxx |
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/json ) | Content-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
: « リクエストが受け付けられなかった理由が入ります。 »
エラー
ステータスコード | 型 | 説明 |
---|---|---|
400 | INVALID_REQUEST | この応答には、以下の理由が考えられます。 - 認可サーバーでコンテンツタイプがサポートされていません。つまり、これは application/x-www-form-urlencoded ではありません。- リクエストに次の必須パラメーターがありません: grant-type 、scope 、client_id 、client_secret 。- リクエストの形式が正しくありません。 |
400 | UNAUTHORIZED_CLIENT | クライアントは、リクエストされた操作を行うことを認可されていません。 |
400 | UNSUPPORTED_GRANT_TYPE | 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を呼び出してスキルにメッセージを送信できるようになります。