WowTalkのAndroid開発担当している岡野です。今回はAndroidと全く関係ないのですが、AWSのサービスを使ってWowTalkのユーザサポート用のボットを作って1週間で社内リリースした話を書いていこうと思います。作ろうと思ったのかWowTalkには電話やメールでのサポート窓口というものがあるですが、ここに来る問い合わせ件数を減らせないかというのがそもそもの始まりでした。WowTalkには操作説明が載っているユーザーサイトもあるのですが、せっかくWowTalkには自分でカスタマイズできるボット機能と、WowTalkにメッセージを送信できるOpenAPIもあるのでそれをうまく利用したいと考えました。今回は検証も兼ねて、社内からの問い合わせに対応できるよう社内公開しましたが、最終的にはユーザの皆様に公開し、利用していただけるようなボットを提供できればと考えています。サーバー立てずに実装したいWowTalkは裏側でAWSを使っているのですが、今回は機能上EC2でインスタンスを立てる必要もないと判断したためAPIGateWayとLambdaを使うことにしました。インスタンスを立てないことに伴いLambdaの設定を工夫する必要がありました。IPアドレスがない問題WowTalkのOpenAPIの利用にはセキュアアクセスのためアクセス元にIPアドレスが必要ですが、LambdaはサーバーレスなFaaSサービスのためIPアドレスがありません。するかというと、OpenAPIと同じサブネットにLambdaを設置することで対応しました。OpenAPIは社内で検証を行うことがしばしばあるので、同じサービスネットワーク内からのアクセスは許可されています。Lambda関数のVPC設定から、WowTalkのインスタンス群と同じサブネットに配置することでOpenAPIの呼び出しを行えるようにしました。Lambda関数のコンソールからVPCの設定をする5.Lamdaから外部へアクセスできない問題ただこれだけでは不十分で、今度はLambdaからユーザーサイトにアクセスできなくなりました。GateWayを設定していないため外部ネットワークとのアクセスができず、ドメイン解決ができなくなるので当然と言えば当然なのですが(汗)これはRoute53のプライベートホストゾーン設定にユーザーサイトへアクセスするためのレコードセットを設定することで解決しました。OpenAPIのサーバーへのアクセスも同様に通常のドメイン設定ではアクセスできなくなったので合わせて設定することで対応しました。6.回答しようここまでできたらあとは裏側の処理をnode.jsでガリガリ書くだけです。シンプルにキーワードに関連する記事のURLをボットのそれっぽく返却するだけにしました。回答が制限を超える場合は別のメッセージとして送信するようにする。}こうして記事のURLを返却するボットを無事(?)社内リリースしました。APIへの検索方法も改善しないと使い物にならないな〜」となりました。そちらについてはまた今後追記していきたいと思います。おわりに今回の記事では(ボットのクオリティはさておき)お手製のサポートボットをリリースするまでを簡単に追いました。タイトルにもある通り、AWSのサーバーレスアーキテクチャを利用すると、アーキテクチャを考えてから社内リリースするまで1週間という短期間で実装ができました。EC2でインスタンスを立てると利用していないリソースにまで料金が発生したり負荷が高くなった時のスケーリングとかリソースの配分なども考えないといけませんが、そこを考慮しなくて済むのは魅力的です。Androidアプリ開発する傍ら、サービスがもっと使いやすくなるような機能の模索もしていきたいと思います。Frameworkの使い方まとめServerlessでLambdaをVPC内にデプロイする我々ワウテック技術開発部はこのような環境で開発をしています。興味を持った方がいらっしゃればいつでもご連絡下さい。10:441週間でヘルプボット作って社内リリースしたお話Tweet関連記事2019-10-041週間で作って社内リリースしたヘルプボットを性能改善した話お久しぶりです。WowTalkのAndroid開発担当している岡野です。~Storybook...こんにちは。Web開発チームの島根です。はてなブログProWowTechエンジニアによる開発ブログです。社内チャットツールWowTalkの開発をしています。読者になるSERCHLINKはてなブログブログをはじめる週刊はてなブログはてなブログProNEW駆け出しエンジニア1年目で学んだ3つのことペアプログラミングを試してみた2020年もワウテックをよろしくお願いします大きなActivityは小さく分割したほうがいいお話1週間で作って社内リリースしたヘルプボットを性能改善した話ARCHIVEスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。