Documentation
Feedback
Guides
Learning Center

Learning Center
Learning Center
Utilizando eventos como gatilhos
View in English
This content was migrated from the VTEX Learning Center and is no longer being actively maintained. For the most accurate and up-to-date information, please check the official documentation.

Introdução

Com o cliente de analytics implementado, nós queremos utilizar os eventos como gatilhos para os requests. Isso significa que, para cada evento escutado, queremos fazer um request para a app de analytics, de forma que, a cada X segundos, tenhamos novos dados em Live Products.

Eventos

No VTEX IO, eventos são usualmente utilizados como gatilhos para outras ações, como enviar emails para o cliente final. Para implementar isto, é necessário configurar nossa app do cliente e o handler de eventos.

Usando eventos como gatilhos para fazer um request

  1. Com o cliente de analytics implementado, precisamos apenas utilizá-lo no handler de eventos. Primeiro, no arquivo node/event/liveUsersUpdate.ts, importe o cliente que implementamos no passo anterior:


    _10
    import { Clients } from '../clients/index'

  2. Agora, precisamos utilizar o EventContext que foi configurado previamente. Importe-o atualizando o método. É possível fazer como abaixo:


    _10
    //node/event/liveUsersUpdate.ts
    _10
    import { Clients } from './../clients/index'
    _10
    +import { EventContext } from '@vtex/api'
    _10
    _10
    +export async function updateLiveUsers(ctx: EventContext<Clients>) {
    _10
    ...
    _10
    }

    Nota: você também pode declarar globalmente seu contexto de evento, através do arquivo /node/index.ts. Se você fizer desta forma, não é necessário importá-lo em cada arquivo que você precise utilizá-lo.

  3. Agora, para utilizar o cliente de analytics, faça o seguinte:


    _10
    //node/event/liveUsersUpdate.ts
    _10
    export async function updateLiveUsers(ctx: EventContext<Clients>) {
    _10
    + const liveUsersProducts = await ctx.clients.analytics.getLiveUsers()
    _10
    + console.log('LIVE USERS: ', liveUsersProducts)
    _10
    + return true
    _10
    }

  4. Finalmente, rode o comando vtex link e, para cada evento disparado, você deve ver os dados pegos do analytics. O resultado é similar ao da imagem abaixo:

    {"base64":"  ","img":{"width":1306,"height":506,"type":"png","mime":"image/png","wUnits":"px","hUnits":"px","length":102072,"url":"https://user-images.githubusercontent.com/43679629/85150833-69ffda80-b229-11ea-9260-b9255adf7d9c.png"}}


Answer sheet

See answer sheet for liveUsersUpdate.ts
liveUsersUpdate.ts

_10
// node/event/liveUsersUpdate.ts
_10
import { Clients } from '../clients/index'
_10
import { EventContext } from '@vtex/api'
_10
_10
export async function updateLiveUsers(ctx: EventContext<Clients>) {
_10
const liveUsersProducts = await ctx.clients.analytics.getLiveUsers()
_10
console.log('LIVE USERS: ', liveUsersProducts)
_10
return true
_10
}

On this page