✒️
Notion × LINE で瞬時にメモできるbotを作りました
はじめに
スマホから瞬時にメモをしてNotionでも確認できるbotを作りました。参考にしたサイト、記事なども部分的に紹介できればと思います。
完成したもの
できることはシンプルで2つだけです。
1. LINEのトークルームで入力した内容をNotionテーブルにも記録する。
2. webページもコメント付きで記録できる。
作った背景
主にこちらの3つですが、自分が使い続けられるものをテーマにしました。
- スマホからNotionへメモする速度を上げてストレスを減らしたい。
- メモした履歴も見返したい。
- 新たにアプリはインストールしたくない。
構成
Ruby
MySQL
Notion API
LINE API
Lambda
仕組み
特に複雑なことはしておらず、LINEトークルームで入力された情報をNotion APIを用いて登録しています。
Notion APIの下準備
利用者はNotionとの紐付けで以下の情報を事前に用意しておく必要があります。
- インテグレーショントークンの生成
- 紐付けを行うデータベースの作成
- データベースのあるページに先ほど生成したインテグレーションを許可(コネクトの追加)
紐付けるデータベースには"Name"プロパティを必須としており、投稿されたテキストが保存されていきます。
データベースの作成例↓
Notion APIを使って情報を送信
notion-ruby-clientの説明とPostmanで試したのが分かりやすかったです。
# ユーザごとにクライアントを設定
notion = Notion::Client.new(token: user.notion_secret_token)
# ページの追加
notion.create_page(parent: { database_id: user.database_id}, properties: page_properties)
# ページの詳細も一緒に作成
notion.create_page(parent: { database_id: user.database_id}, properties: page_properties, children: page_children)
# ページの削除
notion.update_page(page_id: data[:page_id], archived: true)
LINE API
今回使っている機能としては以下になります↓
- Messaging API
- Reply Message(テキスト入力された時の応答)
- Flex Message(挨拶メッセージ、応答メッセージで使用)
- LIFF
- sendMessage(liffからトークルームにメッセージ送信)
line_bot_function.rb
require 'line/bot'
require_relative '../modules/reply.rb'
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV['LINE_CHANNEL_SECRET']
config.channel_token = ENV['LINE_CHANNEL_TOKEN']
}
end
def webhook(event:, context:)
unless client.validate_signature(event['body'], event['headers']['x-line-signature'])
error 400 do 'Bad Request' end
end
client.parse_events_from(body).each do |event|
case event
when Line::Bot::Event::Message
# トークルームでメモが投稿された時、ページの追加
client.reply_message(event['replyToken'], Reply.format(event))
when Line::Bot::Event::Postback
# 削除ボタンを押された時
when Line::Bot::Event::Follow
# フォローされた時
end
end
# 省略
# Don't forget to return a successful response
"OK"
end
こだわりポイント
ログイン不要
友達追加してすぐに利用開始できるメリットがあるためLINEbotにしました。またLINE APIとの連携ですでにログインなどの手間を省略できるのも今回の「瞬時にメモ」に合うのではと思いました。
メモの詳細も記録
スマホからNotionデータベースにメモする際に、タイトル以外に詳細もまとめて記録できたら良いと思ったので今回の機能を加えることにしました。
最後に
データベースを切り替えて目的別にメモ、画像のメモもできたら良いかなと思ってますが少しずつ改善していくつもりです。
よかったら覗いてみてください→ https://lin.ee/1qKzREu
初回設定方法についてはこちら
Discussion