From 7d328895c433822cb24b60ade92be9bbdd05ed1d Mon Sep 17 00:00:00 2001 From: elisha <136813629+muajjiin@users.noreply.github.com> Date: Sat, 25 Oct 2025 22:29:37 +0600 Subject: [PATCH] Add files via upload --- Messenger_BOT/bot.js | 110 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 Messenger_BOT/bot.js diff --git a/Messenger_BOT/bot.js b/Messenger_BOT/bot.js new file mode 100644 index 0000000..90ed185 --- /dev/null +++ b/Messenger_BOT/bot.js @@ -0,0 +1,110 @@ +const express = require("express"); +const bodyParser = require("body-parser"); +const request = require("request"); +const apiai = require("apiai"); + +const app = express(); + +// Environment variables +const PAGE_ACCESS_TOKEN = process.env.PAGE_ACCESS_TOKEN || "your_page_token"; +const CLIENT_ACCESS_TOKEN = + process.env.CLIENT_ACCESS_TOKEN || "your_apiai_token"; +const VERIFY_TOKEN = process.env.VERIFY_TOKEN || "tuxedo_cat"; + +// Initialize API.AI +const apiaiApp = apiai(CLIENT_ACCESS_TOKEN); + +// Middleware +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + +// Start server +const server = app.listen(process.env.PORT || 5000, () => { + console.log( + "Express server listening on port %d in %s mode", + server.address().port, + app.settings.env, + ); +}); + +// Facebook Webhook Verification +app.get("/webhook", (req, res) => { + // Fixed: hub.mode (was hub.mdoe) + if ( + req.query["hub.mode"] === "subscribe" && + req.query["hub.verify_token"] === VERIFY_TOKEN + ) { + console.log("Validating webhook"); + res.status(200).send(req.query["hub.challenge"]); + } else { + console.error("Failed validation. Make sure the validation tokens match."); + res.status(403).end(); + } +}); + +// Handle all messages +// Fixed: Added missing '/' in route +app.post("/webhook", (req, res) => { + console.log("Webhook received:", req.body); + + if (req.body.object === "page") { + req.body.entry.forEach((entry) => { + entry.messaging.forEach((event) => { + console.log("Event:", event); + + // Process message events + if (event.message && event.message.text) { + sendMessage(event); + } + }); + }); + } + + res.status(200).end(); +}); + +// Send message function +function sendMessage(event) { + let sender = event.sender.id; + let text = event.message.text; + + // Send text to API.AI + let apiai = apiaiApp.textRequest(text, { + sessionId: "tabby_cat", // use any arbitrary id + }); + + apiai.on("response", (response) => { + // Got a response from api.ai + let aiText = response.result.fulfillment.speech; + + // Send response back to Facebook Messenger + request( + { + // Fixed: facebook.com (was facebok.com) + url: "https://graph.facebook.com/v2.6/me/messages", + // Fixed: PAGE_ACCESS_TOKEN (was PAGE_ACCSESS_TOKEN) + qs: { access_token: PAGE_ACCESS_TOKEN }, + method: "POST", + json: { + recipient: { id: sender }, + message: { text: aiText }, // Fixed: use aiText not original text + }, + }, + function (error, response) { + if (error) { + console.log("Error sending message:", error); + } else if (response.body.error) { + console.log("Error:", response.body.error); + } else { + console.log("Message sent successfully!"); + } + }, + ); + }); + + apiai.on("error", (error) => { + console.log("API.AI Error:", error); + }); + + apiai.end(); +}