Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go言語でLINE Botをつくろう!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Walnuts
April 16, 2024
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go言語でLINE Botをつくろう!
Walnuts
April 16, 2024
More Decks by Walnuts
See All by Walnuts
パスキーでE2E暗号化 in Android Apps (PRF Extension)
walnuts1018
0
43
Cloud Native 技術をフル活用!壊して学ぶ自宅サーバーのバックアップ戦略!
walnuts1018
1
130
プログラミングサークルの新歓を支える技術
walnuts1018
1
600
ESP32と赤外線LEDを用いて エアコンを遠隔操作する
walnuts1018
0
440
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
How to Ace a Technical Interview
jacobian
281
24k
A Soul's Torment
seathinner
6
3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
360
Transcript
2024/04/15 KMC 46th Walnuts
名前: Walnuts 所属: KMC 46th / 京都大学 工学部 電気電子工学科 3回生
趣味: @walnuts1018 #walnuts-memo #kubernetes ・バイト ・睡眠 ・Kubernetes ・Go言語 ・Proxmox ・電子工作をしたりしなかったり 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• LINE Bot • 大学の授業の時間割を登録できる • LINEのAPIをGo言語 で操作します! 自己紹介 >
概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• LINE公式アカウントに登録 • 発言した内容をそのまま返すアプリを作る • 授業を登録できるように書き換え • 「カレンダー」と言ったら時間割が返信されるように書き換え • 完成
• アドバンス課題 • 毎朝今日の時間割を教えてくれるように改造 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• https://developers.line.biz/console/ にアクセス • パソコンからの方がやりやすい • 「LINEアカウントでログイン」をクリック 自己紹介 > 概要紹介
> LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 「QRコードでログイン」をクリック • スマホでLINEを開いて、QRコードを読み取る • 4桁の認証番号を入れる 自己紹介 > 概要紹介 >
LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• こんな画面が開けたらOK! • 「作成」をクリック 自己紹介 > 概要紹介 > LINE Dev登録
> Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• プロバイダー名を決める • なんでもOK! 自己紹介 > 概要紹介 > LINE Dev登録
> Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• ちゃんと作れたら、「プロバイダー◦◦が作成されました」と出てくるよ! • そうしたら「Messaging API」をクリック! 自己紹介 > 概要紹介 > LINE
Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 色々埋めるところが出てくるのでいい感じに埋めていきましょう! • 「チャネル名」はBotのアカウント名になるので「京大時間割アプリ」とかにしておくと よさそう • 業種は個人・学生を選ぼう • 「任意」のところは埋めなくてOK •
最後に「作成」ボタンを押すよ • 確認メッセージとか同意も押す 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 色々埋めるところが出てくるのでいい感じに埋めていきましょう! • 「チャネル名」はBotのアカウント名になるので「京大時間割アプリ」とかにしておくと よさそう • 業種は個人・学生を選ぼう • 「任意」のところは埋めなくてOK •
最後に「作成」ボタンを押すよ 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 作成出来たら早速友達追加してみよう • 「Messaging API設定」を押して、QRコードを表示させる • スマホのLINEアプリで読み取る • ようこそメッセージが見えたら OK!
自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 作成出来たら早速友達追加してみよう • 「Messaging API設定」を押して、QRコードを表示させる • スマホのLINEアプリで読み取る • ようこそメッセージが見えたら OK!
自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 「Messaging API設定」の「LINE公式アカウント機能」の「応答メッセージ 」をオフにします • メッセージが送られたとき、勝手に返信される機能です。 • 右側緑文字の「編集」をクリック、新しく開いたページで「応答メッセージ」のスイッチを オフにする 自己紹介
> 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• チャネルシークレットとチャネルアクセストークンを手に入れる • ほかの人に見せてはいけません • 前の画面に戻って、「チャネル基本設定」の下の方にチャネルシークレット、 「Messaging API設定」の下の方にチャネルアクセストークンがあります 自己紹介 >
概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 今回みなさんにLINE Botを開発してもらう環境を用意しています。 • 配布したURLにアクセスし、パスワードを入力してください。 自己紹介 > 概要紹介 > LINE
Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• ログイン出来たら、「Yes, I trust the authors」を押す • 左側に今回皆さんに編集してもらうプログラムのファイルがあります • まずは
ファイルに先ほど取得した シークレットとアクセストークンを保存 します。 .env 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 以下のようになっていればOKです! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン
> Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• で「ターミナル」を起動します • 起動したら、 と入力し、Enterを押します • これでLINE Botが動きました • まだ今はメッセージを送っても反応しません
Ctrl + Shift + ` go run main.go 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録
> カレンダー機能追加 > 授業登録機能追加 > まとめ
• https://developers.line.biz/console/ にアクセス • 「Messaging API設定」の「Webhook URL」を変更します • 「編集」を押して、 •
自分のcodeboxのURL + にする • 例えば、codeboxのURLが の人は、 と入力 • 登録できたらLINEからメッセージを送ってみよう!! • 「hello」と帰ってきたらOK! /proxy/8080/callback https://codebox-line-dnplsz.walnuts.dev/ https://codebox-line-dnplsz.walnuts.dev/proxy/8080/callback 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 「LINEにメッセージが送られたら俺に教えて!!!!」という設定です。 • 具体的には、メッセージが送られたとき、登録したURLにHTTP POSTが送られます LINE Bot メッセージを送信 「メッセージ送られたよ!」と教える 自己紹介
> 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• いよいよプログラムを変更していきます。 • 「カレンダー」と送ったら時間割を表示できるようにしてみます • 左側の、commonというフォルダのline.goを編集します 自己紹介 > 概要紹介 >
LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 165行目の を編集します func showCalendar 自己紹介 > 概要紹介 > LINE
Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• userIDを取得しよう • 時間割をユーザー(メッセージを送った人)ごとに別々のものにしておかないと、 全員の時間割が混ざっててんやわんやに • そうならないように、メッセージを送ってきた人を取得して、別々の時間割を表示さ せます • ヒント:
下の方に getUserID という関数があり、これはuserIDとerrorを返します 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• userID答え userID, err := getUserID(e) if err != nil
{ sendTextMessage(c, "ユーザーIDの取得に失敗しました", api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 保存されている授業一覧を取得しよう • ヒント: dbClientにGetSubjectsというメソッドがあります • 引数はuserIDです 自己紹介 > 概要紹介
> LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 科目取得答え • おわったら • ターミナルで、「Ctrl + C」を押してサーバーを止めましょう • を実行して再起動
• 「カレンダー」とLINEに送ってみましょう! subjects, err := dbClient.GetSubjects(userID) if err != nil { sendTextMessage(c, fmt.Sprintf("授業の取得に失敗しました: %v", err), api, e) return } go run main.go 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 「カレンダー」というメッセージの時に、showCalenderを呼び出すコードを追加しよう • 87行目に showCalendar(c, api, e, dbClient) を追加しよう •
できたら、「カレンダー」と送ってみよう! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 109行目の を編集します • 95行目にaddSubjectを呼び出すコードを追加します func addSubject 自己紹介 > 概要紹介
> LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• userIDを取得しよう • 時間割をユーザー(メッセージを送った人)ごとに別々のものにしておかないと、 全員の時間割が混ざっててんやわんやに • そうならないように、メッセージを送ってきた人を取得して、別々の時間割を表示さ せます • ヒント:
下の方に getUserID という関数があり、これはuserIDとerrorを返します 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• userID答え userID, err := getUserID(e) if err != nil
{ sendTextMessage(c, "ユーザーIDの取得に失敗しました", api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 授業を保存しよう • ヒント: dbClientにAddSubjectsというメソッドがあります • 引数はsubject, userIDです 自己紹介 >
概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 授業保存答え err = dbClient.AddSubject(subject, userID) if err != nil
{ sendTextMessage(c, fmt.Sprintf("授業の保存に失敗しました: %v", err), api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• 「カレンダー」というメッセージ以外時に、addSubjectを呼び出すコードを追加しよう • 95行目に addSubject(c, message, api, e, dbClient) を追加しよう
• できたら「月1 test test」と送ってみよう! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• もしも時間が余っていたら • 毎朝7時にカレンダーを送る処理を書いてみよう! • 教員の名前も追加できるようにしてみよう! 自己紹介 > 概要紹介 >
LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ
• Go言語でLINE Botをつくるのはとっても簡単! • しばらくはこのBotを動かしておこうと思います! 自己紹介 > 概要紹介 > LINE
Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