Commit 80b3e23c by Dhamodharan S

new api integration

parent 8706147f
Pipeline #35107 failed with stages
in 35 seconds
const { WebhookResponses } = require('../config/db.config');
var request = require('request');
async function createConnection(req, res) {
try {
if (req.params.mobile_number) {
let mobile_number = req.params.mobile_number;
let random_num = Math.floor(Math.random() * 90000) + 10000;
let identifier = `${mobile_number}-${random_num}`;
let dataString = '{"uri":"whatsappsandbox://'+mobile_number+'@whatsapp.com","name":"'+identifier+'"}';
let options = {
url: 'https://apiv2.unificationengine.com/v2/connection/add',
method: 'POST',
body: dataString,
auth: {
'user': 'a913b40f-aa55-49ef-ae23-bbd4d1baec94',
'pass': '025fd444-62b4-4c44-b097-28ef2bde4f6e'
}
};
request(options, function (error, response, body) {
let respo = JSON.parse(body);
if (respo.status && respo.status == 200) {
WebhookResponses.create({identifier: identifier, mobile_number: mobile_number, status:"created"})
.then(user => res.json({status: 200,info: 'OK', identifier: identifier}))
.catch(function (err) {
console.log(err);
res.status(500).send({msg:"something went wrong!"});
});
} else res.status(500).send({error: true, message:respo});
});
} else throw "bad request";
} catch (err) {
console.log(err);
res.status(500).send({error: true, message:err});
}
}
module.exports = {
createConnection
};
\ No newline at end of file
const { WebhookResponses } = require('../config/db.config');
var request = require('request');
async function sentMessage(req, res) {
try {
if (req.body.mobile_number) {
let mobile_number = req.body.mobile_number;
let identifier = req.body.identifier;
let message = req.body.message;
var dataString = '{"message": {"receivers": [{"name":"name","address":"'+mobile_number+'" ,"Connector":"'+identifier+'", "type":"individual"}],"parts": [{"id":"1","contentType":"text/plain","data":"'+message+'" ,"size": 5,"type":"body","sort":0}]}}';
let options = {
url: 'https://apiv2.unificationengine.com/v2/message/send',
method: 'POST',
body: dataString,
auth: {
'user': 'a913b40f-aa55-49ef-ae23-bbd4d1baec94',
'pass': '025fd444-62b4-4c44-b097-28ef2bde4f6e'
}
};
WebhookResponses.update(
{ message: message, status: "pending" },{ where: {identifier: identifier} }
).then(count => {
console.log(count);
});
request(options, function (error, response, body) {
let respo = JSON.parse(body);
if (respo.Status) {
WebhookResponses.update(
{ sent_response: respo, status: "sent" },{ where: {identifier: identifier} }
).then(count => {
console.log(count);
});
res.send({error: false, message:respo});
} else res.status(500).send({error: true, message:respo});
});
} else throw "bad request";
} catch (err) {
console.log(err);
res.status(500).send({error: true, message:err});
}
}
module.exports = {
sentMessage
};
\ No newline at end of file
...@@ -3,12 +3,14 @@ const { WebhookResponses } = require('../config/db.config'); ...@@ -3,12 +3,14 @@ const { WebhookResponses } = require('../config/db.config');
async function saveResponse(req, res) { async function saveResponse(req, res) {
try { try {
let response = req.body; let response = req.body;
WebhookResponses.create({response: response}) console.log(response);
.then(user => res.json({status: 200,info: 'OK'})) if (response.data && response.data.connectionname) {
.catch(function (err) { WebhookResponses.update(
console.log(err); { response: response, status: "success" },{ where: {identifier: response.data.connectionname} }
res.send({status: 200,info: 'OK'}); ).then(count => {
}); res.send({status: 200,info: 'OK'});
});
}
} catch (err) { } catch (err) {
console.log(err); console.log(err);
// res.status(400).send({error: true, message:err}); // res.status(400).send({error: true, message:err});
......
...@@ -5,7 +5,12 @@ module.exports = (sequelize, type) => { ...@@ -5,7 +5,12 @@ module.exports = (sequelize, type) => {
primaryKey: true, primaryKey: true,
autoIncrement: true autoIncrement: true
}, },
message: type.STRING,
response: type.JSON, response: type.JSON,
sent_response: type.JSON,
mobile_number: type.STRING,
status: type.STRING,
identifier: type.STRING,
created_at: { created_at: {
type: 'TIMESTAMP', type: 'TIMESTAMP',
defaultValue: sequelize.literal('CURRENT_TIMESTAMP'), defaultValue: sequelize.literal('CURRENT_TIMESTAMP'),
......
...@@ -7,12 +7,15 @@ ...@@ -7,12 +7,15 @@
"start": "nodemon server" "start": "nodemon server"
}, },
"dependencies": { "dependencies": {
"axios": "^0.19.2",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"db-migrate": "^0.11.11",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"express": "^4.16.4", "express": "^4.16.4",
"http-errors": "~1.6.3", "http-errors": "~1.6.3",
"mysql2": "^2.1.0", "mysql2": "^2.1.0",
"node-libcurl": "^2.1.3",
"nodemon": "^2.0.3", "nodemon": "^2.0.3",
"precache": "0.0.0", "precache": "0.0.0",
"sequelize": "^5.21.6" "sequelize": "^5.21.6"
......
var express = require('express'); var express = require('express');
const webhookCtrl = require("../controllers/webhook.controller"); const webhookCtrl = require("../controllers/webhook.controller");
const connectionCtrl = require("../controllers/connection.controller");
const messageCtrl = require("../controllers/message.controller");
var router = express.Router(); var router = express.Router();
router.get("/check", (req, res) => { router.get("/check", (req, res) => {
...@@ -8,5 +10,8 @@ router.get("/check", (req, res) => { ...@@ -8,5 +10,8 @@ router.get("/check", (req, res) => {
/* GET home page. */ /* GET home page. */
router.post('/webhook', webhookCtrl.saveResponse); router.post('/webhook', webhookCtrl.saveResponse);
router.get('/create-connection/:mobile_number', connectionCtrl.createConnection);
router.post('/sent-message', messageCtrl.sentMessage);
module.exports = router; module.exports = router;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment