GolangでLinebot
Herokuとは
Salesforceの提供するPaaS
価格アプリケーション起動時間の従量課金制。
マスに向けたWebサービスでなければ無料枠を超えるようなことはないと思う。
レンサバも持っていないので今回はHerokuを使っていく。
go-Linebot
まずはgo.modの初期化をしてline-botのsdkを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の設定
channel type に Messaging API を指定して作成します。 providerがない場合はプルダウンで「Create a news provider」で作成します。
作成が終わったら、channelのBasing settingsから Channel secret tokenをコピーしておきます。Herokuの環境設定で使用します。
Messaging APIタブに移動して、Channel access tokenをコピーしておきます。これもHerokuの環境設定で使用します。
QRコードが表示されているのでLINEの友達追加から読み取って追加しておきます。
これで基本的な設定は完了です。
Herokuの設定
Heroku CLI で設定する場合と、ブラウザから設定する方法があります。
個人的にブラウザでやった方が簡単です。
Heroku CLIで設定する場合
Heroku CLI を installします。
$ 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にログインしてダッシュボードを開きます。
Create new appでapplicationを作成します。
Settingsタブを開いて環境変数を指定します。
GOVERSION は go.modに記載した場合不要です。
Deployタブを開いてGit Hubを選択します。
Enable Automatic Deploysは指定したブランチにpushすると自動的にbuild & deployが走るので便利です。
Deploy Branchでbuild deployが走ります。
以下のようにBotからメッセージが届けば完了です。
とりあえず、動作確認ができたのでDynoを停止します。
停止しとかないと定期的にメッセージがきます。