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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f