Slide 1

Slide 1 text

LINE Works Bot入門 2024/12/6 メリークリスマス!若手エンジニアふんわり LT Night! マグロ

Slide 2

Slide 2 text

自己紹介 名前:マグロ/佐々木陽貴(sasaki haruki) 所属:株式会社くふうカンパニー (24卒サーバーサイド) X(旧Twitter):@sigumataityouda GitHub:@maguro-alternative コメント:isucon間近でドキドキ

Slide 3

Slide 3 text

皆さん突然ですが

Slide 4

Slide 4 text

メリークリスマス!!!

Slide 5

Slide 5 text

プレゼントもらいましたか? 僕はこんなプレゼントが...

Slide 6

Slide 6 text

LINE Notify終了

Slide 7

Slide 7 text

LINE Notifyとは? ● LINEに通知を送るだけのサービス。 (画像はLINE Notify公式のもの)

Slide 8

Slide 8 text

LINE Notifyとは? ● Messaging APIよりも送れる件数が多く、重宝されていた。 ○ Messaging APIは月200件、LINE Notifyは1時間に1000件。

Slide 9

Slide 9 text

LINE Notifyとは? ● 個人で作ってた Discord→LINEの連携で重宝してた ためショックが大きい。

Slide 10

Slide 10 text

代替え探し ● Discordは❌ ○ 利用者の多くは Discordの通知はメンションだけにしたいと言う理由で利用。 ● LINE Messaging APIも❌ ○ 月200件の制約がきつく、代替が効かない。 ● LINE front-end framework(LIFF)も❌ ○ 通知としての利用は利用規約で禁止されている。 ■ そういった挙動は見つけ次第 Banされる。

Slide 11

Slide 11 text

LINE Worksへ ● LINEのビジネス用チャットツール。 ● LINEと別物だが、LINEアカウントがあれば利用可能。 ● 個人利用も可能。 ● グループ内であればAPIに制限なし。 これだ!!!!!!!!!!!!!!!!!!!!

Slide 12

Slide 12 text

LINE Works Bot 入門 (とりあえず送受信)

Slide 13

Slide 13 text

APIの流れ ● 参照:https://developers.worksmobile.com/jp/docs/api

Slide 14

Slide 14 text

APIの流れ ● アクセストークンの発行は OAuth2.0の方針に従っている。 ○ Botを仮想管理者として扱うためらしい。

Slide 15

Slide 15 text

APIの流れ ● 有効期限があるため、無効になったら再発行をしなければならない。 ○ アクセストークンの有効期限は 24時間、リフレッシュトークンの有効期限は 90日。 ○ LINE NotifyやMessaging APIのトークンは期限が無かったので、ここが大きな違いかも。 ●

Slide 16

Slide 16 text

APIの流れ ● 認可はJWTで行う。

Slide 17

Slide 17 text

APIの流れ とりあえずJWT発行してトークンを取得してみる。

Slide 18

Slide 18 text

APIの流れ 無事発行出来たっぽい。 (アクセストークンは有効期限が切れているので隠してません。 )

Slide 19

Slide 19 text

APIの流れ ● 発行したトークンでBotを操作する。

Slide 20

Slide 20 text

APIの流れ 「{Reply text}」というメッセージを送ってみる。

Slide 21

Slide 21 text

APIの流れ 無事出来たっぽい。 チャット画面

Slide 22

Slide 22 text

APIの流れ 次の日試したら無事失敗したっぽい。 (アクセストークンの有効期限が切れたため ) 送信用のコンソール

Slide 23

Slide 23 text

APIの流れ というわけでリフレッシュトークンを使って再発行もしてみ る。

Slide 24

Slide 24 text

APIの流れ 発行出来てそう。 (こちらもトークンの有効期限が切れているので隠しません。 )

Slide 25

Slide 25 text

メッセージ受信の流れ ● 参考:https://developers.worksmobile.com/jp/docs/bot-callback

Slide 26

Slide 26 text

メッセージ受信の流れ ● サーバー側でメッセージを受け取る。 ○ この辺はMessaging APIと同じ。

Slide 27

Slide 27 text

メッセージ受信の流れ ● 今回はこの署名検証で受け取れるか試す。

Slide 28

Slide 28 text

メッセージ受信の流れ ● リクエストヘッダーの X-WORKS-Signature に含まれる署名を検証 ○ Bot Secret を秘密鍵として利用し、メッセージサーバーから送られたリクエストボディを HMAC-SHA256 アルゴリズムでエンコード。 ○ 上記をBase64 エンコード。 ○ これをX-WORKS-Signaturetと比較。 サーバー側 署名検証

Slide 29

Slide 29 text

メッセージ受信の流れ いけてそう 送受信おっけい

Slide 30

Slide 30 text

まとめ ● LINE Works Botは仮想管理者。 ○ トークンには有効期限があるので、再発行の準備はすること。 ● その他の使い勝手はMessaging APIに結構似ている。 ○ Messaging APIになれてる人はトークン発行さえできれば使いやすいかも。