Este artículo es una explicación completa para soporte, implementación y clientes que quieren conectar InBody con FITsociety mediante LookinBody Web/LB Web. Publica este artículo únicamente después de que la integración de InBody sea visible para el grupo de clientes correspondiente.
Resumen
Con la integración de InBody, FITsociety puede obtener las mediciones corporales de un dispositivo InBody y guardarlas en el miembro correspondiente. La conexión no funciona mediante OAuth. Por tanto, no hay un botón de "iniciar sesión con InBody" para que el cliente dé su autorización. Para cada empresa se conecta una cuenta de InBody/LB Web con:
un nombre de cuenta/ID de cuenta de InBody;
una clave API de InBody;
una URL fija de webhook de FITsociety;
un secreto de webhook;
una lista de IP permitidas en InBody para nuestras llamadas salientes a la API.
Después de la instalación, FITsociety puede:
vincular automáticamente a los miembros con usuarios de InBody por su número de teléfono, con comprobaciones adicionales de correo electrónico y fecha de nacimiento cuando InBody devuelve esos datos;
procesar automáticamente nuevas mediciones cuando InBody envía un webhook;
obtener todas las mediciones de InBody existentes de los miembros vinculados;
guardar valores como peso, IMC, porcentaje de grasa, masa grasa, masa muscular, agua corporal total y BMR en las mediciones existentes de FITsociety;
guardar un resultado PDF en el miembro si InBody incluye una URL de PDF o un PDF en base64 en la respuesta de la API.
Importante: la documentación actual de la API de InBody no incluye un endpoint específico de PDF/informes. Los PDF solo pueden guardarse automáticamente si InBody incluye el propio PDF en la respuesta de datos de medición.
¿A quién va dirigida esta integración?
La integración está pensada para empresas con su propia cuenta de InBody/LB Web que quieren ver las mediciones de InBody en el miembro correspondiente de FITsociety.
La integración es específica de cada empresa. Cada empresa de FITsociety tiene su propia instalación, clave API/configuración de cuenta y URL de webhook. Así, los datos se mantienen separados por empresa.
¿Qué necesitas antes de conectar?
Asegúrate de tener preparados estos puntos antes de activar la integración.
Requisito | Explicación |
Cuenta de InBody/LB Web | El nombre de cuenta/ID de cuenta del cliente en LookinBody Web. |
Clave API de InBody | Clave API creada por InBody o en LB Web. |
Acceso a la API de InBody | La cuenta debe tener acceso a los endpoints de la Web API. |
Lista de IP permitidas en InBody | InBody solo acepta llamadas a la API desde direcciones IP registradas. |
Configuración del webhook en InBody | La URL de webhook de FITsociety debe configurarse en LB Web/InBody. |
Miembros con número de teléfono | FITsociety utiliza los números de teléfono para la vinculación automática. |
Preferiblemente, correo electrónico y fecha de nacimiento | Si InBody los devuelve, FITsociety los utiliza como comprobación adicional para evitar vinculaciones incorrectas. |
Lista de IP permitidas
Según su respuesta, InBody no admite listas de permitidos basadas en nombres de host. api.fitsociety.io no puede añadirse como nombre de host a la lista de permitidos para las llamadas salientes a la API.
Para InBody, debe añadirse la dirección IP de salida fija de FITsociety a la lista de permitidos:
3.123.63.205/32
¿Dónde se configura InBody en FITsociety?
En FITsociety, ve a:
Bedrijfsinstellingen > Plugins / Integraties > InBody
Ruta directa:
/company/settings/plugins/inbody
La página se llama Configurar InBody y contiene los campos y botones que se explican a continuación.
Campos de la página de ajustes de InBody
Cuenta
Introduce aquí el nombre de cuenta o ID de cuenta de InBody/LB Web.
Ejemplos:
<inbody-accountnaam><lbweb-account-id>
Utiliza exactamente el nombre de cuenta facilitado por InBody. Si este campo es incorrecto, FITsociety no puede llamar a la API de InBody.
Clave API
Introduce aquí la clave API de InBody.
La clave API se guarda cifrada. Una vez guardada, no volvemos a mostrarla en la interfaz. Para sustituirla, introduce una nueva clave API y vuelve a hacer clic en Guardar configuración.
URL base de la API
Normalmente es:
https://eur.developers.lookinbody.com
Para sandbox/pruebas es:
https://eur.developers.lookinbody.com/sandbox
Para un cliente real, utiliza normalmente la URL de producción.
Entorno
Elige:
Live para datos reales de clientes;
Test para datos de sandbox/pruebas.
Atención: el modo sandbox de InBody puede devolver datos de demostración en algunos endpoints de lectura, pero ciertas acciones de creación/actualización/eliminación pueden modificar datos reales de LB Web. Utiliza el modo de prueba con conocimiento de sus efectos.
Botones de la página de ajustes de InBody
Guardar configuración
Este botón guarda la configuración de InBody:
ID de cuenta;
clave API;
URL base de la API;
entorno;
datos de instalación;
secreto de webhook si todavía no existe.
Después de guardar, FITsociety crea una URL de webhook y un secreto específicos para la empresa. El secreto de webhook solo se muestra justo después de crearlo o renovarlo. Cópialo de inmediato a los ajustes del webhook de InBody.
Renovar secreto de webhook
Utiliza este botón únicamente si es necesario sustituir el secreto de webhook existente.
Después de renovarlo, el secreto anterior deja de funcionar. También debes actualizar los ajustes del webhook de InBody con el nuevo secreto.
Vincular miembros automáticamente
Este botón intenta vincular automáticamente a los miembros de FITsociety con usuarios de InBody.
Para ello, FITsociety utiliza el número de teléfono del miembro y consulta InBody mediante el endpoint oficial:
POST /User/GetUser
Se prueban varios formatos del número de teléfono. Por ejemplo:
062436680562436680531624366805+31624366805310624366805+310624366805003162436680500310624366805
Un miembro solo se vincula automáticamente si la coincidencia es segura y única:
hay un número de teléfono disponible;
el mismo número de teléfono no pertenece a varios miembros locales;
InBody devuelve exactamente un usuario;
si InBody devuelve un correo electrónico, debe coincidir con el correo de FITsociety;
si InBody devuelve una fecha de nacimiento, debe coincidir con la fecha de nacimiento de FITsociety.
Si hay dudas, el miembro no se vincula automáticamente y soporte o el coach debe revisarlo.
Obtener todas las mediciones
Este botón obtiene todas las mediciones de InBody disponibles para los miembros vinculados.
Qué ocurre técnicamente:
Si el botón se utiliza a nivel de empresa, FITsociety intenta primero vincular automáticamente a los miembros.
Después, se procesan todos los usuarios de InBody vinculados.
Para cada usuario vinculado, FITsociety obtiene todas las marcas de tiempo disponibles de InBody mediante:
POST /InBody/GetDatetimesByID
Para cada marca de tiempo, FITsociety obtiene todos los datos de medición mediante:
POST /InBody/GetFullInBodyDataByID
FITsociety convierte la marca de tiempo de InBody en un momento de medición UTC.
FITsociety asigna los valores a los tipos de medición existentes de FITsociety.
FITsociety guarda las mediciones en el miembro.
Si la respuesta contiene un PDF, se guarda en los documentos del miembro.
Este botón no crea mediciones duplicadas. Las mediciones de InBody existentes se insertan o actualizan mediante upsert según:
empresa;
miembro;
tipo de medición;
momento de medición;
fuente
inbody.
Si una importación anterior de InBody estaba incompleta, una nueva sincronización completa puede completar o actualizar los valores sin crear filas duplicadas.
Configurar el webhook en InBody/LB Web
InBody debe enviar un webhook a FITsociety después de cada medición. El webhook actúa únicamente como desencadenante. FITsociety no considera el cuerpo del webhook como datos de medición definitivos, sino que lo utiliza para llamar después a la API oficial de InBody.
Webhook Name
Utiliza un nombre claro, por ejemplo:
FITsociety - <bedrijfsnaam>
Webhook URL
Utiliza la URL de webhook que FITsociety muestra en la página de ajustes de InBody.
Sin secreto en la consulta, tiene este aspecto:
https://api.fitsociety.io/public/v1/webhooks/inbody/<installatiesleutel>
Si InBody no admite encabezados personalizados, utiliza la URL de webhook con el secreto en la URL:
https://api.fitsociety.io/public/v1/webhooks/inbody/<installatiesleutel>?secret=<webhook-secret>
Utiliza siempre la URL de FITsociety. No copies manualmente la clave de instalación si no es necesario.
Custom Header
Si InBody admite encabezados personalizados, es preferible utilizar un secreto en el encabezado en lugar de un secreto en la consulta.
Header name:
x-fitsociety-inbody-secret
Header value:
<webhook-secret>
El secreto de webhook procede de FITsociety y solo se muestra después de guardar la configuración o renovar el secreto.
¿Qué ocurre después de una nueva medición de InBody?
El miembro se sube al dispositivo InBody.
El miembro introduce en el dispositivo su número de teléfono o ID de usuario de InBody, según la configuración de la cuenta de InBody.
InBody procesa la medición en LB Web.
InBody envía un webhook a FITsociety.
FITsociety comprueba la clave de instalación y el secreto de webhook.
FITsociety devuelve inmediatamente
202 Accepteda InBody.En segundo plano, FITsociety obtiene los datos de medición mediante la API de InBody.
Si el webhook contiene
userIDydatetimes, FITsociety importa exactamente esa medición.Si el webhook no contiene una marca de tiempo específica, FITsociety comprueba las mediciones de hoy para los miembros vinculados.
FITsociety guarda los valores en las mediciones de progreso del miembro.
Las mediciones aparecen en el perfil del miembro, en progreso/medición, siempre que el tipo de medición esté activo y visible para ese miembro. Los nuevos tipos de medición importados de InBody se añaden automáticamente a los ajustes del miembro.
¿Qué valores de medición obtenemos?
FITsociety obtiene los valores cuando InBody los incluye en la respuesta de datos completos y existe un tipo de medición correspondiente.
Valor de InBody | Tipo de medición de FITsociety | Unidad |
Weight | Peso | kg |
BMI / BMI(BodyMassIndex) | BMI | ninguna |
PBF / PBF(PercentBodyFat) | Porcentaje de grasa | % |
BFM / BFM(BodyFatMass) | Masa grasa | kg |
VFL / VFL(VisceralFatLevel) | Grasa visceral | valor del proveedor |
FFM / FFM(FatFreeMass) | Masa libre de grasa / masa corporal magra | kg |
SMM / SMM(SkeletalMuscleMass) | Masa muscular / masa muscular esquelética | kg |
TBW / TBW(TotalBodyWater) | Agua corporal total | kg |
Protein | Masa proteica | kg |
Minerals | Contenido mineral | kg |
BMR / BMR(BasalMetabolicRate) | Metabolismo basal | kcal |
BodyAge / metabolicAge | Edad metabólica | años |
No todos los dispositivos o cuentas de InBody devuelven siempre todos los valores. Si InBody no incluye un valor, FITsociety no puede guardarlo.
¿Dónde se guardan las mediciones?
Los valores se guardan como mediciones habituales de FITsociety en el miembro.
La fuente de las mediciones es:
inbody
La nota de la medición es:
Imported from InBody
Después, las mediciones aparecen en la vista de progreso del miembro, como los demás valores de medición.
¿Cómo funciona la vinculación de miembros?
FITsociety guarda una vinculación externa de InBody para cada miembro. Esta vinculación consta del valor de InBody userID.
La vinculación automática funciona así:
FITsociety revisa todos los miembros de la empresa.
Para cada miembro se generan variantes del número de teléfono.
FITsociety consulta a InBody para buscar el usuario con cada variante del número de teléfono.
Si coincide exactamente un usuario de InBody, se comprueba ese candidato.
Si el correo electrónico o la fecha de nacimiento no coinciden, no se crea la vinculación.
Si la coincidencia es segura, se guarda el valor de InBody
userIDen el miembro.
No se crea una vinculación automática si:
no hay número de teléfono;
varios miembros locales tienen el mismo número de teléfono;
hay varios usuarios de InBody con el mismo número de teléfono;
el correo electrónico no coincide;
la fecha de nacimiento no coincide;
no se encuentra ningún usuario de InBody.
¿Qué ocurre si los miembros ya están vinculados?
Si un miembro ya tiene una vinculación activa con InBody, se conserva. La vinculación automática considera que este miembro ya está vinculado y no sobrescribe esa vinculación sin más.
Una vinculación manual o técnica sí puede guardarse de nuevo si soporte modifica deliberadamente el ID de usuario de InBody.
¿Qué ocurre si las mediciones ya existen?
FITsociety no crea mediciones de InBody duplicadas para el mismo tipo y momento de medición.
Al volver a importar, FITsociety utiliza un upsert. Esto significa:
si la medición de InBody no existe, se crea;
si la medición de InBody ya existe, se actualiza la fila existente;
pueden añadirse tipos de medición que faltaban;
puede vincularse un PDF más adelante si InBody lo facilita posteriormente.
Esto es importante para importaciones históricas y correcciones.
PDF de las mediciones de InBody
Lamentablemente, esto no es posible actualmente. Hemos enviado una solicitud a inBody. Si quieres compartirlos digitalmente con tus clientes, por ahora puedes añadirlos manualmente a los documentos. También puedes contactar con inBody para preguntar si ofrecerán esta función en el futuro.
¿Qué no hace la integración?
La integración actual de InBody no hace lo siguiente:
no incluye un flujo OAuth para que los clientes inicien sesión por su cuenta mediante InBody;
no registra automáticamente FITsociety como Connected App en LB Web;
no configura automáticamente el webhook en InBody;
no garantiza la disponibilidad de PDF mientras InBody no los incluya en la respuesta de la API;
no sincroniza pagos ni suscripciones;
no comparte datos entre distintas empresas de FITsociety.
Seguridad y separación de datos
La integración está separada por empresa:
cada empresa tiene su propia instalación de InBody;
cada instalación tiene su propia clave de instalación;
cada instalación tiene su propio secreto de webhook;
las claves API se guardan cifradas;
los secretos de webhook se guardan como hashes;
los datos de medición se guardan con el valor correcto de
companyIdyclientId;las importaciones se registran por separado por empresa, instalación, usuario de InBody y marca de tiempo.
Los errores en el procesamiento de webhooks o importaciones se notifican a Sentry sin claves API sin procesar, secretos de webhook ni encabezados de autorización.
Problemas frecuentes
La integración de InBody no es visible
La integración de InBody puede estar en modo privado/piloto. Comprueba que la empresa esté autorizada para el proveedor InBody y que la integración esté disponible en la lista de plugins.
InBody muestra "Connection failed" al probar el webhook
Comprueba:
¿la URL de webhook es exactamente la que muestra FITsociety?
¿el cliente utiliza
https://api.fitsociety.io/...y no la URL del backend de Elastic Beanstalk?¿el secreto de webhook está introducido correctamente?
¿InBody admite encabezados personalizados? Si no, utiliza la URL con
?secret=<webhook-secret>;¿se ha renovado el secreto de webhook sin actualizar InBody?
¿InBody o alguna capa de red bloquea la prueba saliente?
Atención: la lista de IP permitidas es necesaria para nuestras llamadas salientes a InBody. La llamada de webhook de InBody a FITsociety utiliza la URL de webhook.
No se vincula ningún miembro
Posibles causas:
los miembros no tienen número de teléfono en FITsociety;
los números de teléfono son incorrectos o están duplicados en FITsociety;
InBody utiliza otro número de teléfono/token de usuario;
InBody no devuelve ningún usuario mediante
/User/GetUser;el correo electrónico o la fecha de nacimiento no coinciden.
No se obtienen mediciones
Comprueba:
¿se ha guardado la configuración de InBody?
¿la clave API es correcta?
¿el ID de cuenta es correcto?
¿la IP de salida fija de FITsociety está en la lista de permitidos de InBody?
¿hay miembros vinculados?
¿hay mediciones en InBody para esos usuarios vinculados?
¿devuelve
/InBody/GetDatetimesByIDmarcas de tiempo?
Solo se recibe el peso
Esto puede ocurrir si InBody devuelve nombres de campos distintos de los esperados o si los ajustes del miembro solo tienen visible el peso.
FITsociety también asigna ahora las claves de datos completos, como BMI(BodyMassIndex), PBF(PercentBodyFat), SMM(SkeletalMuscleMass) y BMR(BasalMetabolicRate). Después, vuelve a ejecutar Obtener todas las mediciones para completar las mediciones ya importadas.
Lista de comprobación de soporte para un nuevo cliente
Utiliza esta lista para una nueva instalación de InBody.
Comprueba que el proveedor InBody sea visible/esté disponible para la empresa.
Solicita al cliente o a InBody el nombre de cuenta/ID de cuenta de LB Web.
Solicita al cliente o a InBody la clave API.
Pide a InBody que añada la IP de salida de FITsociety a la lista de permitidos:
3.123.63.205/32
Abre la página del plugin de InBody en FITsociety.
Introduce Cuenta .
Introduce Clave API .
Deja URL base de la API en producción, salvo que se trate de un sandbox.
Elige Live para un cliente real.
Haz clic en Guardar configuración.
Copia el secreto de webhook de inmediato.
Copia la URL de webhook.
En InBody/LB Web, introduce:
Webhook Name: FITsociety - <bedrijfsnaam>Webhook URL: <webhook-url-uit-fitsociety>Header name: x-fitsociety-inbody-secretHeader value: <webhook-secret>
Si los encabezados no funcionan, utiliza:
Webhook URL: <webhook-url-uit-fitsociety>?secret=<webhook-secret>
En FITsociety, haz clic en Vincular miembros automáticamente.
Comprueba cuántos miembros están vinculados y cuáles necesitan revisión.
Haz clic en Obtener todas las mediciones.
Comprueba en algunos miembros si las mediciones aparecen en el progreso.
Realiza una medición de prueba en el dispositivo InBody.
Comprueba si el webhook importa automáticamente la nueva medición.
Comprueba si se incluyen PDF. Si no, pregunta a InBody si los PDF están disponibles mediante la API.