60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
function toCustomISOString(date) {
|
|
// Ensure input is a Date object
|
|
if (!(date instanceof Date)) throw new Error("Input must be a Date object");
|
|
// Get ISO string, then trim to 3 ms digits and add 'Z'
|
|
return date.toISOString().replace(/\d{3}Z$/, match => match.slice(0, 3) + 'Z');
|
|
}
|
|
|
|
|
|
return {
|
|
/**
|
|
*
|
|
* @param {String} customerId Customer identifier (i.e. 10000050)
|
|
* @param {[String]} notes Array on notes
|
|
* @param {Date} startTime Start time of the interaction
|
|
* @param {Date} endTime End time of the interaction
|
|
* @param {String} external URL
|
|
*/
|
|
post(customerId, notes, startTime, endTime, url) {
|
|
return new Promise(async (resolve, reject) => {
|
|
try {
|
|
const OIDC = await CAInterface().getOIDC();
|
|
let config = CAInterface().settings().url.CA;
|
|
const contextServiceURL = `https://${config.base}/context-service/${config.tenant}/contexts`;
|
|
|
|
const { data } = await CAInterface().axios("contextService", {
|
|
method: "post",
|
|
url: contextServiceURL,
|
|
headers: {
|
|
"Content-Type": "application/ld+json",
|
|
Authorization: `OIDC_id_token ${OIDC.access_token}`,
|
|
},
|
|
data: {
|
|
"@type": "vctx:Context",
|
|
"vctx:contacts": [
|
|
{
|
|
"@type": "vctc:ExternalContact",
|
|
"vctc:subtype": "iva",
|
|
"vctc:direction": "vctc:inbound",
|
|
"vctc:startTime": toCustomISOString(startTime),
|
|
"vctc:endTime": toCustomISOString(endTime),
|
|
"vctc:externalUrl": url,
|
|
"vctc:notes": notes,
|
|
},
|
|
],
|
|
"vctx:customer": {
|
|
"@type": "vcust:Customer",
|
|
"vcust:identifier": `${customerId}`,
|
|
},
|
|
},
|
|
});
|
|
console.log({
|
|
contextServiceData: data,
|
|
});
|
|
resolve();
|
|
} catch (error) {
|
|
reject(error);
|
|
}
|
|
});
|
|
},
|
|
}; |