Eventos
El SDK emite eventos durante su ciclo de vida. Suscribete con mb.on(event, handler) para reaccionar (analytics propios, debugging, telemetria interna).
API
ts
type MibizumEvent =
| 'init'
| 'search:start'
| 'search:success'
| 'search:error'
| 'click'
| 'conversion'
| 'session:created'
| 'session:expired';
function on(event: MibizumEvent, handler: Function): () => void;
// Devuelve un unsubscribe.Ejemplos
Log de busquedas exitosas
ts
const off = mb.on('search:success', (e) => {
console.log('search', e.query, e.total, e.msTaken);
});
// Despues, para desuscribir:
off();Forward a tu analytics
ts
mb.on('search:success', (e) => {
mixpanel.track('Mibizum Search', {
query: e.query,
results: e.total,
latency_ms: e.msTaken,
session: mb.getSessionId(),
});
});
mb.on('click', (e) => {
mixpanel.track('Mibizum Click', { itemId: e.itemId, position: e.position });
});Detectar abandono de sesion
ts
mb.on('session:expired', () => {
// El TTL de 24h ha pasado; el SDK creara un sessionId nuevo en la proxima llamada.
console.log('session expired');
});Payloads
Cada evento lleva un payload tipado:
| Evento | Payload |
|---|---|
init | { tenant, sessionId } |
search:start | { query, options } |
search:success | { query, total, msTaken, queryNorm } |
search:error | { query, error: MibizumError } |
click | { itemId, query, position } |
conversion | { itemId, orderId, revenue, currency } |
session:created | { sessionId, createdAt } |
session:expired | { sessionId, expiredAt } |
Cuando NO usar eventos
- Para mostrar resultados: usa el
Promiseque devuelvemb.search(). - Para navegacion: el SDK no hace navegacion, eso es tu codigo.
- Para modificar el comportamiento del SDK: los eventos son solo-lectura. Si necesitas otra logica, configura
Mibizum.init()o llama al API REST directamente.