Alexa Days 2017 で Alexa SkillのバックエンドにWordPressを使う話をしてきました
スライド https://speakerdeck.com/hideokamoto/wordpress-make-easier-to-create-alexa-skills https://speakerdeck.com/ […]
目次
スライド
https://speakerdeck.com/hideokamoto/wordpress-make-easier-to-create-alexa-skills
https://speakerdeck.com/hideokamoto/wordpress-make-easier-to-create-alexa-skills
補足
WordPressのデータをAlexaで扱う3つの方法
現時点で把握してる内容では、以下の3つがあるかなと思います。
- RSS
- WP REST APIを直接呼び出す
- LambdaからWP REST APIを呼び出す
RSSを使う
Alexa SkillはFlash Briefing Skillsに限ってですが、RSSフィードをよんでくれます。
WordPressが出力するRSSはFlash Briefing Skillsで読み込むことができるので、極端な話これだけでAlexa Skillが作れてしまいます。
方法などをまとめたスライドもありますので、こちらもどうぞ。
https://speakerdeck.com/hideokamoto/flash-briefingshi-sitainara-wordpressshi-utoiiyo
https://speakerdeck.com/hideokamoto/flash-briefingshi-sitainara-wordpressshi-utoiiyo
これのデメリットはFlash Briefing Skills
しか使えないというところです。新着記事読み上げには使えますが、それ以外の用途を目指すならばある程度自力でコードを書いたりする必要があります。
WP REST APIを直接呼び出す
WordPressを触っている人にとって、おそらく一番とっつきやすい方法がこちらです。
WordPress4.7以降で利用できる「WP REST API」を使うことで、Alexaでのやりとりに必要なレスポンス処理を作り上げるというものです。
AlexaWPというプラグインがGitHubにありますので、こちらを使うことでもエンドポイントの追加はできます。
ただ、これらを使った場合には「全てのレスポンスをWordPressで定義する必要がある」という問題もでてきます。
あいさつやお礼など、WordPressのデータを必要としないやりとりについてもWordPressにリクエストが発生してしまいますので、WordPressがSPOFになってしまう場合もあるかなと思います。
LambdaからWP REST APIを呼び出す
最後の方法は、間にAWS Lambdaを挟むという方法です。
Node.jsであれば、Alexa teamがalexa-sdkというライブラリが提供されています。
こちらを使用し、WPのデータを参照したい時のみWordPressのAPIにリクエストを出すという方法を取ることで、他のAPIを呼び出したい時などの柔軟性も確保できます。
サンプルとして、Serverless Frameworkを組み合わせて音声ガイド的なものを作るものを作ってみました。
https://github.com/hideokamoto/serverless-alexa-city-guide
alexa-sdkを使うことで、レスポンスのJSONを自力で組み立てる必要がなくなるなど、より実装に集中することができるので、Node.jsが使える方は使わない手はないと思います。
その他
Pythonで実装したバージョンに興味がある方は、Alexa AMIMOTO Ninja skillというSkillがあります。
GitHubにソースコードもありますので、ぜひ見てみてください。
まとめ
Alexa Skillはできることが多いので、とりあえず触ってみたい人にとって、何からしたらいいかわからない感があるかもです。
そんな時はWordPressを使って、とりあえずFlash Briefing Skillsから遊んでみるというのも手かなと思います。