updateMessageLog
This function is to add following messages on the same day to the same contact. Use case is explained here
Params
Input
:
- user
: user entity
- contactInfo
: has id
, phoneNumber
, type
, name
- existingMessageLog
: existing message log entity
- authHeader
: auth header for CRM API call
- message
: message text
Reference
async function updateMessageLog({ user, contactInfo, existingMessageLog, message, authHeader }) {
// ---------------------------------------
// ---TODO.8: Implement message logging---
// ---------------------------------------
// const existingLogId = existingMessageLog.thirdPartyLogId;
// const getLogRes = await axios.get(
// `https://api.crm.com/activity/${existingLogId}`,
// {
// headers: { 'Authorization': authHeader }
// });
// const originalNote = getLogRes.data.body;
// const updateNote = orginalNote.replace();
// const patchBody = {
// data: {
// body: updateNote,
// }
// }
// const updateLogRes = await axios.patch(
// `https://api.crm.com/activity`,
// patchBody,
// {
// headers: { 'Authorization': authHeader }
// });
console.log(`update message log with... \n\n${JSON.stringify(message, null, 2)}`);
//---------------------------------------------------------------------------------------------------------------------------------------------
//---CHECK.8: For multiple messages or additional message during the day, open db.sqlite and CRM website to check if message logs are saved ---
//---------------------------------------------------------------------------------------------------------------------------------------------
}
async function updateMessageLog({ user, contactInfo, existingMessageLog, message, authHeader, additionalSubmission }) {
const dealId = additionalSubmission ? additionalSubmission.deals : '';
const leadId = additionalSubmission ? additionalSubmission.leads : '';
let extraDataTracking = {};
const existingLogId = existingMessageLog.thirdPartyLogId;
const userInfoResponse = await axios.get('https://api.pipedrive.com/v1/users/me', {
headers: {
'Authorization': authHeader
}
});
const userName = userInfoResponse.data.data.name;
const getLogRes = await axios.get(
`https://${user.hostname}/api/v2/activities/${existingLogId}`,
{
headers: { 'Authorization': authHeader }
});
let logBody = getLogRes.data.data.note;
let patchBody = {};
const newMessageLog =
`<li>${message.direction === 'Inbound' ? `${contactInfo.name} (${contactInfo.phoneNumber})` : userName} ${moment(message.creationTime).utcOffset(user.timezoneOffset).format('hh:mm A')}<br>` +
`<b>${message.subject}</b></li>`;
logBody = logBody.replace('------------<br><ul>', `------------<br><ul>${newMessageLog}`);
const regex = RegExp('<br>Conversation.(.*) messages.');
const matchResult = regex.exec(logBody);
logBody = logBody.replace(matchResult[0], `<br>Conversation(${parseInt(matchResult[1]) + 1} messages)`);
patchBody = {
note: logBody,
deal_id: dealId
}
if (!dealId && leadId) {
patchBody.lead_id = leadId;
}
const patchLogRes = await axios.patch(
`https://${user.hostname}/api/v2/activities/${existingLogId}`,
patchBody,
{
headers: { 'Authorization': authHeader }
});
extraDataTracking = {
ratelimitRemaining: patchLogRes.headers['x-ratelimit-remaining'],
ratelimitAmount: patchLogRes.headers['x-ratelimit-limit'],
ratelimitReset: patchLogRes.headers['x-ratelimit-reset']
};
return {
extraDataTracking
}
}