diff --git a/serverless/functions/create-wa-task.js b/serverless/functions/create-wa-task.js index ad9a911..6240ec6 100644 --- a/serverless/functions/create-wa-task.js +++ b/serverless/functions/create-wa-task.js @@ -29,6 +29,7 @@ exports.handler = TokenValidator(async (context, event, callback) => { workspaceSid, workflowSid, queueSid, + merchant, } = params; console.log(`Processing request with parameters ${JSON.stringify(params)}`); @@ -50,6 +51,7 @@ exports.handler = TokenValidator(async (context, event, callback) => { toNumber, fromNumber, initialNotificationMessage, + merchant, { workspace_sid: workspaceSid, workflow_sid: workflowSid, @@ -79,6 +81,7 @@ exports.handler = TokenValidator(async (context, event, callback) => { toNumber, fromNumber, initialNotificationMessage, + merchant, { workspace_sid: workspaceSid, workflow_sid: workflowSid, @@ -120,6 +123,7 @@ const validate = async (event) => { workspaceSid: string(), workflowSid: string(), queueSid: string(), + merchant: string(), }); try { const params = await schema.validate(event, { @@ -174,6 +178,7 @@ const openTaskInteraction = async ( to, from, body, + merchant, routingProperties ) => { const toNumber = `whatsapp:${to}`; @@ -205,6 +210,7 @@ const openTaskInteraction = async ( twilioNumber: from, channelType: 'whatsapp', initialNotificationMessage: body, + merchant, }, }, }, diff --git a/src/components/OutboundWaDialog/OutboundWaDialog.js b/src/components/OutboundWaDialog/OutboundWaDialog.js index 2852969..509d383 100644 --- a/src/components/OutboundWaDialog/OutboundWaDialog.js +++ b/src/components/OutboundWaDialog/OutboundWaDialog.js @@ -7,6 +7,7 @@ import { v4 as uuidv4 } from 'uuid'; import unidecode from 'unidecode'; import taskService from '../../services/TaskService'; +import merchantService from '../../services/MerchantService'; import getTemplatesService from '../../services/GetTemplatesService'; import OutboundSenderIdSelector from '../OutboundSenderIdSelector/OuboundSenderIdSelector'; @@ -210,14 +211,19 @@ class OutboundWaDialog extends React.Component { }); } - createTask() { + async createTask() { Actions.invokeAction('SetActivity', { activitySid: taskService.availableActivitySid, }); - return taskService.createTask( + const merchant = await merchantService.findMerchantByPhoneNumber( + this.state.toNumber + ); + + return await taskService.createTask( this.state.fromNumber, '+55' + this.state.toNumber, - this.state.message + this.state.message, + merchant ); } diff --git a/src/services/MerchantService.js b/src/services/MerchantService.js new file mode 100644 index 0000000..fa92493 --- /dev/null +++ b/src/services/MerchantService.js @@ -0,0 +1,22 @@ +import { Manager } from '@twilio/flex-ui'; +import axios from 'axios'; + +class MerchantService { + manager = Manager.getInstance(); + baseUrl = process.env.REACT_APP_GET_MERCHANT_CONTACT_ENDPOINT; + + findMerchantByPhoneNumber = async (phoneNumber) => { + return await axios + .post(this.baseUrl, { + Token: this.manager.store.getState().flex.session.ssoTokenPayload.token, + phoneNumber: `whatsapp:+55${phoneNumber}`, + }) + .then((response) => { + return response.data.list; + }); + }; +} + +const merchantService = new MerchantService(); + +export default merchantService; diff --git a/src/services/TaskService.js b/src/services/TaskService.js index 1a38bec..e1d4310 100644 --- a/src/services/TaskService.js +++ b/src/services/TaskService.js @@ -9,7 +9,12 @@ class TaskService { workflowSid = process.env.REACT_APP_WORKFLOW_SID; queueSid = process.env.REACT_APP_TASK_QUEUE_SID; - createTask = async (fromNumber, toNumber, initialNotificationMessage) => { + createTask = async ( + fromNumber, + toNumber, + initialNotificationMessage, + merchant + ) => { let data = { fromNumber, toNumber, @@ -19,6 +24,7 @@ class TaskService { workspaceSid: this.workspaceSid, workflowSid: this.workflowSid, queueSid: this.queueSid, + merchant: JSON.stringify(merchant), }; return axios.post(this.baseUrl, data).then((response) => {