Saltar al contenido principal
Esta guía cubre cada cambio importante y deprecación entre SofIA SDK v0.0.x y v1.0.0, con ejemplos de código antes/después y un checklist para completar la migración. Comienza actualizando a la última versión:
npm install @omniloy/sofia-sdk@latest

Resumen de migración

ÁreaQué cambióImpacto
Prop de templatetoolsargstemplateAlto — debe renombrarse
Modo solo-chatisonlychat eliminadoMedio — ahora es auto-detectado
Control de generacióndisablegenerate eliminadoMedio — omitir template/templateid en su lugar
Control de accionesdisableactions eliminadoBajo — no montar el componente
Personalización UIsofiatitle eliminadoBajo — el título siempre es “SofIA”
Estado de cargaisscreenloading eliminadoBajo — no disponible en Chat UI
Transcriptortranscriptorselectvalues eliminadoBajo — sin efecto
Renderizado de reporterenderReportContent eliminadoBajo — no disponible en Chat UI
Callback de llenadohandleFill eliminadoBajo — no disponible en Chat UI
Toasttoast eliminadoBajo — sin efecto

Migración paso a paso

1. Renombrar toolsargs a template

La prop toolsargs ha sido renombrada a template. El contenido del JSON Schema es idéntico — solo cambia el nombre del atributo. Antes (v0.x):
<sofia-sdk
  baseurl="https://api.example.com"
  wssurl="wss://ws.example.com"
  apikey="tu-key"
  userid="doctor-1"
  patientid="paciente-1"
  toolsargs='{"$schema":"http://json-schema.org/draft-07/schema#","title":"notas","type":"object","properties":{"diagnostico":{"type":"string"}}}'
></sofia-sdk>
Después (v1.0):
<sofia-sdk
  baseurl="https://api.example.com"
  wssurl="wss://ws.example.com"
  apikey="tu-key"
  userid="doctor-1"
  patientid="paciente-1"
  template='{"$schema":"http://json-schema.org/draft-07/schema#","title":"notas","type":"object","properties":{"diagnostico":{"type":"string"}}}'
  templateid="tu-template-id"
></sofia-sdk>
En v1.0, templateid también es requerido para la generación de reportes. Sin ambos template y templateid, el SDK opera en modo solo-chat.

2. Eliminar isonlychat

El modo solo-chat ahora es automático. Si omites tanto template como templateid, el SDK opera en modo solo-chat sin mostrar el botón de generar. Antes (v0.x):
<sofia-sdk
  isonlychat="true"
  baseurl="https://..."
  <!-- otras props -->
></sofia-sdk>
Después (v1.0):
<!-- Simplemente omitir template y templateid -->
<sofia-sdk
  baseurl="https://..."
  <!-- otras props -->
></sofia-sdk>

3. Eliminar disablegenerate

Para ocultar el botón de generar, omite template y templateid en lugar de configurar un flag. Antes (v0.x):
<sofia-sdk
  disablegenerate="true"
  toolsargs='...'
  <!-- otras props -->
></sofia-sdk>
Después (v1.0):
<!-- Omitir template y templateid para deshabilitar la generación -->
<sofia-sdk
  baseurl="https://..."
  <!-- otras props, sin template/templateid -->
></sofia-sdk>

4. Eliminar disableactions

Si el componente no debe renderizarse, no lo montes en absoluto en lugar de pasar un flag de deshabilitación. Antes (v0.x):
<sofia-sdk disableactions="true" ...></sofia-sdk>
Después (v1.0):
// Renderizar condicionalmente según la lógica de tu aplicación
if (deberíaMostrarSofia) {
  document.getElementById('container').innerHTML = '<sofia-sdk ...></sofia-sdk>';
}

5. Eliminar props deprecadas restantes

Elimina estas props por completo — no tienen efecto en v1.0:
PropRazón
sofiatitleEl título siempre es “SofIA”
isscreenloadingNo disponible en UI basada en Chat
transcriptorselectvaluesSin efecto
toastSin efecto
renderReportContentRenderizado personalizado no disponible en Chat UI
handleFillNo disponible en Chat UI

6. Actualizar asignaciones de callbacks (específico por framework)

Los callbacks handleReport, setIsOpen y setGetLastReport permanecen sin cambios. Sin embargo, verifica que tus bindings son correctos: Vanilla JS:
document.addEventListener('DOMContentLoaded', () => {
  const sofia = document.querySelector('sofia-sdk');
  sofia.handleReport = (report) => {
    console.log('Reporte:', report);
  };
});
React:
useEffect(() => {
  if (sofiaRef.current) {
    sofiaRef.current.handleReport = handleReport;
    sofiaRef.current.setIsOpen = setIsOpen;
  }
}, [handleReport, setIsOpen]);
Angular:
ngAfterViewInit() {
  this.sofia.nativeElement.handleReport = this.handleReport.bind(this);
  this.sofia.nativeElement.setIsOpen = this.setIsOpen.bind(this);
}

Checklist de migración

Usa este checklist para verificar que tu migración está completa:
  • Renombrados todos los atributos toolsargs a template
  • Añadido templateid donde se use template
  • Eliminado isonlychat — modo solo-chat es automático al omitir template/templateid
  • Eliminado disablegenerate — omitir template/templateid en su lugar
  • Eliminado disableactions — montar/desmontar condicionalmente el componente
  • Eliminados sofiatitle, isscreenloading, transcriptorselectvalues, toast
  • Eliminados los callbacks renderReportContent y handleFill
  • Verificado que el callback handleReport sigue funcionando correctamente
  • Probado con debug="true" para confirmar que no hay warnings de deprecación en consola
  • Validado en todos los navegadores objetivo
Habilita debug="true" durante la migración. El SDK registra warnings de deprecación para cualquier prop de v0.x que siga en uso, con el prefijo [Sofia SDK] DEPRECATED:.

Resumen de cambios importantes

Props eliminadas en v1.0

Estas props fueron deprecadas en v0.0.10 y se eliminan en v1.0. Si aún se pasan, no tienen efecto funcional pero emiten warnings de deprecación cuando debug="true" está habilitado.

Nuevos requisitos en v1.0

  • templateid ahora es requerido junto con template para la generación de reportes
  • El botón de generar solo aparece cuando ambos template y templateid están configurados
  • template debe ser un JSON Schema Draft-07 válido con $schema, type y properties

Sin cambios

Estas props funcionan exactamente igual en v1.0:
  • baseurl, wssurl, apikey — props de conexión requeridas
  • userid, patientid — identificadores de sesión requeridos
  • patientdata — contexto de paciente opcional
  • language — localización ("es" o "en")
  • debug — habilita logging detallado
  • isopen — controla la visibilidad del widget
  • handleReport — callback de entrega de reportes
  • setIsOpen — callback de estado de visibilidad
  • setGetLastReport — recuperación del último reporte