LoginSignup
9
8

More than 3 years have passed since last update.

【祝!初投稿】LINEbotを利用し、GO言語で書いたプログラムから自分のLINEアカウントにメッセージ送信してみた

Posted at

はじめに

はじめまして。初めて投稿します。

何を投稿するか悩んだのですが、少し前からLINEbotを触っていて、色々試していたら
「LINEbotにHTTPリクエストを送ったら、オウム返しで自分のLINEアカウントにメッセージを送れる。」
のがちょっと面白かったので、この内容にしてみました。

LINEbotについて

  • LINEが提供するボットサービスです
  • LINEアカウントをお持ちでしたら、LINE Developersから作成できますので、
    興味ある方は色々試してみてください

LINEbotを使用するための準備

  1. LINEbot用のチャネルを作成(手順はこちら
  2. LINEbot作成(手順はこちら

作成したプログラム

  1. 超絶シンプルな画面から、適当なメッセージを入力して送信ボタンを押すと、

temp4.png

2.LINEに通知されるだけの、簡単かつ特になんの役にも立たないプログラムです。

temp5.png

ソースコードについて

ここで紹介しているプログラムはこちらのリポジトリに公開しています。

●LINEbotメッセージ送信
GO言語用SDKを使用しています。SDKの使い方は左記リンクのREADMEに記載されています。
ほかにもJavaやPHPなどのSDKも提供されているようです。
こちらにリンクがまとめられています。

message.go#LINEbotメッセージ送信部分
// 構造体:LINE接続設定を管理
type LineConfig struct {
    UserId             string `json:"userId"`
    ChannelSecret      string `json:"channelSecret"`
    ChannelAccessToken string `json:"channelAccessToken"`
}

// LINEbotメッセージ送信処理
func SendMessage(w http.ResponseWriter, r *http.Request) {
    // リクエスト値を取得
    var message string = r.FormValue("message")
    // プロパティファイル読み込み
    var config LineConfig = LoadConfig()
    // LINEbotオブジェクト初期化(チャネルシークレット、第二引数にチャネルアクセストークンを指定)
    bot, _ := linebot.New(config.ChannelSecret, config.ChannelAccessToken)
    var messages []linebot.SendingMessage
    messages = append(messages, linebot.NewTextMessage(message))
    // メッセージ送信(第一引数に宛先、第二引数に送信するメッセージを指定)
    _, err := bot.PushMessage(config.UserId, messages...).Do()
    if err != nil {
        panic(err.Error())
    }
}

func LoadConfig() LineConfig {
    // 設定ファイルの読み込み
    file, err := os.Open("resources/conf/config.json")
    if err != nil {
        panic(err.Error())
    }
    defer file.Close()

    var config LineConfig
    err = json.NewDecoder(file).Decode(&config)
    if err != nil {
        panic(err.Error())
    }
    return config
}
  • LINEbotのチャネル作成時に発行したチャネルシークレットとチャネルアクセストークンを使用します
  • bot.PushMessage({宛先LINEユーザーID}, {送信するメッセージ}).Do()
    でメッセージが送信されます

終わりに

LINEbotに入門しました。

今回は画面から入力したメッセージをそのまま送信するだけのものでしたが、
天気情報や近隣のスーパーのお買い得情報を通知したりなど、もう少し実用的なものを作成してみたいと思います。(すでにそういうアプリありますが・・)
AIボットも面白そうですね。

以上、初投稿でした!
何か少しでも参考になることがあれば嬉しいです。

9
8
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
9
8