SDL XPM y Smart Target: simulación de footprints

SDL Smart Target permite ofrecer al visitante contenido personalizado según los datos que conocemos de él. Pueden ser datos genéricos, como la ubicación desde la que accede a internet, datos personales, si se trata de un usuario logado, o información que podemos haber rastreado, como las páginas que ha visitado. De esta manera se ofrece al usuario una experiencia personalizada, adaptada a sus gustos y necesidades particulares.
Esta personalización se materializa en forma de promociones, cuyas condiciones y contenidos son generados directamente por los equipos de marketing, sin necesidad de desarrollo.
En combinación con SDL Tridion XPM, la edición y configuración de estas promociones se convierte en una experiencia intuitiva para los creadores de promociones.

Sin embargo, para que todo funcione correctamente, es necesario realizar un desarrollo y configuración que proporcione a estos usuarios las herramientas que necesitan para manejar las promociones.

Crear Claims

Los claims gestionan fragmentos de información sobre el usuario. Un claim puede almacenar la ciudad desde la que está accediendo un usuario, su edad, o su equipo de fútbol favorito.

Crear Triggers

Los triggers son las condiciones que se le ponen a una promoción Smart Target para que se muestre. Tienen que estar asociados a un claim.

Incluir Regiones en páginas

Es necesario incluir las regiones en las páginas de SDL Tridion para mostrar el contenido de las promociones

Crear Promociones

Las promociones definen la personalización de las páginas: cuándo y dónde se muestran y cuál es su contenido

Crear Footprints

Los footprints permiten simular las características de un visitante desde XPM para probar las promociones

Crear claims

Los claims son ítems de Ambient Data Framework que se usan para almacenar información sobre el usuario.
En nuestro ejemplo, creamos un claim para almacenar el equipo de fútbol favorito del usuario. Él mismo nos lo habrá dicho en una encuesta o similar; lo que hace este claim processor es recoger el dato del querystring para almacenarlo en el claim.
public class TeamClaims
{
  public static final URI TEAM_VALUE = URI.create("taf:claim:team:value");
}


public void onRequestStart(ClaimStore claimStore)
    throws AmbientDataException
  {
    this.LOG.debug("TeamClaimProcessor");
    try
    {
      @SuppressWarnings("unchecked")
      Map<String, String[]> paramValues = (Map)claimStore.get(WebClaims.REQUEST_PARAMETERS, Map.class);
      String equipo = "";
      if (paramValues.containsKey("equipo")) {
        equipo = ((String[])paramValues.get("equipo"))[0];
        this.LOG.debug("TeamClaimProcessor : Retrieved equipo: " + equipo);
        claimStore.put(TeamClaims.TEAM_VALUE, equipo);
      }
    }
      catch (Exception e)
      {
        this.LOG.error(e.getMessage(), e);
      }
  }
Se pueden agrupar varios claims en un cartridge, que se comprime en un fichero jar.
En este caso, en nuestro cartridge únicamente tendremos nuestro claim.
Será necesario crear un fichero de configuración para nuestro cartridge.
<?xml version="1.0" encoding="UTF-8"?>
<CartridgeDefinition Version="6.1" Uri="taf:cartridge:team" Description="Team cartridge."  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schemas/cd_ambient_cartridge_conf.xsd">
    <ClaimDefinitions>
        <ClaimDefinition Uri="taf:claim:team:value" Scope="SESSION" Description="Equipo elegido por el usuario" />
    </ClaimDefinitions>
    <ClaimProcessorDefinitions>
        <ClaimProcessorDefinition Uri="taf:claimprocessor:team" ImplementationClass="com.tridion.fecron.ambientdata.TeamClaimProcessor" Description="Claim processor that gets team.">
            <RequestStart>
                <InputClaims>
                </InputClaims>
                <OutputClaims>
                    <ClaimDefinition Uri="taf:claim:team:value" />
                </OutputClaims>
            </RequestStart>
        </ClaimProcessorDefinition>
    </ClaimProcessorDefinitions>
