[KFUGフォローアップ]Amazon AlexaからPython経由WordPressにコメントを投稿する

フロントエンドの人がWeb APIを語る会 – connpassのフォローアップ記事です。

スライド

フォローアップでは最後にサラッと紹介した「Alexa AMIMOTO Ninja + WP REST API」のお話でも。

Alexa AMIMOTO Ninja

amimoto-ami/amimoto-amazon-alexa

“AMIMOTO Ninja”はAmazon Alexaのスキルの1つで、sawanoboly (Yukihiko SAWANOBORI)さんによって作られました。(WP REST APIとYAMLファイルの中身は自分も参加しています)

Circle CI + Lamveryを使ってAWS Lambdaへの自動デプロイが実施され、Amazon Alexaに対応したデバイスにスキルをインストールすることで利用可能になります。起動するときは他のAlexaスキル同様に、「ask AMIMOTO Ninja」のようにaskで話しかけるとアプリが起動します。まず初めに名前を聞かれ、その後「聞きたいことは?」と尋ねられるので、WordPressやAMIMOTOに関する質問をすることができます。会話できる内容について興味ある方はamimoto-amazon-alexa/README.mdを見てみましょう。

で、最後に「あなたの感想を聞かせて」と質問されるので、感想について話すことができるのですが、その投稿がAlexa AMIMOTO Ninja | High Performance WordPress AWS AMIのコメントに投稿されるようになってます。で、そのコメント投稿に使っているのが「WP REST API」です。やっとWP REST APIの名前が出てきましたね。

Alexa AMIMOTO NinjaでのWP REST APIの使われ方

で、まずはWP REST APIのPOST先を指定する必要があるのですが、ここではamimoto-amazon-alexa/WPConf.ymlにYAML形式で記述しています。

---
wordpress:
  post: 5686
  url: 'https://amimoto-ami.com'

で、amimoto-amazon-alexa/wpapi.pyの中で先ほどのWPConf.ymlをロードし、Alexaが聞き取った名前と感想をクエリとしてPOSTさせています。→Alexa Skillの中で実際にPOSTさせている箇所

commentのエンドポイントだけOAuth認証が不要でしたので、お手軽に投稿させようということで今回はコメントへの投稿という形で実装させました。もちろん認証さえ行っていれば「Alexaから記事の下書きを作る」ことや「Alexaからユーザー情報を変更する」ということもできないことはないはずです。あとはGETで記事検索を実施して、自分のサイトの内容をAlexaに喋らせるというのも1つかもしれませんね。HTMLタグの除去とか色々大変そうですが。

Alexa AMIMOTO Ninjaの実物がみたい人へ

WordCamp Europe 2016 | June 24-26, Vienna, Austria | #WCEUのAMIMOTOすポンサーブースで見れるらしいという噂がありますので、チケット購入済みの方は是非ブースまでお越しください。あとはめ組の人を見つけた時に声かけしてみると、たまにLexi(スマホでAlexaを使えるアプリ)とか開発画面から実演してもらえるかもです。

Alexa AMIMOTO Ninja、その先へ

実は去年のWordCamp US 2015でもAlexaについて触れられていた方がいらっしゃいました。さよなら、インタフェース -脱「画面」の思考法という書籍(kindle版あり)が出ていたりと、「UIのない世界で扱うWordPress」についてもそろそろ考える時期が来ているのかなと思います。

AlexaはAlexaで日本人の英語をなかなか処理してくれなくて山のようなエイリアスを作成するハメになるということもありますが、バックエンドにAWSリソースが利用できることを考えると可能性の塊にしか思えないなと思います。というか自分の書いた記事の内容を会話の中でAlexaが読み上げてくれるとかちょっと楽しくないですか?もっとも、APIならなんでもいいので、ElasticsearchやGraphQLあたりで検索させた方がいい結果が返ってくるのではないかという気もしますが・・・

そんなわけでJAWS-UG 神戸が明日S3とアレクサとラムダ。というやたらタイムリーなイベントを開催するらしいので、興味のある方は是非ご参加を。

Follow me!