Amazon LexとCloud Automatorを接続して、ChatbotからAWSを操作してみる(Advent Calendar 18日目)

この記事は「 Cloud Automator Advent Calendar 2017 - Qiita 」の 12/18 日分のエントリーになります。

こんにちは、羽柴です。Cloud AutomatorのAdvent Calenderを勢いで登録してしまいましたので何か書きます。

面白い記事がいろいろ出てますね。

blog.serverworks.co.jp

Amazon Connectいいですね。

kobataka.hateblo.jp

Alexaも熱いですね。

qiita.com

Google Homeネタも出てきました。

電話・Alexa・Google Homeときたので、そしたらChatbotでいってみましょう。AWSのサービスでいうとAmazon Lexです。

Amazon Lex 

Amazon Lex は、音声やテキストを使用して、任意のアプリケーションに対話型インターフェイスを構築するサービスです。要はChatbotを作るときの利用するサービスと言ってよいと思います。

まずはじめにAmazon Lex側の設定をします。こんな感じです。

f:id:takashihashiba:20171215164114j:plain

Sample Utterancesははじめに呼び出す文章です。

それに対してSlotsがあり、いくつか質問をはじめます。Slot typeはAWSが用意してあるものを選んでいます。3つの質問に答えるとインスタンスが起動する仕組みです。今回は適当な質問にしてますが、これをインスタンスタイプとかタグとかで設定することはできそうです。

Lambda

続いてLambda側の設定。IAMまわりの説明は割愛します。上記代表のブログ等をご参考ください。コードこんな感じですかね。

gist2b294a9356fbdccfcf9555b72af301d3

順番前後してますが、ここで作ったLambda FunctionをLexのFulfillmentに紐付けます。

Cloud Automator

HTTPトリガーです。代表のブログ に詳しく書いてありますのでご参考ください。

以上で設定は終了です。Cloud AutomatorのAdvent Calendarですがここは端折ります。

やってみた

Amazon Lexは Facebook , Kik , Slack , Twilio SMSに対応しています。今回はSlackと連携してみました。

f:id:takashihashiba:20171218094437j:plain

HTTPトリガーが実行されインスタンスは起動しましたがエラーが出ています。どうやらCloud AutomatorのHTTPトリガーの返り値そのままだとLexが受け取れないみたいですね。これはまたいつかちゃんとさせたいと思います。

support.serverworks.co.jp

まとめ

Amazon Lexはまだ英語にしか対応していませんが、質問をEC2のインスタンスタイプやタグなどにすればChatbotで指定のインスタンスを操作することもできそうですね。

ぜひみなさんもCloud Automaotorを使い倒してAWS運用を楽にしていきましょう。