getCallLog
This interface retrieves a previously logged call log record in the target CRM. This information is used to render a form to allow an end user to view or edit that record within the App Connect client.
Request parameters
Parameter | Description |
---|---|
user |
TODO |
callLogId |
The ID of the activity or call log record within the CRM. |
authHeader |
The HTTP Authorization header to be transmitted with the API request to the target CRM. |
Return value(s)
This interface should return the associated call log record in a prescribed format.
Parameter | Description |
---|---|
callLogInfo |
Contain subject , note and optionally additionalSubmission |
returnMessage |
message , messageType and ttl |
Example
{
callLogInfo:{
subject: "A new call from John Doe",
note: "Delivery location changed.",
additionalSubmission: {
address: "12 Some Street, CA"
}
},
returnMessage:{
message: 'Log fetched',
messageType: 'success', // 'success', 'warning' or 'danger'
ttl: 30000 // in miliseconds
}
}
Reference
}
};
}
// - contactInfo: { id, type, phoneNumber, name }
// - message : same as in https://developers.ringcentral.com/api-reference/Message-Store/readMessage
// - recordingLink: recording link of voice mail
// - additionalSubmission: all additional fields that are setup in manifest under call log page
async function createMessageLog({ user, contactInfo, authHeader, message, additionalSubmission, recordingLink, faxDocLink }) {
// ---------------------------------------
// ---TODO.7: Implement message logging---
// ---------------------------------------
// const postBody = {
// data: {
// subject: `[SMS] ${message.direction} SMS - ${message.from.name ?? ''}(${message.from.phoneNumber}) to ${message.to[0].name ?? ''}(${message.to[0].phoneNumber})`,
// body: `${message.direction} SMS - ${message.direction == 'Inbound' ? `from ${message.from.name ?? ''}(${message.from.phoneNumber})` : `to ${message.to[0].name ?? ''}(${message.to[0].phoneNumber})`} \n${!!message.subject ? `[Message] ${message.subject}` : ''} ${!!recordingLink ? `\n[Recording link] ${recordingLink}` : ''}\n\n--- Created via RingCentral App Connect`,
// type: 'Message'
// }
// }
// const addLogRes = await axios.post(
// `https://api.crm.com/activity`,
// postBody,
// {
// headers: { 'Authorization': authHeader }
// });
const messageType = recordingLink ? 'Voicemail' : (faxDocLink ? 'Fax' : 'SMS');
console.log(`adding message log... \n\n${JSON.stringify(message, null, 2)}`);
mockMessageLog = {
id: 'testMessageLogId'
}
const addLogRes = {
data: {
id: mockMessageLog.id
}
}
extraDataTracking = {
ratelimitRemaining: getLogRes.headers['x-ratelimit-remaining'],
ratelimitAmount: getLogRes.headers['x-ratelimit-limit'],
ratelimitReset: getLogRes.headers['x-ratelimit-reset']
};
const logBody = getLogRes.data.data.note;
const note = logBody.split('<b>Agent notes</b>')[1]?.split('<b>Call details</b>')[0]?.replaceAll('<br>', '') ?? '';
const relatedContact = getLogRes.data.related_objects?.person;
let contactName = 'Unknown';
if (relatedContact) {
const contactKeys = Object.keys(relatedContact);
contactName = relatedContact[contactKeys[0]].name;
}
return {
callLogInfo: {
subject: getLogRes.data.data.subject,
note,
contactName,
fullBody: logBody,
fullLogResponse: getLogRes?.data?.data,
dispositions: {
deals: getLogRes.data.data.deal_id,
leads: getLogRes.data.data.lead_id
}
},
extraDataTracking
}
}
exports.getAuthType = getAuthType;
exports.getOauthInfo = getOauthInfo;
exports.getUserInfo = getUserInfo;
exports.createCallLog = createCallLog;