見出し画像

Amazon(※→Rakuten)のAPIを活用して、チャットbotを作成してみた

先日のshopifyのセミナーに参加して、
ユーザーの購買行動にSNSでの導線を作ってあげることの有効性を
いま一度考えてみました。

セミナー内では、LINE公式アカウントを作成することで
得られる顧客価値を取り上げていましたが、
これは、初回購入時にヒットするものではなく
購入後に利用してから、ロイヤルカスタマーまで昇華させるために
寄与するものだと思います。

LINEと消費者の購買行動が密接に紐づいていることは間違いないので、
安直ですが、カスタマージャーの上の方(探す、検討など)で
寄与できそうなアプリを作ってみようと考えました。

自分のShopifyサイトを持っていれば良かったですが、
今回は代用として、AmazonのAPIを用いてみます。
※(Amazon APIからRakuten APIに変更しています)


いま、RubyとRailsの学習をしているので、
今回はこれを踏まえて、以下のような機能を持たせた
アプリケーション開発を行います。

機能
LINEでメッセージを送ると、それに沿った内容の商品をAmazonから探し、商品情報を返信してくれるチャットbot

・開発環境
Ruby : 2.6.5
Rails : 6.1.4.4
データベースはMySQLを使用し、heroku上でデプロイを行います。


実際に開発をスタートしていきます。

1.gemの導入

今回、LINEのチャットbotとAmazonの情報を紐づけて
アプリを開発するので、gemは以下を利用します。

gem 'line-bot-api'
gem 'vacuum'

※追記
環境変数を管理するため、以下のgemを追加で導入しています。

gem 'dotenv-rails'


2.コントローラーを作成する

linebotsコントローラーを作成します。

rails g controller linebots

今回のアプリケーションで、linebotsコントローラーには
以下の役割を持たせることとします。

  • LINEから送られたメッセージを受け取る処理をする

  • メッセージの内容をもとに、Amazon内で商品検索を行い、先頭に表示される商品ジャンルを取得する

  • 取得した商品ジャンル内のランキングを取得する

  • 取得したランキング上位3つの商品から、商品概要/画像/値段/商品リンクをメッセージで返信する形式へ変換する

  • botから返信を送る


3.ルーティングを設定する

メッセージが送信された際に、linebotsコントローラー内の
callbackアクションが呼び出されるようにしています。

post '/callback' => 'linebots#callback'


4.Git hubにpushする

Git hubデスクトップから、first commitとしてpushします。


5.heroku上にデプロイする

自分のherokuアカウントから、アプリケーションのデプロイを行います。

git push heroku master


6.LINE botアカウントを作成、設定する

LINEの開発者ページから登録を行います。
ログインをした状態で、MessageAPI > 今すぐ始めように遷移し、
新しいチャンネルの作成を行います。


7.Amazon APIの登録

Amazon APIの登録ページから、アカウント登録を行います。
と思っていたら、ここで問題発生。

Amazon APIに登録して、商品情報を取得できるようにするには
自分のウェブサイト等をもって申請し、
審査を通らなければならないとのことでした。

近々では難しいと判断し、Amazon APIの取得から
Rakuten APIを用いた手法に変更し、実装を目指します。


8.gemの変更

Rakuten APIを用いるためにgemを変更します。

# Amazon APIからRakuten APIに変更(gem 'vacuum'は削除)
gem 'rakuten_web_service'


9.コントローラーの修正(Amazon API→Rakuten API)

コントローラー内で実行したい処理としては変更ないため、
APIに紐づく部分のみ変更を行います。


10.最新版のファイルをherokuにデプロイする

Git hubを最新の状態にし、再度デプロイを行います。


11.Rakuten Developersに登録する

こちらのサイトから新規アプリ登録を行います。

アプリURL欄には、herokuでデプロイしているURLを入力します。
URLはコンソール上で以下を実行し表示される、
https://<アプリ名>.herokuapps.comが該当します。

heroku apps:anfo


12.環境変数を設定する

環境変数をherokuコマンドを用いてLINE・Rakuten共に設定します。
設定する項目は、以下の4つです。

# LINEの環境変数設定
$ heroku config:set LINE_CHANNEL_SECRET="[LINEのチャンネルシークレット]"

$ heroku config:set LINE_CHANNEL_TOKEN="[LINEのアクセストークン]"

# Rakutenの環境変数設定
$ heroku config:set RAKUTEN_APPID="[アプリ/デベロッパーID]"

$ heroku config:set RAKUTEN_AFID="[アフィリエイトID]"


13.動作確認

これで、手順としては完了しているはずなので、
実際にLINEで動作が上手くいくか確認します。

LINE Developerに載っているQRコードを読み取り、
トークで文字を打ってみます。

無事に楽天から商品情報を読み取ってくれました!

コントローラーの記述を理解するのに、かなり時間がかかったのと
Amazon APIについての理解が浅かったので、
制作までに時間がかかってしまいました。

これを応用することで、Shopify APIと連携して、
LINEを活用したチャットbotができれば、
そちらも作成してみたいと思いました。

ここまで読んでいただいた方、ありがとうございました!


この記事が気に入ったらサポートをしてみませんか?