Pular para o conteúdo principal

Referência de eventos manuais

Emita e escute eventos do Support a partir do seu próprio código do widget.

Venha a esta página quando o seu código do widget precisar de um canal de eventos em processo.

Se você ainda está colocando o widget no ar, comece por Visão geral, Mude uma coisa só ou Páginas e layouts.

Use esta página quando

  • você quer que suas páginas personalizadas publiquem eventos para os callbacks do app
  • você quer um registro de erros próprio ligado às suas ações do widget
  • você está construindo páginas personalizadas que precisam emitir eventos do Support

O menor trecho que funciona

Coloque a função de retorno e o emissor sob o mesmo ambiente <Support.Root>.

import { Support, useSupportEventEmitter } from "@fluxolat/react";
 
function StartConversationButton() {
  const events = useSupportEventEmitter();
 
  return (
    <button
      onClick={() => events.emitConversationStart("01K0000000000000000000000")}
      type="button"
    >
      Start conversation
    </button>
  );
}
 
export function SupportWidget() {
  return (
    <Support.Root
      onConversationStart={({ conversationId }) => {
        analytics.track("support_conversation_started", { conversationId });
      }}
    >
      <StartConversationButton />
    </Support.Root>
  );
}

Conteúdo dos eventos

onConversationStart

Parâmetro

Tipo

onConversationEnd

Parâmetro

Tipo

onMessageSent

Parâmetro

Tipo

onMessageReceived

Parâmetro

Tipo

onError

Parâmetro

Tipo

Assinar a partir da sua própria interface

Use useSupportEvents() quando o ouvinte precisar ficar dentro de um componente próprio do widget.

"use client";
 
import { useSupportEvents } from "@fluxolat/react";
import { useEffect } from "react";
 
export function AnalyticsTracker() {
  const events = useSupportEvents();
 
  useEffect(() => {
    if (!events) {
      return;
    }
 
    const unsubscribe = events.subscribe("messageSent", (event) => {
      analytics.track("message_sent", event);
    });
 
    return unsubscribe;
  }, [events]);
 
  return null;
}

Emitir a partir de páginas próprias

Use useSupportEventEmitter() quando a sua própria página precisar emitir os mesmos eventos do widget que os outros ouvintes esperam. A emissão é síncrona e local ao runtime atual. O Fluxo não persiste, não repete, não deduplica nem confirma no servidor esses eventos.

"use client";
 
import { useSupportEventEmitter } from "@fluxolat/react";
 
export function CustomConversationPage({
  conversationId,
  onArchive,
}: {
  conversationId: string;
  onArchive: (conversationId: string) => Promise<void>;
}) {
  const emitter = useSupportEventEmitter();
 
  const handleArchive = async () => {
    try {
      await onArchive(conversationId);
      emitter.emitConversationEnd(conversationId);
    } catch (cause) {
      const error =
        cause instanceof Error ? cause : new Error("Could not archive conversation");
      emitter.emitError(error, "conversation_archive_failed");
    }
  };
 
  return <button onClick={() => void handleArchive()}>Archive</button>;
}

Passe a ação do seu app como onArchive. Emita só depois que essa ação atingir o estado que o seu contrato de analítica define. Os eventos de mensagem exigem o TimelineItem real; não fabrique um a partir de um ID de mensagem.

Próximo passo

Esta página foi útil?

Abra uma issue de documentação já preenchida para que a equipe possa agir.