Slide 1

Slide 1 text

2024/04/15 KMC 46th Walnuts

Slide 2

Slide 2 text

名前: Walnuts 所属: KMC 46th / 京都大学 工学部 電気電子工学科 3回生 趣味: @walnuts1018 #walnuts-memo #kubernetes ・バイト ・睡眠 ・Kubernetes ・Go言語 ・Proxmox ・電子工作をしたりしなかったり 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 3

Slide 3 text

• LINE Bot • 大学の授業の時間割を登録できる • LINEのAPIをGo言語 で操作します! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 4

Slide 4 text

• LINE公式アカウントに登録 • 発言した内容をそのまま返すアプリを作る • 授業を登録できるように書き換え • 「カレンダー」と言ったら時間割が返信されるように書き換え • 完成 • アドバンス課題 • 毎朝今日の時間割を教えてくれるように改造 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 5

Slide 5 text

• https://developers.line.biz/console/ にアクセス • パソコンからの方がやりやすい • 「LINEアカウントでログイン」をクリック 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 6

Slide 6 text

• 「QRコードでログイン」をクリック • スマホでLINEを開いて、QRコードを読み取る • 4桁の認証番号を入れる 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 7

Slide 7 text

• こんな画面が開けたらOK! • 「作成」をクリック 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 8

Slide 8 text

• プロバイダー名を決める • なんでもOK! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 9

Slide 9 text

• ちゃんと作れたら、「プロバイダー○○が作成されました」と出てくるよ! • そうしたら「Messaging API」をクリック! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 10

Slide 10 text

• 色々埋めるところが出てくるのでいい感じに埋めていきましょう! • 「チャネル名」はBotのアカウント名になるので「京大時間割アプリ」とかにしておくと よさそう • 業種は個人・学生を選ぼう • 「任意」のところは埋めなくてOK • 最後に「作成」ボタンを押すよ • 確認メッセージとか同意も押す 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 11

Slide 11 text

• 色々埋めるところが出てくるのでいい感じに埋めていきましょう! • 「チャネル名」はBotのアカウント名になるので「京大時間割アプリ」とかにしておくと よさそう • 業種は個人・学生を選ぼう • 「任意」のところは埋めなくてOK • 最後に「作成」ボタンを押すよ 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 12

Slide 12 text

• 作成出来たら早速友達追加してみよう • 「Messaging API設定」を押して、QRコードを表示させる • スマホのLINEアプリで読み取る • ようこそメッセージが見えたら OK! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 13

Slide 13 text

• 作成出来たら早速友達追加してみよう • 「Messaging API設定」を押して、QRコードを表示させる • スマホのLINEアプリで読み取る • ようこそメッセージが見えたら OK! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 14

Slide 14 text

• 「Messaging API設定」の「LINE公式アカウント機能」の「応答メッセージ 」をオフにします • メッセージが送られたとき、勝手に返信される機能です。 • 右側緑文字の「編集」をクリック、新しく開いたページで「応答メッセージ」のスイッチを オフにする 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 15

Slide 15 text

• チャネルシークレットとチャネルアクセストークンを手に入れる • ほかの人に見せてはいけません • 前の画面に戻って、「チャネル基本設定」の下の方にチャネルシークレット、 「Messaging API設定」の下の方にチャネルアクセストークンがあります 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 16

Slide 16 text

• 今回みなさんにLINE Botを開発してもらう環境を用意しています。 • 配布したURLにアクセスし、パスワードを入力してください。 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 17

Slide 17 text

• ログイン出来たら、「Yes, I trust the authors」を押す • 左側に今回皆さんに編集してもらうプログラムのファイルがあります • まずは ファイルに先ほど取得した シークレットとアクセストークンを保存 します。 .env 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 18

Slide 18 text

• 以下のようになっていればOKです! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 19

Slide 19 text

• で「ターミナル」を起動します • 起動したら、 と入力し、Enterを押します • これでLINE Botが動きました • まだ今はメッセージを送っても反応しません Ctrl + Shift + ` go run main.go 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 20

Slide 20 text

自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 21

Slide 21 text

• 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登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 22

Slide 22 text

• 「LINEにメッセージが送られたら俺に教えて!!!!」という設定です。 • 具体的には、メッセージが送られたとき、登録したURLにHTTP POSTが送られます LINE Bot メッセージを送信 「メッセージ送られたよ!」と教える 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 23

Slide 23 text

• いよいよプログラムを変更していきます。 • 「カレンダー」と送ったら時間割を表示できるようにしてみます • 左側の、commonというフォルダのline.goを編集します 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 24

Slide 24 text

• 165行目の を編集します func showCalendar 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 25

Slide 25 text

• userIDを取得しよう • 時間割をユーザー(メッセージを送った人)ごとに別々のものにしておかないと、 全員の時間割が混ざっててんやわんやに • そうならないように、メッセージを送ってきた人を取得して、別々の時間割を表示さ せます • ヒント: 下の方に getUserID という関数があり、これはuserIDとerrorを返します 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 26

Slide 26 text

• userID答え userID, err := getUserID(e) if err != nil { sendTextMessage(c, "ユーザーIDの取得に失敗しました", api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 27

Slide 27 text

• 保存されている授業一覧を取得しよう • ヒント: dbClientにGetSubjectsというメソッドがあります • 引数はuserIDです 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 28

Slide 28 text

• 科目取得答え • おわったら • ターミナルで、「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登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 29

Slide 29 text

• 「カレンダー」というメッセージの時に、showCalenderを呼び出すコードを追加しよう • 87行目に showCalendar(c, api, e, dbClient) を追加しよう • できたら、「カレンダー」と送ってみよう! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 30

Slide 30 text

• 109行目の を編集します • 95行目にaddSubjectを呼び出すコードを追加します func addSubject 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 31

Slide 31 text

• userIDを取得しよう • 時間割をユーザー(メッセージを送った人)ごとに別々のものにしておかないと、 全員の時間割が混ざっててんやわんやに • そうならないように、メッセージを送ってきた人を取得して、別々の時間割を表示さ せます • ヒント: 下の方に getUserID という関数があり、これはuserIDとerrorを返します 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 32

Slide 32 text

• userID答え userID, err := getUserID(e) if err != nil { sendTextMessage(c, "ユーザーIDの取得に失敗しました", api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 33

Slide 33 text

• 授業を保存しよう • ヒント: dbClientにAddSubjectsというメソッドがあります • 引数はsubject, userIDです 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 34

Slide 34 text

• 授業保存答え err = dbClient.AddSubject(subject, userID) if err != nil { sendTextMessage(c, fmt.Sprintf("授業の保存に失敗しました: %v", err), api, e) return } 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 35

Slide 35 text

• 「カレンダー」というメッセージ以外時に、addSubjectを呼び出すコードを追加しよう • 95行目に addSubject(c, message, api, e, dbClient) を追加しよう • できたら「月1 test test」と送ってみよう! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 36

Slide 36 text

• もしも時間が余っていたら • 毎朝7時にカレンダーを送る処理を書いてみよう! • 教員の名前も追加できるようにしてみよう! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ

Slide 37

Slide 37 text

• Go言語でLINE Botをつくるのはとっても簡単! • しばらくはこのBotを動かしておこうと思います! 自己紹介 > 概要紹介 > LINE Dev登録 > Codeboxログイン > Webhook登録 > カレンダー機能追加 > 授業登録機能追加 > まとめ