It's a custom integration:
--------------------------------------
exports.handler = function(context, event, callback) {
var numTelefono = event.num;
var DynamicsWebApi = require('dynamics-web-api');
var resource = 'https://'+context.THE_ORG+'.crm4.dynamics.com';
var destino = 'https://'+context.THE_ORG+'.crm4.dynamics.com/api/data/v9.1/';
function acquireToken(dynamicsWebApiCallback){
dynamicsWebApiCallback(event.token);
}
//create DynamicsWebApi object
var dynamicsWebApi = new DynamicsWebApi({
webApiUrl: destino,
onTokenRefresh: acquireToken
});
var request = {
collection: "contacts",
select: ["fullname", "firstname","lastname","emailaddress1","contactid","mobilephone"],
filter: "mobilephone eq '"+ numTelefono+"'",
maxPageSize: 5,
count: true
};
//perform a multiple records retrieve operation
dynamicsWebApi.retrieveMultipleRequest(request).then(function (response) {
var count = response.oDataCount;
var nextLink = response.oDataNextLink;
var records = response.value;
var recordCount = Object.keys(records).length;
if (recordCount >=1){
console.log(records[0].contactid);
console.log(records[0].firstname);
console.log(records[0].incidentID);
var incidentID;
var caseNumber;
//Get incidentID
var caseContact='contact('+records[0].contactid+')';
console.log(caseContact);
request = {
collection: "incidents",
select: ["ticketnumber,incidentid"],
filter: "_customerid_value eq "+records[0].contactid,
maxPageSize: 1,
count: true
};
//perform a multiple records retrieve operation
dynamicsWebApi.retrieveMultipleRequest(request).then(function (response) {
var caseRecords = response.value;
var caseRecordCount = Object.keys(caseRecords).length;
if (caseRecordCount >=1){
incidentID = caseRecords[0].incidentid;
caseNumber= caseRecords[0].ticketnumber.substr(4);
console.log(caseNumber);
console.log('Found case');
//callback(null,{ticketNumber: caseRecords[0].ticketnumber, incidentid:caseRecords[0].incidentid} );
callback(null, {
contact_id: records[0].contactid,
first_name: records[0].firstname,
email: records[0].emailaddress1,
last_name: records[0].lastname,
phone: records[0].mobilephone,
CaseNumber: caseNumber,
incidentID: incidentID
});
}
else{
console.log('No case');
callback(null, {
contact_id: records[0].contactid,
first_name: records[0].firstname,
email: records[0].emailaddress1,
last_name: records[0].lastname,
phone: records[0].mobilephone,
CaseNumber: caseNumber,
incidentID: incidentID
});
}
})
.catch(function (error){
//catch an error
console.log(error);
console.log('Error no record 2');
callback(null,error);
});
}
else{
console.log('Error no record 1');
callback(null,'Error');
}
})
.catch(function (error){
//catch an error
console.log(error);
console.log('Error no record at all');
callback(null,'No Record');
});
};