LoginSignup
3
1

More than 5 years have passed since last update.

line-bot-sdk-goとngrokを使ってline-botのおうむ返しをローカルで作ってみた

Posted at

line-bot-sdk-goとngrokを使用して爆速でおうむ返しbotを作ってみました。

初めにline-bot-sdk-goとngrokとは?

line-bot-sdk-go

LINE Messaging API SDK for Goを使用すると、LINE Messaging APIを使用してボットを簡単に開発できます。また、サンプルボットを数分で作成できます。

nglok

ローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービスです。例えば、ローカルPCのWebサーバを外部公開することができます。
httpsの通信も可能になっているので、ローカル環境でline-botの稼働確認ができます。

作業手順

1.Line Developersに登録する
2.LineSDKのインストール
3.SDKのソースをLINE Developersの「Channel Secret」「アクセストークン」とngrokで指定する「ポート番号」に変更
4.ngrokのインストールと実行
5.LINE DevelopersのWebhookURLの設定

各手順の説明をします

1.Line Developersに登録

2.LineSDKのインストール

$ go get github.com/line/line-bot-sdk-go/linebot
インストールするとGOPATHで指定しているパスにインストールされる。

GOPATHの確認方法

$ echo $GOPATH

3.SDKのソースをLINE Developersの「Channel Secret」「アクセストークン」とngrokで指定する「ポート番号」に変更

/Users/HOME/go/src/github.com/line/line-bot-sdk-go/examples/echo_bot/server.goの25行目-32行目にあるシークレットキーとトークンをLine Developersで準備したアカウントの情報に変更する。

修正前:

func main() {
    bot, err := linebot.New(
        os.Getenv("CHANNEL_SECRET"),
        os.Getenv("CHANNEL_TOKEN"),
    )
    if err != nil {
        log.Fatal(err)
    }

修正後:

func main() {
    bot, err := linebot.New(
        "6------------------d", // Channel Secret 
        "To-----------------=", // アクセストークン(ロングターム)
    )
    if err != nil {
        log.Fatal(err)
    }

58行目のポートの指定をngrokで指定する想定のポートに変更する。
修正前:

// This is just sample code.
// For actual use, you must support HTTPS by using `ListenAndServeTLS`, a reverse proxy or something else.
if err := http.ListenAndServe(":"+os.Getenv("PORT"), nil); err != nil {
  log.Fatal(err)
}

修正後:

    // This is just sample code.
    // For actual use, you must support HTTPS by using `ListenAndServeTLS`, a reverse proxy or something else.
    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatal(err)
    }

goファイルの実行

$ go run server.go

4.ngrokのインストール

$ brew install ngrok

上記コマンドでエラーとなる場合

$ brew cask install ngrok

ngrokの実行

$ ngrok http 8080

ngrok by @inconshreveable                                       (Ctrl+C to quit)

Session Status                online                                            
Session Expires               7 hours, 59 minutes                               
Version                       2.3.29                                            
Region                        United States (us)                                
Web Interface                 http://127.0.0.1:4040                             
Forwarding                    http://f29d8728.ngrok.io -> http://localhost:8080 
Forwarding                    https://f29d8728.ngrok.io -> http://localhost:8080

Connections                   ttl     opn     rt1     rt5     p50     p90       
                              0       0       0.00    0.00    0.00    0.00   

5.LINE DevelopersのWebhookURLの設定

LINE DevelopersのWebhookURLにngrokを起動した際に作成されたhttps://f29d8728.ngrok.io/callbackを指定する。このときURLに/callbackの指定が漏れないようにすること。
Webhook送信は「利用する」にすること。

完成

これでline-botの完成です!作ったアカウントを友達登録してお手持ちのスマートフォンからトークを送ってください。

まとめ

既に出ている色々な記事を参考にさせていただいて実装しました。この投稿が誰かの役にたてば嬉しいです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1