1

Using SOAP against CUCM's AXL web service, there are a number of query calls.
getLine getDeviceProfile getUser

and so on.

The WDSL shows:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
  <soapenv:Header/>
  <soapenv:Body>
    <ns:getDeviceProfile sequence="?">
      <!--You have a CHOICE of the next 2 items at this level-->
      <name>?</name>
      <uuid>?</uuid>
      <!--Optional:-->
      <returnedTags ctiid="?" uuid="?">
        <!--Optional:-->
        <name>?</name>
        <!--Optional:-->
        <description>?</description>
        <!--Optional:-->
        <product>?</product>
        <!--Optional:-->
        <model>?</model>
        <!--Optional:-->
        <class>?</class>
        <!--Optional:-->
        <protocol>?</protocol>
        <!--Optional:-->
        <protocolSide>?</protocolSide>
        <!--Optional:-->
        <userHoldMohAudioSourceId>?</userHoldMohAudioSourceId>
        <!--Optional:-->
        <vendorConfig>
          <!--You may enter ANY elements at this point-->
        </vendorConfig>
        <!--Optional:-->
        <versionStamp>?</versionStamp>
        <!--Optional:-->
        <traceFlag>?</traceFlag>
        <!--Optional:-->
        <mlppDomainId>?</mlppDomainId>
        <!--Optional:-->
        <mlppIndicationStatus>?</mlppIndicationStatus>
        <!--Optional:-->
        <preemption>?</preemption>
        <!--Optional:-->
        <lines>
          <!--You have a CHOICE of the next 2 items at this level-->
          <!--Zero or more repetitions:-->
          <line uuid="?" ctiid="?">
            <!--Optional:-->
            <index>?</index>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <display>?</display>
            <!--Optional:-->
            <dirn uuid="?">
              <!--Optional:-->
              <pattern>?</pattern>
              <!--Optional:-->
              <routePartitionName uuid="?">?</routePartitionName>
            </dirn>
            <!--Optional:-->
            <ringSetting>?</ringSetting>
            <!--Optional:-->
            <consecutiveRingSetting>?</consecutiveRingSetting>
            <!--Optional:-->
            <ringSettingIdlePickupAlert>?</ringSettingIdlePickupAlert>
            <!--Optional:-->
            <ringSettingActivePickupAlert>?</ringSettingActivePickupAlert>
            <!--Optional:-->
            <displayAscii>?</displayAscii>
            <!--Optional:-->
            <e164Mask>?</e164Mask>
            <!--Optional:-->
            <dialPlanWizardId>?</dialPlanWizardId>
            <!--Optional:-->
            <mwlPolicy>?</mwlPolicy>
            <!--Optional:-->
            <maxNumCalls>?</maxNumCalls>
            <!--Optional:-->
            <busyTrigger>?</busyTrigger>
            <!--Optional:-->
            <callInfoDisplay>
              <!--Optional:-->
              <callerName>?</callerName>
              <!--Optional:-->
              <callerNumber>?</callerNumber>
              <!--Optional:-->
              <redirectedNumber>?</redirectedNumber>
              <!--Optional:-->
              <dialedNumber>?</dialedNumber>
            </callInfoDisplay>
            <!--Optional:-->
            <recordingProfileName uuid="?">?</recordingProfileName>
            <!--Optional:-->
            <monitoringCssName uuid="?">?</monitoringCssName>
            <!--Optional:-->
            <recordingFlag>?</recordingFlag>
            <!--Optional:-->
            <audibleMwi>?</audibleMwi>
            <!--Optional:-->
            <speedDial>?</speedDial>
            <!--Optional:-->
            <partitionUsage>?</partitionUsage>
            <!--Optional:-->
            <associatedEndusers>
              <!--Zero or more repetitions:-->
              <enduser>
                <!--Optional:-->
                <userId>?</userId>
              </enduser>
            </associatedEndusers>
            <!--Optional:-->
            <missedCallLogging>?</missedCallLogging>
          </line>
          <!--Zero or more repetitions:-->
          <lineIdentifier>
            <!--Optional:-->
            <directoryNumber>?</directoryNumber>
            <!--Optional:-->
            <routePartitionName>?</routePartitionName>
          </lineIdentifier>
        </lines>
        <!--Optional:-->
        <numberOfButtons>?</numberOfButtons>
        <!--Optional:-->
        <phoneTemplateName uuid="?">?</phoneTemplateName>
        <!--Optional:-->
        <speeddials>
          <!--Zero or more repetitions:-->
          <speeddial>
            <!--Optional:-->
            <dirn>?</dirn>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <index>?</index>
          </speeddial>
        </speeddials>
        <!--Optional:-->
        <busyLampFields>
          <!--Zero or more repetitions:-->
          <busyLampField>
            <!--Optional:-->
            <blfDest>?</blfDest>
            <!--You have a CHOICE of the next 1 items at this level-->
            <!--Optional:-->
            <blfDirn>?</blfDirn>
            <!--Optional:-->
            <routePartition>?</routePartition>
            <!--Optional:-->
            <label>?</label>
            <!--Optional:-->
            <asciiLabel>?</asciiLabel>
            <!--Optional:-->
            <associatedBlfSdFeatures>
              <!--Zero or more repetitions:-->
              <feature>?</feature>
            </associatedBlfSdFeatures>
            <!--Optional:-->
            <index>?</index>
          </busyLampField>
        </busyLampFields>
        <!--Optional:-->
        <blfDirectedCallParks>
          <!--Zero or more repetitions:-->
          <blfDirectedCallPark>
            <!--Optional:-->
            <label>?</label>
            <!--You have a CHOICE of the next 2 items at this level-->
            <!--Optional:-->
            <directedCallParkId>?</directedCallParkId>
            <!--Optional:-->
            <directedCallParkDnAndPartition>
              <!--Optional:-->
              <dnPattern>?</dnPattern>
              <!--Optional:-->
              <routePartitionName uuid="?">?</routePartitionName>
            </directedCallParkDnAndPartition>
            <!--Optional:-->
            <labelAscii>?</labelAscii>
            <!--Optional:-->
            <index>?</index>
          </blfDirectedCallPark>
        </blfDirectedCallParks>
        <!--Optional:-->
        <addOnModules>
          <!--0 to 2 repetitions:-->
          <addOnModule uuid="?">
            <!--Optional:-->
            <loadInformation special="?">?</loadInformation>
            <!--Optional:-->
            <model>?</model>
            <!--Optional:-->
            <index>?</index>
          </addOnModule>
        </addOnModules>
        <!--Optional:-->
        <userlocale>?</userlocale>
        <!--Optional:-->
        <defaultProfileName>?</defaultProfileName>
        <!--Optional:-->
        <currentProfileName uuid="?">?</currentProfileName>
        <!--Optional:-->
        <loginTime>?</loginTime>
        <!--Optional:-->
        <loginDuration>?</loginDuration>
        <!--Optional:-->
        <singleButtonBarge>?</singleButtonBarge>
        <!--Optional:-->
        <joinAcrossLines>?</joinAcrossLines>
        <!--Optional:-->
        <loginUserId uuid="?">?</loginUserId>
        <!--Optional:-->
        <ignorePresentationIndicators>?</ignorePresentationIndicators>
        <!--Optional:-->
        <dndOption>?</dndOption>
        <!--Optional:-->
        <dndRingSetting>?</dndRingSetting>
        <!--Optional:-->
        <dndStatus>?</dndStatus>
        <!--Optional:-->
        <emccCallingSearchSpace uuid="?">?</emccCallingSearchSpace>
        <!--Optional:-->
        <alwaysUsePrimeLine>?</alwaysUsePrimeLine>
        <!--Optional:-->
        <alwaysUsePrimeLineForVoiceMessage>?</alwaysUsePrimeLineForVoiceMessage>
        <!--Optional:-->
        <softkeyTemplateName uuid="?">?</softkeyTemplateName>
        <!--Optional:-->
        <callInfoPrivacyStatus>?</callInfoPrivacyStatus>
        <!--Optional:-->
        <currentConfig>
          <!--Optional:-->
          <userHoldMohAudioSourceId>?</userHoldMohAudioSourceId>
          <!--Optional:-->
          <phoneTemplateName uuid="?">?</phoneTemplateName>
          <!--Optional:-->
          <mlppDomainId>?</mlppDomainId>
          <!--Optional:-->
          <mlppIndicationStatus>?</mlppIndicationStatus>
          <!--Optional:-->
          <preemption>?</preemption>
          <!--Optional:-->
          <softkeyTemplateName uuid="?">?</softkeyTemplateName>
          <!--Optional:-->
          <ignorePresentationIndicators>?</ignorePresentationIndicators>
          <!--Optional:-->
          <singleButtonBarge>?</singleButtonBarge>
          <!--Optional:-->
          <joinAcrossLines>?</joinAcrossLines>
          <!--Optional:-->
          <callInfoPrivacyStatus>?</callInfoPrivacyStatus>
          <!--Optional:-->
          <dndStatus>?</dndStatus>
          <!--Optional:-->
          <dndRingSetting>?</dndRingSetting>
          <!--Optional:-->
          <dndOption>?</dndOption>
          <!--Optional:-->
          <alwaysUsePrimeLine>?</alwaysUsePrimeLine>
          <!--Optional:-->
          <alwaysUsePrimeLineForVoiceMessage>?</alwaysUsePrimeLineForVoiceMessage>
          <!--Optional:-->
          <emccCallingSearchSpaceName uuid="?">?</emccCallingSearchSpaceName>
          <!--Optional:-->
          <deviceName>?</deviceName>
          <!--Optional:-->
          <model>?</model>
          <!--Optional:-->
          <product>?</product>
          <!--Optional:-->
          <deviceProtocol>?</deviceProtocol>
          <!--Optional:-->
          <class>?</class>
          <!--Optional:-->
          <addressMode>?</addressMode>
          <!--Optional:-->
          <allowAutoConfig>?</allowAutoConfig>
          <!--Optional:-->
          <remoteSrstOption>?</remoteSrstOption>
          <!--Optional:-->
          <remoteSrstIp>?</remoteSrstIp>
          <!--Optional:-->
          <remoteSrstPort>?</remoteSrstPort>
          <!--Optional:-->
          <remoteSipSrstIp>?</remoteSipSrstIp>
          <!--Optional:-->
          <remoteSipSrstPort>?</remoteSipSrstPort>
          <!--Optional:-->
          <geolocationInfo>?</geolocationInfo>
        </currentConfig>
        <!--Optional:-->
        <services>
          <!--Zero or more repetitions:-->
          <service uuid="?">
            <!--Optional:-->
            <telecasterServiceName uuid="?">?</telecasterServiceName>
            <!--Optional:-->
            <name>?</name>
            <!--Optional:-->
            <url>?</url>
            <!--Optional:-->
            <urlButtonIndex>?</urlButtonIndex>
            <!--Optional:-->
            <urlLabel>?</urlLabel>
            <!--Optional:-->
            <urlLabelAscii>?</urlLabelAscii>
            <!--Optional:-->
            <serviceNameAscii>?</serviceNameAscii>
            <!--Optional:-->
            <phoneService>?</phoneService>
            <!--Optional:-->
            <phoneServiceCategory>?</phoneServiceCategory>
            <!--Optional:-->
            <vendor>?</vendor>
            <!--Optional:-->
            <version>?</version>
            <!--Optional:-->
            <priority>?</priority>
          </service>
        </services>
        <!--Optional:-->
        <featureControlPolicy uuid="?">?</featureControlPolicy>
      </returnedTags>
    </ns:getDeviceProfile>
  </soapenv:Body>
</soapenv:Envelope>

Now the <returnedTags> subtree controls what is returned. I was making some calls before and I was getting back all the values (Which is what I want) and then I went and made some changes (not sure what) and suddenly I started getting back only what I asked for.

Key for me is, what is the trick to get AXL to return all data it has on the object referenced, instead of explicitly listing them all in the request?

I.e. I would like a query as simple as:

    <soapenv:Envelope xmlns:ns="http://www.cisco.com/AXL/API/8.5" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soapenv:Body>
    <ns:getLine sequence="?">
      <uuid>{02CF73CE-140E-AD9A-9E0E-B56134636D71}</uuid>
      <returnedTags uuid="?"/>
    </ns:getLine>
  </soapenv:Body>
</soapenv:Envelope>

And get back all the data populated on the Line. But if I just included an empty <returnedTags/> tag I get back nothing. If I list of empty nodes to show the attrs I want, I get back those explicit ones. So what do I send to get all attributes returned?

4

1 回答 1

3

虽然这个问题已经超过几个月了,但无论如何我都会试一试。最近我也参与了一个 cisco axl 项目。我还没有那么多经验,所以我可能错了。

我一直在处理 getPhone 和 getUser 请求(因为它们非常简单),我得到了一个完全填充的结果,查询很简单,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/8.5">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:getUser sequence="?">
         <!--You have a CHOICE of the next 2 items at this level-->
         <userid>ID</userid>
      </ns:getUser>
   </soapenv:Body>
</soapenv:Envelope>

所以换句话说:也许你可以尝试从你的请求中删除。如 WSDL 所示,它是完全可选的。

于 2013-05-16T14:14:48.860 回答