AWS Lamda , AWS API Gateway , Node.js といった技術を使って、LINE BOTの作成をしています。
普段はフロントエンドを触っているのですが、バックエンドやAPI、クラウドサーバーの理解を深めるために勉強/趣味の一環としてLINE BOTの作成にトライ中です。
ほぼコピペでオウム返ししてくれるBOTの作成はできました。
この後、例えばですが、
ユーザーが「true」と発言したら、そのユーザーのstatusフラグをtrueにして、
statusフラグがtrueの間、30分おきにBOTからメッセージが送られてくる
ユーザーが「false」と発言したら、そのユーザーのstatusフラグをfalseにする。
といったLINE BOTにしていきたいと考えています。
そこで疑問になったのが、バックエンドではユーザーの状態管理をどのようにするのでしょうか?
フロントエンドでは状態管理をブラウザにお任せしてCookieやセッションストレージに保管することもできますが、
上記LINE BOT制作環境で、ユーザーの状態管理と、ユーザーの状態に合わせた関数の実行はどのようにおこうなのでしょうか。
私の想定ではデータベースを用意して、そこで状態管理をするのかな、、と思っています。
時間を指定した関数の実行はcron?cloudfront?
キーとなる単語や進め方、指針が無く困っております。
関連するワードの羅列でも構いません。皆様のご回答をきっかけに深掘りしていきたいと考えています。
よろしくお願いいたします。
const https = require("https") const express = require("express") const app = express() const PORT = process.env.PORT || 3000 const TOKEN = process.env.LINE_ACCESS_TOKEN const globalValue = {} app.use(express.json()) app.use(express.urlencoded({ extended: true })) app.get("/", (req, res) => { res.sendStatus(200) }) app.post("/webhook", function (req, res) { res.send("HTTP POST request sent to the webhook URL") // ユーザーがボットにメッセージを送った場合、返信メッセージを送る if (req.body.events[0].type === 'message') { globalValue[req.body.events[0].source.userId] = !globalValue[req.body.events[0].source.userId] yourStatus = globalValue[req.body.events[0].source.userId] ? 'true' : 'false' const dataString = JSON.stringify({ replyToken: req.body.events[0].replyToken, messages: [ { "type": "text", "text": "your status is " + yourStatus }, { "type": "text", "text": 'test' } ] }) //リクエストヘッダー const headers = { "Content-Type": "application/json", "Authorization": "Bearer " + TOKEN } // リクエストに渡すオプション const webhookOptions = { "hostname": "api.line.me", "path": "/v2/bot/message/reply", "method": "POST", "headers": headers, "body": dataString } // リクエストの定義 const request = https.request(webhookOptions, (res) => { res.on("data", (d) => { process.stdout.write(d) }) }) // エラーをハンドル request.on("error", (err) => { console.error(err) }) //データを送信 request.write(dataString) request.end() } }) app.listen(PORT, () => { console.log(`Example app listening at http://localhost:${PORT}`) })
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/21 15:36
2021/12/22 03:19
2021/12/22 03:34
2021/12/22 04:21