はじめに
はじめまして。初めて投稿します。
何を投稿するか悩んだのですが、少し前からLINEbotを触っていて、色々試していたら
「LINEbotにHTTPリクエストを送ったら、オウム返しで自分のLINEアカウントにメッセージを送れる。」
のがちょっと面白かったので、この内容にしてみました。
LINEbotについて
- LINEが提供するボットサービスです
- LINEアカウントをお持ちでしたら、LINE Developersから作成できますので、
興味ある方は色々試してみてください
LINEbotを使用するための準備
作成したプログラム
- 超絶シンプルな画面から、適当なメッセージを入力して送信ボタンを押すと、
2.LINEに通知されるだけの、簡単かつ特になんの役にも立たないプログラムです。
ソースコードについて
ここで紹介しているプログラムはこちらのリポジトリに公開しています。
●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ボットも面白そうですね。
以上、初投稿でした!
何か少しでも参考になることがあれば嬉しいです。