Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Number recognition methods for Vonage or other telephony systems

Alan42
Tera Guru

I was asked to integrate Vonage Contact Center into our instance.    I did everything as directed by the Vonage setup guide and it is working except for when a call comes in.   An interaction record is pulled up and the information of the user is supposed to pull over from sys_user based on the incoming phone number.    That number is stored in the phone field in sys_user.    Vonage sends the number over as 7275701234 while we have it stored as (727) 570-1234.  Any suggestions on how to get the interaction record to normalize the numbers and pull the data?     

3 REPLIES 3

Vishal Jaswal
Giga Sage
Giga Sage

Hello @Alan42 

You need to modify the interaction record creation logic as shown below:

(function processIncomingCall(incomingPhone) {
    function normalizePhoneNumber(phoneNumber) {
        return phoneNumber ? phoneNumber.replace(/\D/g, '') : ''; // Remove all non-numeric characters and whitespace
    }

    var normalizedIncomingPhone = normalizePhoneNumber(incomingPhone);

    var userGr = new GlideRecord('sys_user');
    userGr.addNotNullQuery('phone'); // you can add active true here too
    userGr.query();

    while (userGr.next()) {
        var storedPhone = normalizePhoneNumber(userGr.getValue('phone'));

        if (storedPhone === normalizedIncomingPhone) {
            gs.info("User found: " + userGr.getValue('name'));

            // Create an interaction record and associate the user
            var interaction = new GlideRecord('interaction');
            interaction.initialize();
            interaction.setValue('caller', userGr.getUniqueValue());
            interaction.insert();

            gs.info("Interaction record created for " + userGr.getValue('name'));
            return; // Stop searching after finding a match
        }
    }

    gs.info("No matching user found for phone number: " + incomingPhone);
})('7275701234'); // Replace with dynamic phone number input

Hope that helps!

Hi @Alan42 

Have you validated the solution proposed?

I'm having similar issue but with different source.

It didn't work.    I had to convert the field to e164 for anything to work properly.  It was simpler than I thought it would be, using import sets and a transform map was quick, clean, and safe.