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);
});
};