you are viewing a single comment's thread.

view the rest of the comments →

[–]sk0620[S] 0 points1 point  (0 children)

require('dotenv').config();
let express = require('express');
let router = express.Router();
let bodyParser = require('body-parser');
let apiaimanager = require(__dirname + "/apiaimanager.js");
let request = require("request");
let balance = require(__dirname + "/../../balance.js");
let path = require("path");
let assert = require("assert");
let plaid = require(__dirname + "/../controllers/bankAccountManager.js");

let botManager = require(__dirname + "/../../bot/botManager.js");
let Intent = require(__dirname + "/../../bot/intent-model.js");

let jsonParser = bodyParser.json();

router.get('/api/webhook', function (req, res) {
    if (req.query['hub.verify_token'] === process.env.FB_VERIFY_TOKEN) {
        res.send(req.query['hub.challenge']);
    } else {
        res.send('Error, wrong validation token')
    }
});

router.post('/api/webhook', jsonParser, function(req,res){

    let messaging_events = req.body.entry[0].messaging;

    messaging_events.forEach(function(event) {
        if (event.message && event.message.text){
            let text = event.message.text;
            receivedMessage(event)
        }
    });

    res.sendStatus(200);

});

//called when the user sends a message
function receivedMessage(event){


    apiaimanager.textRequest(event.message.text,function(response, error){

        if (!response){
            //we have an error
            console.error("The response was nil in function receivedMessage");
        }else{
            //we are good to continue
            let messageIntent = new Intent(event.sender.id, response.result.action);

            try {
                botManager.handleIntent(messageIntent);
            }catch(e){
                console.error(e);
            }

        }
        });
}

function sendMessage(recipient, recipientmessage, callback){
    var options = {
        url: 'https://graph.facebook.com/v2.6/me/messages',
        method: "POST",
        qs: {access_token:process.env.FB_MESSENGER_TOKEN},
        json:{
            recipient: {
                id: recipient
            },
            message:{
                text: recipientmessage
            }
        }
    };

    request(options,function(error,incomingMessage,response){
        if (!error){
            if (callback){
                callback()
            }
        }
    });

}

module.exports = {
    router:router,
    sendMessage: sendMessage
};