Módulos de extensión de Edge en contexto

NOTE
Adobe Experience Platform Launch se ha convertido en un conjunto de tecnologías de recopilación de datos en Adobe Experience Platform. Como resultado, se han implementado varios cambios terminológicos en la documentación del producto. Consulte el siguiente documento para obtener una referencia consolidada de los cambios terminológicos.

Todos los módulos de biblioteca de las extensiones de Edge reciben un objeto context cuando se ejecutan. Este documento describe las propiedades que proporciona el objeto context y la función que desempeñan en los módulos de biblioteca.

Contexto de solicitud de Adobe (arc)

La propiedad arc es un objeto que proporciona información sobre el evento que activa la regla. Las secciones siguientes describen las distintas subpropiedades que contiene este objeto.

event

El objeto event representa el evento que activó la regla y contiene los siguientes valores:

logger.log(context.arc.event);
Propiedad
Descripción
xdm
El objeto XDM del evento.
data
La capa de datos personalizada.

request

No debe confundirse con una solicitud del dispositivo cliente, request es un objeto ligeramente modificado que procede de Adobe Experience Platform Edge Network.

logger.log(context.arc.request)

El objeto request tiene dos propiedades de nivel superior: body y head. La propiedad body contiene información del modelo de datos de experiencia (XDM) y se puede inspeccionar en Adobe Experience Platform Debugger cuando se navega a Launch y se selecciona la pestaña Rastro de Edge.

ruleStash rulestash

ruleStash es un objeto que recopilará todos los resultados de los módulos de acción.

logger.log(context.arc.ruleStash);

Cada extensión tiene su propia área de nombres. Por ejemplo: si la extensión tiene el nombre send-beacon, todos los resultados de las acciones send-beacon se almacenarán en el área de nombres ruleStash['send-beacon'].

El área de nombres es única para cada extensión y tiene un valor de undefined al principio.

El área de nombres se sobrescribe con el resultado que devuelve cada acción. Por ejemplo, considere una extensión transform que contenga dos acciones: generate-fullname y generate-fulladdress. Estas dos acciones se añaden a continuación a una regla.

Si el resultado de la acción generate-fullname es Firstname Lastname, la cadena de reglas aparecerá como se muestra a continuación una vez completada la acción:

{
  transform: 'Firstname Lastname'
}

Si el resultado de la acción generate-address es 3900 Adobe Way, la cadena de reglas se mostrará como se indica a continuación una vez completada la acción:

{
  transform: '3900 Adobe Way'
}

Observe que el "Nombre y apellido" ya no existen dentro de la pila de reglas, porque la acción generate-address sobrescribió estos datos con un nuevo valor.

Si desea que ruleStash almacene los resultados de ambas acciones dentro del área de nombres transform, puede escribir un módulo de acción similar al ejemplo siguiente:

module.exports = (context) => {
  let transformRuleStash = context.arc.ruleStash.transform;

  if (!transformRuleStash) {
    transformRuleStash = {};
  }

  transformRuleStash.fullName = 'Firstname Lastname';

  return transformRuleStash;
}

La primera vez que se ejecuta esta acción, ruleStash comienza como undefined y, por lo tanto, se inicializa como objeto vacío. La próxima vez que se ejecute la acción, recibirá el valor ruleStash que se devolvió con la llamada anterior a la acción. El uso de un objeto como ruleStash permite agregar nuevos datos sin perder los datos que previamente definieron otras acciones de nuestra extensión.

NOTE
Debe tener cuidado de devolver siempre la cadena de regla de extensión completa al utilizar esta estrategia. Si, en su lugar, solo devolviese un valor, se sobrescribirían las demás propiedades que haya establecido.

Utilidades

La propiedad utils representa un objeto que proporciona utilidades específicas del tiempo de ejecución de la etiqueta.

logger

La utilidad logger permite registrar los mensajes que se mostrarán durante las sesiones de depuración al utilizar Adobe Experience Platform Debugger.

context.utils.logger.error('Error!');

El registrador tiene los métodos siguientes, donde message es el mensaje que desea registrar:

Método
Descripción
log(message)
Registra un mensaje en la consola.
info(message)
Registra un mensaje informativo en la consola.
warn(message)
Registra un mensaje de advertencia en la consola.
error(message)
Registra un mensaje de error en la consola.
debug(message)
Registra un mensaje de depuración en la consola. Esto solo está visible cuando el registro verbose está habilitado en la consola del explorador.

fetch

Esta utilidad implementa la API de búsqueda. Puede utilizar la función para realizar solicitudes a extremos de terceros.

context.utils.fetch('http://example.com/movies.json')
  .then(response => response.json())

getBuildInfo

Esta utilidad devuelve un objeto que contiene información sobre la compilación de la biblioteca de tiempo de ejecución de la etiqueta actual.

logger.log(context.utils.getBuildInfo().turbineBuildDate);

El objeto contiene los valores siguientes:

Propiedad
Descripción
turbineVersion
La versión de Turbine utilizada dentro de la biblioteca actual.
turbineBuildDate
La fecha ISO 8601 en que se creó la versión de Turbine utilizada dentro del contenedor.
buildDate
La fecha ISO 8601 en que se creó la biblioteca actual.
environment
El entorno para el que se creó esta biblioteca. Entre los posibles valores se incluyen development, staging y production.

A continuación se muestra un objeto getBuildInfo de ejemplo para demostrar los valores que arroja:

{
  turbineVersion: "1.0.0",
  turbineBuildDate: "2016-07-01T18:10:34Z",
  buildDate: "2016-03-30T16:27:10Z",
  environment: "development"
}

getExtensionSettings

Esta utilidad arroja el objeto settings que se guardó por última vez desde la vista de configuración de la extensión.

logger.log(context.utils.getExtensionSettings());

getSettings

Esta utilidad arroja el objeto settings que se guardó por última vez desde la vista del módulo de biblioteca correspondiente.

logger.log(context.utils.getSettings());

getRule

Esta utilidad arroja un objeto que contiene información sobre la regla que activa el módulo.

logger.log(context.utils.getRule());

El objeto contendrá los valores siguientes:

Propiedad
Descripción
id
ID de la regla.
name
Nombre de la regla.
recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743