cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
599
Views
0
Helpful
2
Replies

Phone Profile Corruption When Using makeCallSoap

TbonePro1
Level 1
Level 1

Hello,

I'm currently developing a .NET dialer application that is initiated by a Windows Sidebar Gadget via ActiveX and I've run into a strange problem.  Seemingly at random (though more often when dialing long distance) the application causes the phone profile associated with the web dialer (https://ip:8433/webdialer/Webdialer) to no longer list a phone number.  Once this has occured that phone can never web dial again whether from my application or through the web dialer (https://ip:8443/webdialer/Webdialer).  However, the phone will still manually dial just fine, and the profile in the CUCM looks just fine.  Further more, recreating the profile after resetting the phone to factory default has no effect.  The only way we have been able to get web dialing to work again is to replace the physical phone (until the new phone gets corrupted).  Were currently running on CUCM v7.1.  My code is below.  I really appreciate any help you can provide!

.NET Code using XMLRPC SOAP communication with overriden functions as specified in the "Cisco Unified Communications Manager
Developers Guide" in the "Using the AXL API in a .NET Environment" section.

static void Main(string[] args)
        {
            // Initialize variables for command line arguments
            string argsUser = ""; // user id
            string argsPass = ""; // user password
            string argsDest = ""; // destination of phoen call - phone number
            string argsDevi = "0"; // device number selected from profile options
            string argsLine = "0"; // line number selected from profile options

            if (args.Length >= 3) // were enough arguments provided by the user?
            {

                argsUser = args[0];
                argsPass = args[1];
                argsDest = args[2];

                if (args.Length >= 5) // were optional pair to select device and line sent?
                {
                    argsDevi = args[4];
                    argsLine = args[5];
                }

                using (WDSoapInterfaceService myCUCMClient = new WDSoapInterfaceService(argsUser, argsPass))
                {
                    // create credentials to send to WebDialer
                    Credential myCredential = new Credential();
                    myCredential.userID = argsUser;
                    myCredential.password = argsPass;

                    // create profile to send to WebDialer
                    UserProfile myProfile = new UserProfile();
                    myProfile.user = myCredential.userID;
                    myProfile.deviceName = myCUCMClient.getProfileDetailSoap(myCredential).deviceInfoListDetail[0].deviceName;
                    myProfile.lineNumber = myCUCMClient.getProfileDetailSoap(myCredential).deviceInfoListDetail[0].lines[0];
                    myProfile.locale = "en";
                    myProfile.supportEM = false;
                    //myProfile.dontAutoClose = false;
                    //myProfile.dontShowCallConf = true;

                    // Initiate Phone Call
                    myCUCMClient.makeCallSoap(myCredential, argsDest, myProfile);
                }

            }

            else // not enough arguments sent to initialize phone call.  Prompt error message.
            {
                MessageBox.Show("PhoneDialer_XMLRPC: Invalid Arguments or Arguments Incomplete\n\nUsage: PhoneDialer_XMLRPC.exe <username> <password> <destination> (optional pair<Device#><line#>)");
            }
        }
    }

Sidebar Gadget function (javascript) calling the dialer application

function makeCallSoap(dest)
    {
        var WshShell = new ActiveXObject('WScript.Shell');
        var clientArgs = " " + System.Gadget.Settings.read("userID") + " " + System.Gadget.Settings.read("userPass") + " " + dest;
        document.getElementById("updateStatus").innerHTML = clientArgs; // used to verify arguments sent to dialer
        exec = WshShell.Exec(System.Gadget.path + "\\dialer\\DialerClient_XMLRPC.exe" + clientArgs);
    }

2 Replies 2

Bryan Johnson
Level 1
Level 1

I'm having the exact same problem you are describing.  The device name still comes through, but the DN won't.  And it seems to randomly happen to people that once worked.

Did you ever get a resolution?  We're on CUCM 7.1.5.

My company did come to a resolution of sorts.  A couple of weeks back the CUCM was completely reset to resolve unrelated issues.  After the reset all of my "broken" devices worked again.  We are speculating that there was bad data cached in the CUCM that was cleared after the services restarted.  Since then the dialer application has be rewritten in JAVA to resolve latency issues that were being caused by the SSL handshake between the Call Manager and my .Net application.  To date there have been no more problems. 

I know that's not much, but I hope it helps!

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: