Matchers: Potencializando as Variants
Os Matchers são blocos essenciais no deco que desempenham um papel fundamental ao potencializar as Variants. Eles permitem que você avalie condições específicas e segmente seu público com base em vários critérios. Ao aproveitar os Matchers, você pode criar experiências personalizadas e dinâmicas para seus usuários. Ao criar um novo Matcher Block, você pode chamá-lo de Segmento.
Compreendendo os Matchers
No deco, os Matchers são criados usando funções dentro do código do seu site. Eles são ferramentas poderosas que permitem que você defina condições e avalie se um usuário pertence a um determinado segmento. Os Matchers servem como base para segmentar grupos específicos de usuários e personalizar o conteúdo com base em suas características ou comportamentos.
Os Matchers padrão estão prontamente disponíveis no deco e abrangem uma variedade de condições comuns, como características do usuário, data e horário, tipo de dispositivo, localização geográfica e seleção aleatória (testes A/B). Esses Matchers predefinidos oferecem flexibilidade e permitem que você personalize as variações de conteúdo com base nessas condições.
No entanto, o poder dos Matchers vai além das opções padrão. O deco oferece a capacidade de criar Matchers personalizados para atender às necessidades específicas do seu negócio. Com Matchers personalizados, você pode estender a funcionalidade do deco para integrar fontes de dados externas, como buscar dados de um sistema Salesforce ERP, e usar esses dados para determinar o segmento ao qual um usuário pertence.
Matchers Nativos
Matcher | Casos de Uso Comuns | Sticky |
---|---|---|
Random Matcher | Testar A/B na página com 50% do tráfego | session |
Cron Matcher | Alterar uma página toda sexta-feira entre 10h e 11h | none |
Date Matcher | Criar a página da Black Friday/ Agendar banners para aparecerem em datas e horários específicos | none |
Device Matcher | Exibir uma página diferente com base no dispositivo do usuário | none |
Desenvolvendo um Novo Matcher
Em seu repositório, os Matchers estão localizados na pasta matchers
, assim
como as seções e loaders. Vamos criar um novo matcher chamado MeuMatcher.ts
para ilustrar o processo.
A assinatura do nosso matcher seguirá a seguinte estrutura:
import { MatchContext } from "deco/blocks/matcher.ts";
export interface Props {
}
/**
* @title Meu Matcher
*/
export default function MeuMatcher(
props: Props,
ctx: MatchContext,
) {
return true;
}
No exemplo acima, a função MeuMatcher
aceita props
como entrada, permitindo
que você passe quaisquer dados necessários para o matcher. Além disso, ela
recebe um objeto ctx
do tipo MatchContext
, que contém as informações da
solicitação. Você tem a flexibilidade de realizar as operações desejadas dentro
da função do matcher e retornar um valor booleano com base na avaliação.
Vamos dar uma olhada no exemplo MatchDate
da biblioteca do deco:
/**
* @title Por início
*/
export interface Props {
/**
* @format date-time
*/
start?: string;
/**
* @format date-time
*/
end?: string;
}
/**
* @title Matcher de Data
*/
const MatchDate = (props: Props) => {
const now = new Date();
const start = props.start ? now > new Date(props.start) : true;
const end = props.end ? now < new Date(props.end) : true;
return start && end;
};
export default MatchDate;
Neste exemplo, a função MatchDate
atua como um Matcher. Ela aceita props
como entrada, que inclui as propriedades start
e end
. A função avalia se a
data atual está dentro do intervalo de datas especificado. Se nenhum valor de
start
ou end
for fornecido, ele será considerado true
. A função
MatchDate
retorna um valor booleano com base na avaliação.
Os
Matchers também podem ter um comportamento "sticky", o que é particularmente
útil para cenários de testes A/B. Para tornar um Matcher "sticky" na sessão do
usuário, você pode exportar uma constante chamada sticky
com o valor
"session"
, conforme mostrado abaixo:
export const sticky = "session";
Aqui está um exemplo de implementação do MatchRandom
usando a funcionalidade
de sessão "sticky":
/**
* @title Teste A/B {{{percentage traffic}}}
*/
export interface Props {
traffic: number;
}
// Uma vez selecionado, a sessão reutilizará o mesmo valor
export const sticky = "session";
/**
* @title Matcher Aleatório
*/
const MatchRandom = ({ traffic }: Props) => {
return Math.random() < traffic;
};
export default MatchRandom;
No exemplo MatchRandom
, a função matcher MatchRandom
aceita traffic
como
prop, representando a porcentagem de tráfego que deve corresponder à condição.
Ao gerar um número aleatório entre 0 e 1, a função determina se o valor gerado é
menor que a porcentagem traffic
especificada. O Matcher retorna true
ou
false
com base nessa avaliação.
Os Matchers oferecem grande flexibilidade para personalizar e estender a funcionalidade do deco para atender às suas necessidades específicas. Com a capacidade de criar Matchers personalizados, você pode integrar fontes de dados externas, realizar cálculos complexos e implementar lógicas intrincadas para determinar a segmentação do usuário e fornecer experiências personalizadas.
Aproveitando o Poder dos Matchers nas Variants
Os Matchers são a base das Variants no deco. Ao combinar Matchers com diferentes condições, você pode criar variações de conteúdo direcionadas para segmentos de usuários específicos. As Variants permitem que você modifique e personalize o conteúdo dinamicamente com base na avaliação dos Matchers.
Ao configurar as Variants, você pode selecionar o Matcher apropriado para cada segmento e definir as condições que determinam se um usuário pertence a esse segmento. Ao utilizar Matchers nas Variants, você pode ajustar a experiência do usuário, otimizar a entrega de conteúdo e fornecer interações personalizadas.