ワンタイム APPKEY
APPKEYの安全な取り扱い
APPKEY は、アプリケーションが AmiVoice API を利用する際の「サービス認証キー文字列」であり、漏洩すると悪用される恐れがあります。APPKEY をアプリケーションに埋め込むと、悪意のある第三者によってアプリケーションから APPKEY を取り出される可能性があります。一般に、ご自身が所有している APPKEY をアプリケーションの利用者のマシンには送付しないでください。代わりに流出しても影響範囲を最小限にできるように有効期限付きのワンタイム APPKEY を利用してください。
- ワンタイム APPKEY は、マイページに記載された APPKEY と同様の機能を持つ「サービス認証キー文字列」ですが、「発行日時と有効時間」にもとづいて「有効期限日時」が設定されている点が異なります。 また、接続元のIPアドレスの制限を設けることができます。
- ワンタイム APPKEY に発行数の上限はありません。
- 特に Web アプリケーションの場合、HTML や JavaScript に APPKEY を記述すると、Web サイトの利用者から閲覧が可能ですので避けてください。
- APPKEY をアプリケーションに埋め込むことが避けられない場合は、APPKEY を難読化、暗号化してください。難読化、暗号化することでアプリケーションから APPKEY を取り出すことが難しくなります。
- 2025/06/30 のマイページリニューアル以前に作成されたアカウントの APPKEY 及び発行されたワンタイム APPKEY は削除出来ません。削除するには退会ののち新たにアカウントを作成する必要があります。
- 2025/06/30 のマイページリニューアル以降 にマイページ上で発行された APPKEY は、マイページ上で手動での削除が可能です。ワンタイム APPKEY 発行 API を使用して発行された APPKEY は、削除出来ません。
ワンタイム APPKEY を使う
ワンタイム APPKEY を使う場合、以下のような実装方法が考えられます。
- アプリケーション利用者を何らかの方法で認証する
- 認証に成功した後、サーバ側で有効期限を設定したワンタイム APPKEY を発行してアプリケーションに送信する
- アプリケーションではワンタイム APPKEY を利用して AmiVoice API を利用する
以下に、ワンタイム APPKEY 発行 API の使い方を説明します。
リクエスト
ワンタイム APPKEY 発行 API を利用するためには、サービス ID(リクエストボディに指定し、パラメータ名は sid
)とサービスパスワード(同、spw
)、もしくは、マイページ上で「APPKEY 発行可能」と設定して発行した APPKEY(Authorization
ヘッダーに指定)の設定が必要です。
sid
とspw
には、マイページの「接続情報」に記載されている[サービス ID]と[サービスパスワード]を設定してください。
サービスパスワードとマイページへのログイン用のパスワードは異なります。
sid
とspw
はリクエストボディにapplication/x-www-form-urlencoded
形式で設定してください。クエリパラメータ(URL の末尾に?
を付けて記載する方法)では指定しないでください。
リクエスト時の HTTP メソッドは、POST
です。
有効時間(リクエストパラメータ名は epi
)は任意に設定できます。epi
に数値で設定する場合はミリ秒単位になります。その他の設定方法はリファレンスを参照してください。epi
を省略した場合はデフォルト値として 30000(30 秒)が設定されます。ワンタイム APPKEY を発行してから、実際に AmiVoice API のリクエストを送信するまでの時間を想定して設定してください。ipa
にAPPKEYを利用できるIPアドレスを指定することができます。
curl コマンドを使って、ワンタイム APPKEY を発行してみます。
例1
IPアドレス 203.0.113.253 からのアクセスのみに制限し、有効期限を発行から 30 秒後に設定します。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.253
sid
とspw
の代わりに APPKEY を使用する場合は、以下のようになります。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d epi=30000 \
-d ipa=203.0.113.253 \
-H "Authorization: Bearer {APPKEY 発行可能な APPKEY}"
例2
IPアドレスを範囲で指定して許可したい場合、CIDRで指定できます。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.0/24
例3
IPアドレスや、その範囲は、,で区切って複数指定もできます。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={サービスID} \
-d spw={サービスパスワード} \
-d epi=30000 \
-d ipa=203.0.113.0/24,198.51.100.0/24
レスポンス
レスポンスはプレーンテキストで、ワンタイム APPKEY を返します。そのまま、リクエストパラメータのauthorization
キーとして設定できます。
エラー時の対処方法
ワンタイム APPKEY に よる接続認証が失敗するケース
遅延(期限切れ)による認証エラー
authorization
キーによる認証要求を受け取るタイミングが、ワンタイム APPKEY に設定された有効期限日時を過ぎている場合、音声認識サービスは以下のようなエラーを返しますので、改めてワンタイム APPKEY を取得してやり直してください。
HTTP インタフェース のエラーレスポンス
{
"code":"-"
"message":"received illegal service authorization"
}
WebSocket インタフェース のエラーレスポンス
s service authorization has expired: 20XX/XX/XX XX:XX:XX.000 +0000 (-21s)
s 応答に含まれる 20XX/XX/XX XX:XX:XX.000 がワンタイム APPKEY の有効期限日時、-21s が有効期限からの遅延時間です。
s コマンド応答パケットではエラーが発生していない場合でも、最初の p パケット送信までに時間が経過して有効期限日時を過ぎてしまった場合には、最初の p パケット送信直後に以下のエラーレスポンスが返ります。
p can’t feed audio data to recognizer server
p パケット送信開始の成功後は、途中で有効期限切れになることはありません。
不正 ID による認証エラー
ワンタイム APPKEY 発行 API に指定するサービス ID・サービスパスワードが誤っている場 合でも、ワンタイム APPKEY は発行されます。AmiVoice API のリクエスト時に、誤ったサービス ID、パスワードで作成された不正なワンタイム APPKEY を指定すると、以下のような認証エラーを返します。
HTTP インタフェース のエラーレスポンス
{
"code":"-"
"message":"received illegal service authorization"
}
WebSocket インタフェース のエラーレスポンス
s can't verify service authorization
この場合は、ワンタイム APPKEY 発行依頼時に指定するサービス ID(sid
)、サービスパスワード(spw
)が正しい値になっているかを確認してください。
ワンタイム APPKEY 発行 API の詳細については、リファレンスのワンタイム APPKEY 発行 APIを参照してください。