Tutorial: 05. Call information

05. Call information

It allows to retrieve the call information

Call Information

onDialingNumber

It retrieves the manual call information so the user can set a disposition for the call.

/**
 * @description Manual dialing data
 * @event onDialingNumber
 * @param {JSON} callOutData {callout_id:uint, call_id:int, phoneNumber:String, camID:uint } 
 */
function onDialingNumber(message) {
    console.log("onDialingNumber", message);

    document.getElementById("calloutTxt").value = message.callout_id;
    document.getElementById("camIdTxt").value = message.camID;
    document.getElementById("callIdTxt").value = message.call_id;

    printToConsole("Calling " + message.phoneNumber + "...");
}

Call data

When the user receives a call, the method GetLastCallData returns this data structure.

/**
 * @description Datos de la llamada en curso
 * @param {json} callData {DNIS:String, IsQueueCall:bool, cal_key:String, callOut_id:Number,  call_id:Number, cam_id:Number,  
 * contactData:Array, holdTime:bool, phoneNumber:String, port:int, wrapUpTime:int, typeCall:int, wrapUpTime: int } 
 * @example 
 * {
 * DNIS: "",
 * IsQueueCall: false, 
 * cal_key: "",
 * callOut_id: 118,
 * call_id: 110,
 * cam_id: 1,
 * contactData: ["Dato1","Dato2","Dato3","Dato4","Dato5"],
 * holdTime: true,
 * phoneNumber: "2005",
 * port: 13, 
 * typeCall: 2,
 * waitingTime: 0,
 * wrapUpTime: 35
 * }
 */
function onCallRecieved(callData) {
    printToConsole("onCallRecieved");
    console.log("onCallRecieved ", callData);
    document.getElementById("dnisTxt").value = callData.DNIS;
    document.getElementById("queuedTxt").value = callData.IsQueueCall;
    document.getElementById("calKeyTxt").value = callData.cal_key;
    document.getElementById("calloutTxt").value = callData.callOut_id;
    document.getElementById("callIdTxt").value = callData.call_id;
    document.getElementById("camIdTxt").value = callData.cam_id;   
    
    document.getElementById("data1Txt").value = callData.contactData[0];   
    document.getElementById("data2Txt").value = callData.contactData[1];   
    document.getElementById("data3Txt").value = callData.contactData[2];   
    document.getElementById("data4Txt").value = callData.contactData[3];   
    document.getElementById("data5Txt").value = callData.contactData[4];   
        
    document.getElementById("holdTxt").value = callData.holdTime;
    document.getElementById("phoneTxt").value = callData.phoneNumber;
    document.getElementById("portTxt").value = callData.port;
    document.getElementById("callTypeTxt").value = callData.typeCall;    
    document.getElementById("wrapupTimeTxt").value = callData.wrapUpTime;
}

Last call data

The method GetLastCallData retrieves the data of the last call made from both inbound or outbound calls.

Note Inbound calls = 1 and Outbound calls= 2

/**
 * @description Obtener los datos ultima llamada
 * @example {
 * call_id:1, cam_id:1, cal_key:"", callOut_id:0, DNIS:"1009",
 * typeCall:1, //1 ACD
 * IsQueueCall:0, holdTime:15, phoneNumber:"11078510", port:1, wrapUpTime:15,
 * contactData:null
 * }
 * @example 
 * {
 * DNIS: "",
 * IsQueueCall: false, 
 * cal_key: "",
 * callOut_id: 118,
 * call_id: 110,
 * cam_id: 1,
 * contactData: ["Dato1","Dato2","Dato3","Dato4","Dato5"],
 * holdTime: true,
 * phoneNumber: "2005",
 * port: 13, 
 * typeCall: 2,
 * waitingTime: 0,
 * wrapUpTime: 35
 * }
 * @fires CORE_APIEvents#onError estado invalido
 * @link GetLastCallData
 * @tutorial CallInformation
 */
function getLastCallData() {

    let arrayx = nuxibaIntegration.GetLastCallData();

    if (arrayx) {
        console.log("getLastCallData", arrayx);
        let arrayCallData = arrayx.contactData;
        arrayx.call_id ? document.getElementById("callIdTxt").value = arrayx.call_id : document.getElementById("callIdTxt").value = "";
        arrayx.IsQueueCall ? document.getElementById("queuedTxt").value = arrayx.IsQueueCall : document.getElementById("queuedTxt").value = "";

        arrayx.cam_id ? document.getElementById("camIdTxt").value = arrayx.cam_id : document.getElementById("camIdTxt").value = "";
        arrayx.holdTime ? document.getElementById("holdTxt").value = arrayx.holdTime : document.getElementById("holdTxt").value = "";

        arrayx.DNIS ? document.getElementById("dnisTxt").value = arrayx.DNIS : document.getElementById("dnisTxt").value = "";
        arrayx.phoneNumber ? document.getElementById("phoneTxt").value = arrayx.phoneNumber : document.getElementById("phoneTxt").value = "";

        arrayx.cal_key ? document.getElementById("calKeyTxt").value = arrayx.cal_key : document.getElementById("calKeyTxt").value = "";
        arrayx.port ? document.getElementById("portTxt").value = arrayx.port : document.getElementById("portTxt").value = "";

        arrayx.typeCall ? document.getElementById("callTypeTxt").value = arrayx.typeCall : document.getElementById("callTypeTxt").value = "";
        arrayx.wrapUpTime ? document.getElementById("wrapupTimeTxt").value = arrayx.wrapUpTime : document.getElementById("wrapupTimeTxt").value = "";

        arrayx.callOut_id ? document.getElementById("calloutTxt").value = arrayx.callOut_id : document.getElementById("calloutTxt").value = "";


        if (arrayCallData.length === 5) {
            arrayCallData[0] ? document.getElementById("data1Txt").value = arrayCallData[0] : document.getElementById("data1Txt").value = "";
            arrayCallData[1] ? document.getElementById("data2Txt").value = arrayCallData[1] : document.getElementById("data2Txt").value = "";
            arrayCallData[2] ? document.getElementById("data3Txt").value = arrayCallData[2] : document.getElementById("data3Txt").value = "";
            arrayCallData[3] ? document.getElementById("data4Txt").value = arrayCallData[3] : document.getElementById("data4Txt").value = "";
            arrayCallData[4] ? document.getElementById("data5Txt").value = arrayCallData[4] : document.getElementById("data5Txt").value = "";
        }

    }
}

Update last call data

On the agent screen, there are 5 fields that the user can fill up with aditional information, to save that information into the database you will need the calloutId which can be obtained by the methods: onDialingNumber, onCallRecieved, the method GetLastCallData and of course, the 5 fields to update,

function onClickUpdateCallData() {
    console.log("onClickUpdateCallData");
    let callOutID, data1, data2, data3, data4, data5;
    callOutID = document.getElementById("calloutTxt").value;
    data1 = document.getElementById("data1Txt").value;
    data2 = document.getElementById("data2Txt").value;
    data3 = document.getElementById("data3Txt").value;
    data4 = document.getElementById("data4Txt").value;
    data5 = document.getElementById("data5Txt").value;
    nuxibaIntegration.updateCallData(callOutID, data1, data2, data3, data4, data5);
}