Saltar al contenido principal

Referencia de eventos manuales

Emite y escucha eventos de Support desde tu propio código del widget.

Ven a esta página cuando tu código del widget necesite un canal de eventos en proceso.

Si todavía estás poniendo el widget en marcha, empieza por Visión general, Cambia una sola cosa o Páginas y layouts.

Usa esta página cuando

  • quieres que tus páginas personalizadas publiquen eventos hacia los callbacks de la aplicación
  • quieres un registro de errores propio ligado a tus acciones del widget
  • estás construyendo páginas personalizadas que necesitan emitir eventos de Support

El fragmento más pequeño que funciona

Pon la función de retorno y el emisor bajo el mismo entorno <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>
  );
}

Contenido de los eventos

onConversationStart

Parámetro

Tipo

onConversationEnd

Parámetro

Tipo

onMessageSent

Parámetro

Tipo

onMessageReceived

Parámetro

Tipo

onError

Parámetro

Tipo

Suscribirse desde tu propia interfaz

Usa useSupportEvents() cuando el oyente deba vivir dentro de un componente propio del 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 desde páginas propias

Usa useSupportEventEmitter() cuando tu propia página necesite emitir los mismos eventos del widget que esperan los demás oyentes. La emisión es síncrona y local al runtime actual. Fluxo no persiste, no reintenta, no deduplica ni confirma en el servidor estos 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>;
}

Pasa la acción de tu aplicación como onArchive. Emite solo cuando esa acción alcance el estado que define tu contrato de analítica. Los eventos de mensaje necesitan el TimelineItem real; no lo fabriques a partir de un ID de mensaje.

Siguiente paso

¿Te resultó útil esta página?

Abre una incidencia de documentación ya rellenada para que el equipo pueda actuar.