05-09-2018 10:31 AM
Hi,
Looks to be a bug in XBusyLampField in 11.5 AXL.
The schema is:
<xsd:complexType name="XBusyLampField">
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="1" minOccurs="1" name="blfDest" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Either blfDest or the combination of blfDirn and routePartition is to be mentioned in the add/update request, if both are mentioned AXL will read only the blfDest tag and ignore blfDirn and routePartition.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:choice minOccurs="1">
<xsd:sequence minOccurs="1">
<xsd:element maxOccurs="1" minOccurs="0" name="blfDirn" type="axlapi:String255">
<xsd:annotation>
<xsd:documentation>Either blfDest or the combination of blfDirn and routePartition is to be mentioned in the add/update request, if both are mentioned AXL will read only the blfDest tag and ignore blfDirn and routePartition.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="routePartition" type="xsd:string"/>
</xsd:sequence>
</xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" name="label" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="associatedBlfSdFeatures">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0" name="feature" type="axlapi:XBLFSDOption"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="1" name="index" type="axlapi:XInteger"/>
</xsd:sequence>
</xsd:complexType>
This forces blfDest to be included in a request, such as for addPhone.
It also does not match RBusyLampField:
<xsd:complexType name="RBusyLampField">
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="1" minOccurs="0" name="blfDest" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Either blfDest or the combination of blfDirn and routePartition is to be mentioned in the add/update request, if both are mentioned AXL will read only the blfDest tag and ignore blfDirn and routePartition.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:choice minOccurs="0">
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="1" minOccurs="0" name="blfDirn" type="axlapi:String255">
<xsd:annotation>
<xsd:documentation>Either blfDest or the combination of blfDirn and routePartition is to be mentioned in the add/update request, if both are mentioned AXL will read only the blfDest tag and ignore blfDirn and routePartition.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="routePartition" type="xsd:string"/>
</xsd:sequence>
</xsd:choice>
<xsd:element maxOccurs="1" minOccurs="0" name="label" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="associatedBlfSdFeatures">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element maxOccurs="unbounded" minOccurs="0" name="feature" type="axlapi:XBLFSDOption"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="index" type="axlapi:XInteger"/>
</xsd:sequence>
</xsd:complexType>
This means that I can get a response from AXL like this:
('busyLampFields',
OrderedDict([('busyLampField',
[OrderedDict([('blfDest', None),
('blfDirn', '1001'),
('routePartition', None),
('label', 'x1001'),
('associatedBlfSdFeatures', None),
('index', 1)]),
OrderedDict([('blfDest', '+3243543252'),
('blfDirn', None),
('routePartition', None),
('label', 'Mobile'),
('associatedBlfSdFeatures',
OrderedDict([('feature',
['Pickup'])])),
('index', 2)]),
OrderedDict([('blfDest', None),
('blfDirn', '1003'),
('routePartition', None),
('label', 'x1003'),
('associatedBlfSdFeatures', None),
('index', 3)]),
OrderedDict([('blfDest', None),
('blfDirn', '1004'),
('routePartition', None),
('label', 'x1004'),
('associatedBlfSdFeatures', None),
('index', 4)])])])),
However, if I used this structure to try add to a new phone, it fails using python-zeep, as several of the BLFs were configured with Directory Number/Partition, not with a static BLF destination
Workaround seem to be to manually edit the minOccurs and set it to zero. This looks to me to be a bug.
As an aside, this xsd definition does not match other common request choice options in other AXL API calls, where the typically this would be included in the choice, such as for:
<xsd:complexType name="UpdateCallParkReq">
<xsd:complexContent>
<xsd:extension base="axlapi:APIRequest">
<xsd:sequence>
<xsd:choice>
<xsd:element name="uuid" type="axlapi:XUUID"/>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="pattern" nillable="false" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0" name="routePartitionName" nillable="true" type="axlapi:XFkType"/>
</xsd:sequence>
</xsd:choice>
I expect that the definitions for both XBlf and RBlf need to be restructured.
05-09-2018 11:06 AM
The traceback is long from python-zeep, but it ends with a validation error:
File "C:\Users\jonathan.els\Envs\uctoolkit\lib\site-packages\zeep\xsd\types\complex.py", line 253, in render
element.render(parent, element_value, child_path)
File "C:\Users\jonathan.els\Envs\uctoolkit\lib\site-packages\zeep\xsd\elements\indicators.py", line 241, in render
element.render(parent, element_value, child_path)
File "C:\Users\jonathan.els\Envs\uctoolkit\lib\site-packages\zeep\xsd\elements\element.py", line 185, in render
self.validate(value, render_path)
File "C:\Users\jonathan.els\Envs\uctoolkit\lib\site-packages\zeep\xsd\elements\element.py", line 236, in validate
"Missing element %s" % (self.name), path=render_path)
zeep.exceptions.ValidationError: Missing element blfDest (addPhone.phone.busyLampFields.busyLampField.blfDest)
10-12-2021 05:44 PM
I'm also having the same issue with updating blfDirn and respective routePartition via AXL for a given device name, using the Schema files for 14x. It errors with "Missing element blfDest" when I am not actually adding a blfDest, and if I try to pass blfDest = None with my blfDirn and routePartition variables - that isn't working either, since blfDest is not being recognized by the SOAP transaction when I pass in blfDirn/routePartition in the same request. It's like a recursive loop!! However If I open AXLSoap.xsd for the given schema version and modify blfDest element in XBusyLampField and and set minOccurs = 0, it will allow me to update the blfDirn and routePartition via AXL.I don't know how to get this done otherwise, and there was very little information on this exact topic available online.
10-13-2021 12:17 PM
It looks like there is an existing defect (CSCvw30202 - XBusyLampField schema definition incorrectly defines <xsd:choice> options) addressing the core issue here. I'll followup to see what can be done to progress it...
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide