Skip to content

Alexaカスタムスキルをウェブサービスとしてホスティングする場合に利用できるリクエスト検証処理をPHPで作成しました。

Notifications You must be signed in to change notification settings

poropi/AlexaValidate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Alexaリクエスト検証処理プログラム

Alexaの自作スキル作成時、AWS LambdaではなくPHPでエンドポイントを作成する場合、
以下のリクエスト検証処理を実装する必要がございます。

https://developer.amazon.com/ja/docs/custom-skills/host-a-custom-skill-as-a-web-service.html

しかし、一から組むとなると結構大変になりますが、
一度組んでしまえば、使いまわしができるので、クラスとして利用できる処理を実装してみました。
よろしければ、使ってやってください。

まあ、Alexa PHP とかって検索かければもっと役立つライブラリがあるので、
そっちを使ってみてもいいかと思います。

こちらは、リクエストの正当性を検証するだけにとどめたコードになります。

実装方法

以下をダウンロードやら、コードのコピペするなりしてください。 https://github.com/poropi/AlexaValidate/blob/master/AlexaValidate/src/AlexaValidate.php

以下にサンプルコードを置いておきます。 https://github.com/poropi/AlexaValidate/blob/master/AlexaValidate/src/alexa_endpoint.php

ポイントとしては、以下になるかな。

include './AlexaValidate.php';
$body = file_get_contents('php://input');
$validator = new AlexaValidate();
try {
$validator->validate($body);
} catch (Exception $e) {
// load cert again and validate because temp file was outdatet.
http_response_code(400);
return;
}

上記を実装することで、Alexa公開審査前の機能テストを通過できます。
とはいえで、機能テスト自体の仕様変更等が発生することもあるので、上記の実装で通らなくなる可能性もあります。
そのときは、機能テスト上に表示される内容を見て、ご自身で対応お願いしますね!

その他

PHP初心者が作ったものになります。
PHPバージョン7.3で動作検証しておりますが、不具合あれば連絡お待ちしております。

About

Alexaカスタムスキルをウェブサービスとしてホスティングする場合に利用できるリクエスト検証処理をPHPで作成しました。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages