router_function_getAnalytic.js

/**
 * Module for retrieving conversation analytics data from the Facebook Graph API.
 *@module analytic
 * @param {object} app - The Express application object.
 */

const kei = require('../../lib/sendMessage');
const db = require('../../db/db');
const { KeiLog } = require('../../lib/Logger');
const Converter = require('timestamp-conv');

const konfig = require('../../config.js');
const axios = require('axios');

/**
 * Handles GET requests to "/analytic" to retrieve conversation analytics data.
 * @async
 * @param {express.Request} req - The Express request object.
 * @param {express.Response} res - The Express response object.
 */
module.exports = async function (app) {
    app.get("/analytic", async (req, res) => {
        const startDate = req.query.start || '2023-05-01';
        const endDate = req.query.end || '2023-05-10';

        // Convert human-readable dates to epoch timestamps
        const startEpoch = new Date(startDate).getTime() / 1000;
        const endEpoch = new Date(endDate).getTime() / 1000;

        const result = await axios.get('https://graph.facebook.com/v16.0/'+ konfig.waba_id+'?fields=conversation_analytics.start('+ startEpoch +').end('+ endEpoch +').granularity(DAILY).phone_numbers(%5B"6282120764986"%5D).country_codes(%5B%5D).metric_types(%5B%5D).conversation_types(%5B%5D).conversation_directions(%5B%5D).conversation_categories(%5B%5D).dimensions(%5B"CONVERSATION_DIRECTION"%2C"CONVERSATION_TYPE"%2C"COUNTRY"%2C"PHONE"%5D)&locale=en_GB&method=get&pretty=0&suppress_http_code=1&xref=f186352c7cf0d18', {
            headers: {
                "Content-Type": "application/json",
                "Authorization": "Bearer " + konfig.token
            }
        });
        const rawData = result.data;
        
        // Parsing and processing the data would go here

        res.json(rawData);
    });
};