mutao.net

いわゆる雑記。

GolangでLinebot

Herokuとは

Salesforceの提供するPaaS

価格アプリケーション起動時間の従量課金制。

マスに向けたWebサービスでなければ無料枠を超えるようなことはないと思う。

レンサバも持っていないので今回はHerokuを使っていく。

jp.heroku.com

go-Linebot

github.com

まずはgo.modの初期化をしてline-botsdkをgo getする。

go mod init github.com/${github URL}
go get github.com/line/line-bot-sdk-go/linebot
go mod tidy

一旦はmessage送信できるかどうかを確かめられればいいので、main.goの中身は以下の通り。

package main

import (
    "log"
    "os"
    "github.com/line/line-bot-sdk-go/linebot"
)

func main() {
    bot, err := linebot.New(
        os.Getenv("LINE_BOT_CHANNEL_SECRET"),
        os.Getenv("LINE_BOT_CHANNEL_TOKEN"),
    )
    if err != nil {
        log.Print(err)
    }
        // messageはLINEBOTで通知したい値を入れる。
    message := linebot.NewTextMessage("go-linebot!")
    if _, err := bot.BroadcastMessage(message).Do(); err != nil {
        log.Print(err)
    }
}

Heroku用のProcfileを作成

$ vi Procfile

web: ./bin/${directory_name}

Heroku上で使用するGoのversion指定

2パターンあります。

go.modに

// +heroku goVersion go1.16

と記載するか、環境変数での指定ができます。

### cli
$ heroku config:set GOVERSION 1.16

LINE Messaging APIの設定

developers.line.biz

channel type に Messaging API を指定して作成します。 providerがない場合はプルダウンで「Create a news provider」で作成します。

f:id:mutaonet:20210808171612p:plain

作成が終わったら、channelのBasing settingsから Channel secret tokenをコピーしておきます。Herokuの環境設定で使用します。

Messaging APIタブに移動して、Channel access tokenをコピーしておきます。これもHerokuの環境設定で使用します。

QRコードが表示されているのでLINEの友達追加から読み取って追加しておきます。

これで基本的な設定は完了です。

Herokuの設定

Heroku CLI で設定する場合と、ブラウザから設定する方法があります。

個人的にブラウザでやった方が簡単です。

Heroku CLIで設定する場合

Heroku CLI を installします。

devcenter.heroku.com

$ heroku create ${app name}

$ heroku config:set LINE_BOT_CHANNEL_SECRET ${Channel secret token}
$ heroku config:set LINE_BOT_CHANNEL_TOKEN ${Channel access token}

$ heroku git:remote -a ${app name}

ブラウザ(GUI)から設定する場合。

Herokuにログインしてダッシュボードを開きます。

Heroku

Create new appでapplicationを作成します。 f:id:mutaonet:20210808172738p:plain

f:id:mutaonet:20210808172958p:plain

Settingsタブを開いて環境変数を指定します。

GOVERSION は go.modに記載した場合不要です。 f:id:mutaonet:20210808173950p:plain

Deployタブを開いてGit Hubを選択します。

f:id:mutaonet:20210808173114p:plain

f:id:mutaonet:20210808173210p:plain

Enable Automatic Deploysは指定したブランチにpushすると自動的にbuild & deployが走るので便利です。

Deploy Branchでbuild deployが走ります。

以下のようにBotからメッセージが届けば完了です。 f:id:mutaonet:20210808174158p:plain

とりあえず、動作確認ができたのでDynoを停止します。

停止しとかないと定期的にメッセージがきます。

f:id:mutaonet:20210808174412p:plain