Sincronizacion Bidireccional

Como funciona la sincronizacion automatica entre Talivo y calendarios externos

sincronizacionbidireccionalwebhooksyncautomaticotiempo real

Sincronizacion Bidireccional

Entiende como funciona la sincronizacion automatica entre Talivo y tus calendarios externos.

Como funciona

Sincronizacion bidireccional

Talivo sincroniza en ambas direcciones con Google Calendar y Microsoft Outlook. Cambios en cualquier lado se reflejan en el otro.

Flujo de sincronizacion

ComponenteDescripcion
TalivoPlataforma central
Push Notifications (Webhooks)Comunicacion en tiempo real
Google CalendarProveedor externo
Microsoft OutlookProveedor externo

De Talivo hacia afuera

Crear evento en Talivo

  1. Usuario crea evento en Talivo
  2. Sistema detecta calendario sincronizado
  3. Llama API del proveedor (Google/Microsoft)
  4. Evento creado en calendario externo
  5. Se guarda referencia (googleEventId/microsoftEventId)

Modificar evento en Talivo

  1. Usuario edita evento
  2. Sistema actualiza localmente
  3. Detecta si tiene ID externo
  4. Llama API para actualizar
  5. Cambio reflejado en externo

Eliminar evento en Talivo

  1. Usuario elimina evento
  2. Sistema elimina localmente
  3. Detecta si tiene ID externo
  4. Llama API para eliminar
  5. Evento eliminado en externo

De afuera hacia Talivo

Webhooks / Push Notifications

  1. Evento modificado en Google/Outlook
  2. Proveedor envia notificacion HTTP
  3. Talivo recibe en endpoint publico
  4. Responde inmediatamente (200/202)
  5. Procesa cambio asincrono
  6. Actualiza base de datos local

Tipos de cambios detectados

TipoDescripcion
createdNuevo evento creado
updatedEvento modificado
deletedEvento eliminado

Sincronizacion incremental

Concepto

En lugar de sincronizar TODO cada vez:

  • Sistema guarda token de sincronizacion
  • Siguiente sync: "Dame cambios desde token X"
  • Proveedor retorna solo cambios nuevos
  • Mucho mas eficiente

Google: syncToken

Primera sync:

  • GET /events (sin syncToken)
  • Retorna todos los eventos
  • Guarda syncToken

Siguiente sync:

  • GET /events?syncToken=abc123
  • Retorna solo cambios desde abc123
  • Actualiza syncToken

Microsoft: deltaToken

Primera sync:

  • GET /events/delta
  • Retorna todos los eventos + deltaLink
  • Guarda deltaLink

Siguiente sync:

  • GET deltaLink
  • Retorna solo cambios
  • Nuevo deltaLink

Webhooks Google Calendar

Configuracion (Watch)

POST https://www.googleapis.com/calendar/v3/calendars/primary/events/watch

Request:
{
  "id": "uuid-unico-canal",
  "type": "web_hook",
  "address": "https://talivo.mx/api/public/webhooks/google-calendar",
  "token": "token-verificacion",
  "expiration": timestamp
}

Notificacion recibida

POST /public/webhooks/google-calendar

Headers:
- X-Goog-Channel-ID: uuid-del-canal
- X-Goog-Resource-State: exists/sync
- X-Goog-Resource-ID: id-recurso
- X-Goog-Message-Number: numero

Estados de notificacion

EstadoSignificado
syncConfirmacion de suscripcion
existsHay cambios disponibles
not_existsRecurso eliminado

Expiracion y renovacion

Watches de Google:

  • Expiran cada ~7 dias
  • Sistema detecta proximos a expirar
  • Renueva automaticamente
  • Sin intervencion del usuario

Subscripciones Microsoft

Configuracion (Subscription)

POST https://graph.microsoft.com/v1.0/subscriptions

Request:
{
  "changeType": "created,updated,deleted",
  "notificationUrl": "https://talivo.mx/api/public/webhooks/microsoft-calendar",
  "resource": "/me/events",
  "expirationDateTime": "2024-01-20T00:00:00Z",
  "clientState": "token-secreto"
}

Validacion inicial

Al crear subscription, Microsoft envia:

GET /webhooks/microsoft-calendar?validationToken=abc123

Talivo debe responder:

  • Status: 200
  • Content-Type: text/plain
  • Body: abc123 (el mismo token)

Notificacion recibida

POST /public/webhooks/microsoft-calendar

Body:
{
  "value": [
    {
      "subscriptionId": "...",
      "changeType": "updated",
      "resource": "/me/events/event-id",
      "resourceData": {...}
    }
  ]
}

Expiracion y renovacion

Subscripciones de Microsoft:

  • Expiran cada ~3 dias (4230 min max)
  • Mas frecuente que Google
  • Sistema renueva automaticamente
  • Notificaciones de ciclo de vida

Conflictos de sincronizacion

Cuando ocurren

Conflicto: Mismo evento modificado en ambos lados simultaneamente antes de sincronizar.

Estrategia de resolucion

Por defecto:

  • Ultima modificacion gana
  • Timestamp mas reciente prevalece
  • Notificacion al usuario si hay conflicto

Ejemplo

Evento: Reunion 10:00

Usuario en Talivo: Cambia a 11:00 (10:00:00 AM) Usuario en Google: Cambia a 14:00 (10:00:05 AM)

Resultado: 14:00 (Google fue despues)

Campos sincronizados

Campos que se sincronizan

CampoSync
TituloSi
DescripcionSi
Fecha/hora inicioSi
Fecha/hora finSi
UbicacionSi
ParticipantesSi
Estado (confirmado/tentativo)Si
Todo el diaSi
Link de videoSi

Campos solo locales

CampoRazon
calendarId internoID local
processTaskIdRelacion con procesos
feedback/ratingDatos de entrevista
noShowCountAuditoria

Ver estado de sincronizacion

En el calendario

Calendario: Trabajo
Sync: Google CalendarActivo
Ultima sync: Hace 2 minutos
Estado watch: Activo (expira en 6 dias)

En integraciones

PerfilIntegraciones:

Google CalendarConectado
Cuenta: maria@empresa.com
Ultima sync: Hace 2 minutos
Watch: Activo

Forzar sincronizacion

Sincronizacion manual

Si necesitas forzar sync:

  • Los cambios normalmente son en tiempo real
  • Pero si hay problemas:
    1. Desconectar proveedor
    2. Reconectar
    3. Sync completa se ejecuta

Problemas comunes

"Eventos no se sincronizan"

Causas:

  1. Webhook/subscription expirado
  2. Token de acceso invalido
  3. Error de red temporal

Solucion: Reconectar el proveedor.

"Evento duplicado"

Causa: Creado en ambos lados antes de sincronizar.

Solucion: Eliminar duplicado manualmente.

"Cambios no aparecen"

Causas:

  1. Delay en webhook (segundos)
  2. Sync token desactualizado

Solucion: Esperar unos segundos y refrescar.

Mejores practicas

Usar un solo punto de entrada

Recomendacion:

  • Crear eventos en Talivo cuando son de trabajo
  • Talivo sincroniza hacia afuera
  • Eventos personales crear en Google/Outlook
  • Se reflejan como "ocupado"

Mantener conexion activa

Para evitar problemas:

  • No revocar permisos manualmente
  • Si hay error, reconectar
  • Verificar estado periodicamente

Proximos pasos

¿No encontraste lo que buscabas?

Nuestro equipo de soporte está listo para ayudarte.

Contactar Soporte