</CartridgeDefinition>
En el fichero cd_ambient_conf.xml de la aplicación web hay que añadir el cartridge a la configuración del ADF para esta aplicación. Esto permitirá que el claim pueda recibir valores desde otras aplicaciones (por ejemplo, desde XPM).
<GloballyAcceptedClaims>
     <Claim Uri="taf:claim:team:value"/>
</GloballyAcceptedClaims>
Y en el fichero smarttarget_conf.xml de la aplicación web hay que añadir el prefijo para el claim:
<taf_claim_team>tm</taf_claim_team>

Crear Triggers

Los triggers o disparadores son las condiciones que se deben cumplir para que se muestre una determinada promoción Smart Target. Los triggers están asociados a claims de ADF.
Para crear un nuevo trigger, hay que modificar los ficheros de configuración de la instancia de Fredhopper y añadir un nuevo trigger al fichero trigger-types.xml, indicando el tipo de trigger y los posibles valores (si tiene).
En el parámetro url-param hay que poner el prefijo que hemos definido antes ("tm"), seguido de un guión bajo, y el nombre de nuestro claim ("value"), es decir, "tm_value"
<trigger-type basetype="text" url-param="tm_value" name="Team Value">
    <list-of-values multiselect="true">
        <value>madrid</value>
        <value>barcelona</value>
        <value>atletico</value>
    </list-of-values>
</trigger-type>
Reiniciamos la instancia del FAS o recargamos la configuración llamando a la url /fredhopper/sysadmin/reload-config.jsp?select=trigger-types
A partir de este momento el nuevo trigger aparecerá en Smart Target para configurar promociones basadas en él.

Incluir regiones en páginas

Las promociones de Smart Target se muestran en regiones específicas de la página, definidas previamente en el layout de las páginas. Por tanto, estas promociones se deben incluir en las plantillas de página.
Para incluir una región en una plantilla de página, se deben incluir los siguientes elementos:
<tcdl:region id="Inset 1" type="SmartTarget">

</tcdl:region>
<TemplateInvocation>
    <Template xlink:href="tcm:xx-xxxx-2048" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="Add SmartTarget Query" />
    <TemplateParameters>
      <Parameters xmlns="uuid:2cf486a1-3f24-444d-9a9a-87d58353e62a">
        <PageRegion>Inset 1</PageRegion>
        <AllowDuplicates>No</AllowDuplicates>
      </Parameters>
    </TemplateParameters>
  </TemplateInvocation>
  <TemplateInvocation>
    <Template xlink:href="tcm:xx-xxxx-2048" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:title="Add Promotions" />
    <TemplateParameters>
      <Parameters xmlns="uuid:bf6cbc8c-304c-4e72-a572-c1278f248968">
        <PageRegion>Inset 1</PageRegion>
        <MaxItems>1</MaxItems>
      </Parameters>
    </TemplateParameters>
  </TemplateInvocation>

Crear promociones

Mediante la interfaz de usuario que nos proporciona Smart Target definimos cada una de las partes de cada promoción (publicación, región, trigger y contenido). En el caso que nos ocupa tendríamos que crear 3 promociones, una para cada uno de los posibles valores definidos para el claim.
En el Where, definimos la publicación donde queremos que aparezca, si queremos en todas las páginas o solo en algunas, y el nombre de la región que hemos definido en las plantillas para la promoción.
En el When, utilizamos en cada promoción el trigger Team Value, ya disponible, y definimos el valor que tiene que tener el claim en esta promoción.
En el What, seleccionamos el contenido que queremos mostrar y la plantilla de componente dinámica asociada al contenido que queremos mostrar. Una vez creadas y habilitadas las promociones, el sitio web está preparado para mostrarlas. Es decir, con estos pasos ya tendríamos nuestro sitio web configurado para aprovechar las ventajas de utilizar Smart Target.

Crear footprints

¿Por qué necesitamos los footprints si ya podemos usar Smart Target? Los footprint permiten simular las condiciones del usuario que entra en la web, para que el usuario de negocio que está definiendo las promociones compruebe que se muestran los contenidos correctos a las personas adecuadas.
Esto se realiza desde la consola de XPM. Para añadir los triggers a la sección de Footprints de XPM, se deben editar los ficheros de configuración del módulo de XPM y además permitir en el website que se puedan sobreescribir los claims desde aplicaciones externas. A continuación se muestran los pasos a seguir para realizar esta configuración.

Editar fichero Editors

Se debe editar el fichero C:\Tridion\web\WebUI\Editors\SiteEdit\Configuration\SiteEditEditor.xml Y añadir los footprints correspondientes. Los IDs tienen que coincidir con los IDs del siguiente fichero. El control puede ser de tipo:
  • FootprintText: campo de texto para escribir
  • FootprintRadio: campo de tipo Radio Button
  • FootprintDropdown: campo de tipo Desplegable (Combo)
El icono se puede modificar creando iconos de diferentes tamaños; en este caso hemos reutilizado iconos ya existentes.
<footprint ID="equipo" controlID="FootprintRadio" Icon="footprint.searchkeyword" />




Editar fichero Models

Se debe editar el fichero C:\Tridion\web\WebUI\Models\SiteEdit\Configuration\SiteEditModel.xml Y añadir los footprints correspondientes. El ID tiene que coincidir con el que hemos usado en Editors. En este fichero se detalla el claim al que se hace referencia y la lista de posibles valores.
<footprint ID="equipo" claimUri="taf:claim:team:value">
    <title>
        <value>Equipo de futbol</value>
    </title>
    <description>
        <value>Equipo elegido por el usuario</value>
    </description>
    <settings>
        <isMandatory>false</isMandatory>
    </settings>
    <values>
        <value text="" default="true">
            <label>(ninguno)</label>
        </value>
        <value text="madrid">
            <label>madrid</label>
        </value>
        <value text="barcelona">
            <label>barcelona</label>
        </value>
        <value text="atletico">
            <label>atletico</label>
        </value>
    </values>
</footprint>

Permitir la escritura externa

Para permitir que XPM pueda sobreescribir los claims en la aplicación web, hay que editar el fichero cd_ambient_conf.xml del sitio web. En la sección Security hay que añadir la sección Whitelist.
Esta sección de Whitelist indica la lista de IPs desde las que se permite la sobreescritura. En este caso se ha incluido la lista completa de IPs, por lo que se podría editar desde todas partes. Si se conoce el rango de IPs que tienen los editores de contenido o las personas que van a usar esta funcionalidad, se puede restringir este valor.
En este momento se debe comprobar que nuestro claim está incluido en la sección GloballyAcceptedClaims del mismo fichero; si no está, no se podrá sobreescribir el valor del claim desde XPM.
<WhiteList>
    <IPAddresses>               
                <Ip>0.0.0.0-255.255.255.255</Ip>
                <Ip>127.0.0.1</Ip>                
    </IPAddresses>          
</WhiteList>

Simulación de condiciones

Una vez hemos seguido todos los pasos, ya podemos utilizar los footprints para simular cómo verían la página los diferentes usuarios y así probar que nuestras promociones están bien configuradas.
En la página que queremos probar, pulsamos en el botón de SDL Tridion para entrar en el entorno de XPM, y vamos a la pestaña Preview, que es la que tiene los Footprint.
Al pulsar el botón Edit Footprint Set podemos cambiar los claims que hemos definido anteriormente.
Simularemos los diferentes valores que hemos configurado para el equipo del usuario. Al pulsar Aplicar en cada combinación podemos ver el contenido personalizado para cada set de condiciones, tal y como lo vería un usuario con esas condiciones.