Llamada de interacción que devuelve 0 propuestas cuando maxCount está establecido en 0008
Este artículo aborda el problema en el que una llamada de interacción devuelve 0 propuestas cuando el atributo maxCount está establecido en 0008 o más, y modifica la biblioteca Interaction.js
.
Descripción description
Entorno
Adobe Campaign Classic
Problema/Síntomas
SOAP La llamada de interacción devuelve 0 propuestas cuando el atributo maxCount
está establecido en 0008 o más que en la carga útil de la.
En la siguiente carga útil, la etiqueta <urn:maxCount>00008</urn:maxCount>
toma un valor numérico.
Si usa un 0 final, funcionará normalmente hasta el 0007 (es decir, 0000,0001,0002,…0007 funcionará normalmente).
Sin embargo, si usa 0008 y versiones posteriores, devolverá 0 propuestas.
Carga útil de llamada de interacción:
<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>
Punto final:
https://<Server URL>/interaction/liveRcp/<offer>
Resolución resolution
Modifique la biblioteca Interaction.js
y utilice:
var iAskedPropositionCount = parseInt(soapMethod.::maxCount.toString(),10);*
para que funcione para todos los números.
Causa
Al comprobar la biblioteca Interaction.js
, se usa la función parseInt()
para analizar el valor maxCount
en Integer.
Esta función parseInt()
devuelve un valor decimal de forma predeterminada.
var iAskedPropositionCount = parseInt(soapMethod.::maxCount.toString());*
Esta función JS hereda una propiedad de C y C++ que si pasa un valor en parseInt()
que empieza por 0, usa base-8 para devolver el valor.
Dado que base-8 no acepta números mayores que 7, cuando pasa 0008 o más, lo convierte en 0 o NaN, por lo que no se devuelve ninguna propuesta.
SOAP Si pasa maxCount
, pasa 8 en lugar de 0008, el resultado es una propuesta en la respuesta a la llamada de la.