Skip to content

📱 LINEBOT to introduce restaurants in conjunction with HotPepper using the location information from LINE chat messages.

Notifications You must be signed in to change notification settings

rikako1021/Go-LineBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

0. アプリケーションの概要

背景

今すぐ食事を取りたい時、またはある土地に詳しくない時に、インターネット上で検索すると情報量が多すぎる

登録や複雑な手続きなく気軽に使える飲食店検索ツールが欲しい


機能

LINEのトーク上で送信された位置情報をもとに、BOTアカウントが周辺の飲食店の情報をHotpepperグルメから引用し表示する。


使用したリソース

  • Golang
  • LINEmessagingAPI,HotpepperAPI
  • github - バージョン管理
  • delve(Golangパッケージ) - デバッグ
  • Heroku - デプロイ


  • 1. 環境設定

    Goのインストール


    ・Mac

    コマンドラインで以下のコマンドを実行します。

    $ brew install go
    

    ・Windows


    公式HPより、Windows用インストーラーを選択してダウンロード+実行

    インストール先フォルダは特段の理由がなければデフォルトのまま変更しなくて良いです。


    インストールできているか確認

    コマンドラインで以下のコマンドを実行し、Goのバージョンが表示されれば問題なくインストールできています。

    $ go version
    go version go1.16.15 darwin/arm64
    

    環境変数(パス)の設定

    PATHに%GOPATH%\binを登録します。

    この登録が無いとgo getでインストールしたコマンドを実行できません。


    ・Mac

    以下のコマンドを実行して設定します。

    $ echo "export GOPATH=$(go env GOPATH)" >> ~/.bash_profile
    $ echo "export PATH=$PATH:$(go env PATH)/bin" >> ~/.bash_profile
    $ source ~/.bash_profile
    

    使っているシェルがzshの場合は.bash_profileの部分を.zshrcに書き換えてください。

    *環境変数の追加・編集などの方法はこちらが参考になります。


    ・Windows

    以下のページを参考にしてください。

    WindowsにGo言語をインストールする方法まとめ - Qiita


    VSCodeのインストール・設定

    こちらからOSを選択してインストールします。


    拡張機能のインストール

    VSCodeを起動して、Ctrl+Shift+Xで拡張機能を開いてGoで検索します。

    検索結果に表示される以下の拡張機能をインストールします。

    GO extention


    主な機能

    この拡張機能では、

  • Lint&Format
  • デバッグ
  • コード補完
  • を自動的にやってくれます。


    2. コードをクローンして実行する

    作業したいディレクトリで以下のコマンドを実行します。

    $ git clone https://github.com/rikako1021/Go-LineBot.git
    

    作業ディレクトリ内にmain.goがあることを確認し、以下のコマンドで実行します。

    $ go run main.go
    

    これでサーバが立ちます。


    3. 各ツールの設定と連携

    LINE APIの設定

    LINE Developersに登録

    MessagingAPIを利用するにはLINEDevelopersへの登録が必要です。

    以下の公式サイトを参考に、LINEDevelopersアカウントとチャネルを作成します。

    LINE Developersコンソールでチャネルを作成する

    LINE Developersコンソールでボットを作成する


    LINE Developersでシークレットを取得

    LINE Developersの各チャネルページのBasic settingsの下の方にChannel secretがあります。

    secret1

    secret2


    LINE Developersでアクセストークンを取得

    LINE Developersの各チャネルページのMessaging APIの下の方にChannel access tokenがあります。

    token


    取得した認証情報をコードに追加

    lineHandler関数の(secret),(access token)の部分にそれぞれ、上記で取得したシークレット・アクセストークンをそれぞれ追加します。

    func lineHandler(w http.ResponseWriter, r *http.Request) {
    	//Bot初期化
    	bot, err := linebot.New(
    		"(secret)",
    		"(access token)",
    	)
    	if err != nil {
    		log.Fatal(err)
    	}

    HotpepperAPIの設定

    APIKEY発行

    公式サイトの新規登録画面より、メールアドレスを入力するだけで登録できます。

    リクルートWEBサービス


    コードに追加

    登録したメールアドレス宛にAPIKEYが送信されるので、main.gogetRestoInfoの部分に追加します。

    func getRestoInfo(lat string, lng string) []*linebot.CarouselColumn {
    	apikey := "(ここにAPIKEYを追加)"
    

    HotpepperAPIとの連携はこれで完了です。


    Herokuの設定

    アカウント登録

    まずはHerokuのアカウントを取得します。 以下のページより必要事項を記入の上、「無料アカウント作成」をクリックしてください。

    https://signup.heroku.com/jp

    入力したメールアドレスに認証メールが届きますので、メッセージ内のリンクをクリックしてアカウントを有効化します。

    最後にパスワードの設定を求められるので、任意のパスワードを設定してください。

    heroku

    Heroku CLIのインストール

    次に、Herokuをコマンドライン上から操作するためのツールをインストールします。

    デプロイにはこちらのツールが必要になります。


    ・Mac

    ターミナル上で下記コマンドを実行します。

    brew tap heroku/brew && brew install heroku
    

    ・Windows

    以下のページでWindows用のインストーラが提供されているので、ダウンロードし起動します。

    The Heroku CLI | Heroku Dev Center

    インストール時の設定は全てデフォルトの状態で進み、installボタンをクリックするとインストールされます。


    インストールが完了したら、CLIを起動してみます。 Macであればターミナルで、WindowsであればコマンドプロンプトやGitBashで以下のコマンドを入力します。

    heroku --version
    

    これでバージョン情報が表示されれば、Heroku CLIのインストールは完了です。


    Herokuにログインする

    先ほど作成したアカウントでHerokuにログインします。

    heroku login -iを入力するとコマンドライン上でログインを要求されるので、メールアドレスとパスワードを入力します。

    -i抜きで実行するとブラウザ上にHerokuのログイン画面が立ち上がり、ブラウザ上でログイン認証を行います。)


    4. デプロイ

    ここからは、Herokuを用いて実際にデプロイしていきます。

    アプリケーション作成

    まずは、クローンしてきたアプリケーションのディレクトリへ移動します。

    $ cd Go-LineBot
    

    次に、heroku createコマンドを入力すると、デプロイ用のアプリケーションが作成されます。

    $ heroku create
    Creating app... done, XXXX-ZZZZ-123456
    https://XXXX-ZZZZ-123456.herokuapp.com/ | https://git.heroku.com/XXXX-ZZZZ-123456.git
    

    ここで示されるXXXX-ZZZZ-123456(例)が、作成されたアプリケーション名を表しています。

    指定がない場合、XXXX-ZZZZ-123456のようなランダムな名称が割り振られます。

     

    デプロイ

    git push heroku masterを入力すると、Heroku上へのデプロイが行われます。

    $ git push heroku master
    Enumerating objects: 400, done.
    Counting objects: 100% (400/400), done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (190/190), done.
    Writing objects: 100% (400/400), 178.59 KiB | 25.51 MiB/s, done.
    Total 400 (delta 152), reused 400 (delta 152)
    remote: Compressing source files... done.
    ・
    ・
    ・
    remote:        https://XXXX-ZZZZ-123456.herokuapp.com/ deployed to Heroku
    remote:
    remote: Verifying deploy... done.
    To https://git.heroku.com/XXXX-ZZZZ-123456.git
     * [new branch]      master -> master
    

    これでデプロイ作業は完了です。

    プログラムに変更を加え、Herokuに反映させたい場合は通常Githubにプッシュする時と同様に行います。

    $ git push heroku master
    

    アクセスしてみる

    デプロイした時に表示されたURL(例の場合はhttps://XXXX-ZZZZ-123456.herokuapp.com/)にアクセスし、HelloWorldなどの画面が表示されていれば正常にデプロイが完了しています。


    LINEBOTのWebhookに追加する

    デプロイ先ページのURL+/callbackをLINE DevelopersのMessagingAPIの部分にあるWebhookURLとして設定します。

    webhook

    URLを入力後、「verify」ボタンをクリックし、successと表示されれば正常に接続できています。


    5. 動作確認

    LINE Developersの各チャネルページのMessaging APIの上の方にアカウントのQRコードがあります。

    QRコードを読み取ってアカウントを友達追加し、実際にメッセージを送信してみます。

    トーク画面下部の「+」ボタンから位置情報を送信し、このように返信が来たらOKです。




    Links

  • ソースコード
  • rikako1021/Go-LineBot

  • バグ報告、issue追加
  • New Issue · rikako1021/Go-LineBot

  • Golangチュートリアル
  • A Tour of Go

  • Heroku
  • Getting Started on Heroku with Go | Heroku Dev Center

  • LINE Developers
  • LINE Developers

    About

    📱 LINEBOT to introduce restaurants in conjunction with HotPepper using the location information from LINE chat messages.

    Topics

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages