Target Layer

Neste guia, veremos como registrar uma Target Layer (camada de destino) para integrar um destino como Facebook, Google Analytics, UXCam ou sua própria API de destino ao AgnosticData. Com a Target Layer, seu destino pode receber um evento em tempo real quando acontece no AgnosticData.

Casos de uso

  • Você precisa sincronizar de forma leve dados ocorridos em um sistema para outro
  • Você deseja receber eventos de múltiplos locais para criar um dashboard
  • Você deseja um espelho de eventos ocorridos como criação de usuário, login, número de assinaturas, atendimento, agendamentos, etc

Registrando a Target Layer

Para registrar um novo alvo na Target Layer, você precisa ter uma URL de destino para o AgnosticData postar o conteúdo. É como um correio (AgnosticData), a carta (o evento) e a caixa de correio (o destino), neste caso, a URL refere-se a caixa de correio para onde o evento será depositado.

Você pode configurar um novo destino no painel AgnosticData em Target Layer ou gerando a partir do template (recomendado). Podemos dividir o registro de um alvo em 3 etapas:

  1. Obter a URL de destino
  2. Criar as regras para garantir que o conteúdo enviado esteja em conformidade com o destino
  3. Conectar ao evento personalizado

URL de destino

Geralmente, cada serviço de destino como Facebook, Google Analytics, UXcam ou sua API de destino contém uma URL com um identificador da seu acesso. Por exemplo, vejamos os padrões comuns de URL de destinos olhando para as URLs abaixo:

  • Destino Facebook: FACEBOOK_URL = https:// graph.facebook.com/v15.0/ YOUR_ACCOUNT_ID /events? access_token=ACCESS_TOKEN. Perceba que temos na própria URL, 2 atributos que irão identificar seu usuário e a chave de acesso, como YOUR_ACCOUNT_ID e ACCESS_TOKEN. Essas informações são solicitadas pelo destino para receber os eventos personalizados.

  • Destino Google Analytics: GOOGLE_ANALYTICS_URL = https:// www.google-analytics.com/mp/collect? measurement_id=MEASUREMENT_ID &api_secret=API_SECRET. Já no Google Analytics temos como atributos de identificação, o MEASUREMENT_ID e API_SECRET.

Criar as regras

Podemos enviar um evento "as-is" diretamente para o destino, mas não recomendamos essa abordagem, pois as regras de recebimento do envelope do destino podem rejeitá-los. Recomendamos criar a classe para preparar o evento especificamente para o destino.

A forma mais simples que temos é utilizar o template. Vejamos o exemplo, utilizando o modelo do Facebook. Para criá-lo é preciso entender como um evento do destino é composto ou quais campos requeridos. No exemplo a seguir, o Facebook é composto por event_name, event_time, action_source e custom_data.

Examplo Facebook


// usage this class to implement respective FacebookEvent
export class FacebookEvent {
  event_name: string;
  event_time: number;
  action_source: ActionSourceType;
  // CUSTOM DATA defined as `custom_data` must have attributes explains into Facebook Pixel
  custom_data: any;

  constructor(data: IEvent, customDataClass: any, eventName: string) {
  // cleanup() and formatter()
  ...
  }

  /**
   * `cleanup` useful for remove data
   */
  cleanup(data: IEvent): any {
    // Cleanup and rules specifics from Facebook
  }
  /**
  * `formatter` useful for composite of the expected payload
  */
  formatter(data: IEvent): any {
    // ...
  }
}

Conectar eventos personalizados ao destino

Podemos conectar o evento personalizado ao destino implementando e estendendo a classe das regras. Assim garantimos que apenas os campos e dados corretos são enviados para o destino sem expor os dados dos nossos usuários.

Connecting Custom Data with Target

class FacebookCustomData {
  content_name: string // Nome da página ou do produto.
  currency: Nullable<string> //A moeda do value especificado.
  status: number // Usado com o evento CompleteRegistration para mostrar o status do registro
  value: Nullable<number> // O valor de um usuário executando esse evento para o negócio.

  constructor(item: EventData) {
    this.content_name = item.content_name
    this.currency = item.currency
    this.status = item.status
    this.value = item.value
  }
}

/**
 * `FacebookEventExtended` estendo da classe padrão de regras
 * FacebookEvent. Somente 3 informações são necessárias
 * @param {Class} customDataClass linkage class
 * @param {String} eventName nome do evento no destino
 * @param {Object} data payload do evento
 */
export class FacebookEventExtended extends FacebookEvent {
  constructor(data: IEvent) {
    const customDataClass = FacebookCustomData
    const eventName = FACEBOOK_EVENT_NAME
    super(data, customDataClass, eventName) // change this today estamos aqui
  }
}

Agora, sempre que um evento de interesse acontecer, um POST é enviado pelo AgnosticData ao destino.