La chiamata di interazione restituisce 0 proposte quando maxCount è impostato su 0008
Questo articolo risolve il problema in cui una chiamata di interazione restituisce 0 proposte quando l'attributo maxCount è impostato su 0008 o più, modificare la libreria Interaction.js
.
Descrizione description
Ambiente
Adobe Campaign Classic
Problema/Sintomi
La chiamata di interazione restituisce proposte 0 quando l'attributo maxCount
è impostato su 0008 o più di quello nel payload SOAP.
Nel payload seguente, il tag <urn:maxCount>00008</urn:maxCount>
assume un valore numerico.
Se utilizzi un 0 finale, funziona normalmente fino a 0007 (ovvero 0000,0001,0002,…0007 funziona normalmente).
Se tuttavia si utilizza 0008 e versioni successive, verranno restituite 0 proposte.
Payload della chiamata di interazione:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:nms:interaction">
<soapenv:Header/>
<soapenv:Body>
<urn:Propose>
<urn:sessiontoken/>
<!--Recipient Id
<urn:targetId>random</urn:targetId>-->
<!-Account Id->
<urn:targetId>random</urn:targetId>
<!--Contact Id
<urn:targetId>random</urn:targetId>-->
<urn:maxCount>00008</urn:maxCount>
<urn:uuid/>
<urn:nlid/>
<urn:noProp/>
<urn:categories></urn:categories>
<urn:themes/>
<urn:context>
<!-You may enter ANY elements at this point->
<context>
<interaction onCallOfferFlg="Y" orgName="to be filled"/>
</context>
</urn:context>
</urn:Propose>
</soapenv:Body>
</soapenv:Envelope>
Endpoint:
https://<Server URL>/interaction/liveRcp/<offer>
Risoluzione resolution
Modifica la libreria Interaction.js
e utilizza:
var iAskedPropositionCount = parseInt(soapMethod.::maxCount.toString(),10);*
in modo che funzioni per tutti i numeri.
Causa
Durante il controllo della libreria Interaction.js
, viene utilizzata la funzione parseInt()
per analizzare il valore maxCount
in Integer.
Per impostazione predefinita, questa funzione parseInt()
restituisce un valore decimale.
var iAskedPropositionCount = parseInt(soapMethod.::maxCount.toString());*
Questa funzione JS eredita una proprietà da C e C++ che se si passa un valore in parseInt()
che inizia con 0, verrà utilizzato base-8 per restituire il valore.
Poiché base-8 non accetta numeri maggiori di 7, quando si passa 0008 o più, viene convertito in 0 o NaN e non viene restituita alcuna proposta.
Se in maxCount
, si passa 8 invece di 0008, si ottiene una proposta nella risposta alla chiamata SOAP.