Запрос SOAP (AXL) Cisco Unified Messenger, как вернуть все значения?
Используя SOAP против веб-службы AXL CUCM, существует несколько запросов.
getLine getDeviceProfile getUser
и так далее.
WDSL показывает:
<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>
Теперь <returnedTags>
поддерево контролирует, что возвращается. Я делал несколько звонков раньше, и я возвращал все значения (это то, что я хочу), а затем я пошел и сделал некоторые изменения (не уверен, что), и внезапно я начал получать только то, что я просил.
Ключевым моментом для меня является то, как заставить AXL возвращать все данные, которые имеются у объекта, на который есть ссылка, вместо того, чтобы явно перечислять их все в запросе?
Т.е. я хотел бы запрос так же просто, как:
<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>
И вернуть все данные, заполненные на линии. Но если бы я просто включил пустой <returnedTags/>
тег я ничего не получаю. Если я перечислю пустые узлы, чтобы показать нужные мне атрибуты, я получу те явные. Итак, что мне отправить, чтобы получить все атрибуты?
1 ответ
Хотя этому вопросу больше пары месяцев, я все равно его опишу. Недавно я был включен в проект 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.