Knowledge Stones

フリーランスエンジニアの技術ブログです。

LINE Messaging APIを使用してチャットボットを作ってみる【①導入編】

オリジナルのチャットボットを作ってみた

先日の記事ではWebスクレイピングについて書きましたが、それで何を作っていたかというと、LineのMessagingAPIを使ったチャットボットを作っていました。

これです。

github.com

中身はスプラトゥーン2の武器をランダムで選んでくれる機能とか、フェスに投票して勝率を集計する機能とか、大したものではないですが盛り込んでいます。

 

作ってみて思うのは、「一般的なWebアプリケーションよりも簡単にできる」ということです。

 

UIはLINEのアプリケーションで既にデザインされており、こちらはシンプルな形式でコンテンツを配信するのみだからです。

あまりアプリケーションを作った経験がなくてもできると思うので、どうやって作るのかをいくつかの記事に分けて投稿していこうと思います。

 

 

LINEチャットボットってどんな仕組み?

一般的にLINEでユーザー同士がやりとりする場合はこんなイメージかと思います。

LINEのサーバを経由して、対象のユーザーへ文字やスタンプを送っています。

f:id:polar_bear_tech:20190910221553p:plain

 

チャットボットの場合は、LINEサーバーが、ユーザーではなくBotアカウントにメッセージを送ります。

この時、Botアカウントに「webhookURL」を設定しておき、自分で立てたアプリケーションサーバーでメッセージを受け取ることになります。

受け取ったメッセージの内容に応じて返答のメッセージを作ります。

そしてそれをLINE MessagingAPIを通してLINEサーバーに送ると、ユーザーのLINEにメッセージが届くわけです。

f:id:polar_bear_tech:20190910221706p:plain

 

もうちょっと具体的な構成図にすると下図のようになります。汚いですね。

アプリケーションをどう立てていくかと考えたときに、LINEサーバーとの通信はSSL化(HTTPSに)する必要があるのですが、証明書の発行とかメンドイです。

なので、簡易的に実現するためにAWS API Gatewayというサービスをまず窓口に設ける方法をとったりしてます。

そこから本当の処理を行うアプリケーション側にパスするわけです。

アプリケーションをまず動かしてみるとしたらAWS Lambdaを使うとか、ちょっと凝ったものを作って小規模でお金かけずにやるならherokuを使うとか、しっかり動かすならEC2を使うとか、そんな選択肢があります。

※考えてみればheroku使うとSSL化はできてるのでGW要らんかも

f:id:polar_bear_tech:20190910222533p:plain

 

まあこんな感じで構成すればできるんだなってイメージ。

 

具体的にはどうすれば?

まずは、LINEのBusinessアカウントを作成して、MessagingAPIを使用するBotを作りましょう!

https://account.line.biz/login?redirectUri=https%3A%2F%2Fmanager.line.biz%2F

 

そのあとやっていくことは、別の記事に分けて書いていきます。

②Lambdaで実装編

LINE Messaging APIを使用してチャットボットを作ってみる【②Lambdaで実装編】 - Knowledge Stones

Railsで実装編

(未投稿)

 

終わりに

チャットボットでのコンテンツ配信は手軽なので、友達とちょっとお遊びのために作ってみてもよし、自分のリマインダとして作ってもよし、楽しいのでぜひ作ってみてください!

あと、私の作っているブキチくんBotの友達登録はこちらから。いじめないであげてください。