Genesys CTI User Forum

Genesys CTI User Forum => Genesys-related Development => Topic started by: cavagnaro on July 18, 2013, 09:45:49 PM

Title: Read Values returned from ConfigServer
Post by: cavagnaro on July 18, 2013, 09:45:49 PM
Hi guys,
smashing my head for 2 days and can't see my error...so I connected to ConfigServer, send a request and it returns (yay! xml! values needed!)
And got stuck lol

Trying to capture the 853 from:
[code]
<DBID value="853" />
[/code]

My code:
[code]
XDocument resultDocument = objectsRead.ConfObject; //Capture the XML part of the object
var temp = resultDocument.Descendants("DBID").Select(x => "DBID " + x.Attribute("value").Value).ToList();
[/code]

And I need to catch the DBID to send it to another CfgQuery...BUT the read of this value fails...
I think it has to do something with the UTF8...I tried many ways and same issue.
Anybody has a code to read these values and a little slap to me to understand why am I failing so miserably?

XML is:
[code]
<?xml version="1.0" encoding="utf-16"?>
<ConfData xmlns="http://schemas.genesyslab.com/Protocols/Configuration/ConfServer/2005/">
  <CfgPerson>
    <DBID value="853" />
    <tenantDBID value="101" />
    <lastName value="Rodrigues Geske" />
    <firstName value="Eduardo" />
    <employeeID value="T01039" />
    <userName value="T01039" />
    <password value="81DC9BDB52D04DC20036DBD8313ED055" />
    <isAgent value="2" />
    <CfgAgentInfo>
      <placeDBID value="0" />
      <skillLevels>
        <CfgSkillLevel>
          <skillDBID value="104" />
          <level value="0" />
        </CfgSkillLevel>
      </skillLevels>
      <agentLogins>
        <CfgAgentLoginInfo>
          <agentLoginDBID value="277" />
          <wrapupTime value="0" />
        </CfgAgentLoginInfo>
      </agentLogins>
      <capacityRuleDBID value="0" />
      <siteDBID value="0" />
      <contractDBID value="0" />
    </CfgAgentInfo>
    <isAdmin value="1" />
    <state value="1" />
  </CfgPerson>
</ConfData>
[/code]

Thanks!
Title: Re: Read Values returned from ConfigServer
Post by: spin on July 21, 2013, 04:22:59 AM
hi,

I had to do something similar but I was looking for the isAgent.  I've modified it slightly for you so please don't take this as 100% working but hopefully this helps?

BTW I'm not strong in XML parsing so please don't laugh if there is a far easier way to do this.  I was happy when I got it to work.

Dim varObjectsRead As EventObjectsRead = varMessage
Dim varNavigator As XPathNavigator = varObjectsRead.ConfObject.CreateNavigator()
                    Dim varNodes As XPathNodeIterator = varNavigator.Select("//*")

                    Dim xdoc As New XmlDocument
                    varNodes.MoveNext()
                    varNavigator = varNodes.Current.Clone
                    Dim varXML As String = varNavigator.InnerXml

                    'load the XML string into an XML document
                    xdoc.LoadXml(varXML)

                    Dim xNode As XmlNode = xdoc.FirstChild
                    'navigate to the attributes
                    xNode = xNode.FirstChild

                    'cycle through attributes until finding the "DBID"
                    Dim varXMLValue As String
                    Do Until xNode Is Nothing ' after going to the end the variable will switch to nothing
                    If XNode.Name = "DBID" Then
                        varDBIDValue = xNode.Attributes(0).Value.ToString
                        xNode = xNode.NextSibling
                    Loop

       
Title: Re: Read Values returned from ConfigServer
Post by: cavagnaro on July 21, 2013, 09:13:37 PM
Nice! Thanks!
Will try it tomorrow! I promised myself no coding this weekend ;)
Title: Re: Read Values returned from ConfigServer
Post by: Kubig on August 06, 2013, 11:37:24 AM
Is there any exact reason for using RequestReadObjects? It is possible to use Cfg queries, that returns objects and not XML. So, it is more easily to "parse" retrieved information
Title: Re: Read Values returned from ConfigServer
Post by: cavagnaro on August 06, 2013, 12:25:29 PM
Yup, I got it later ;) I'm now using that method.
Thanks