FITsociety Help ES

Conectar InBody con FITsociety

15 min de lectura

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:

  1. Si el botón se utiliza a nivel de empresa, FITsociety intenta primero vincular automáticamente a los miembros.

  2. Después, se procesan todos los usuarios de InBody vinculados.

  3. Para cada usuario vinculado, FITsociety obtiene todas las marcas de tiempo disponibles de InBody mediante:

POST /InBody/GetDatetimesByID

  1. Para cada marca de tiempo, FITsociety obtiene todos los datos de medición mediante:

POST /InBody/GetFullInBodyDataByID

  1. FITsociety convierte la marca de tiempo de InBody en un momento de medición UTC.

  2. FITsociety asigna los valores a los tipos de medición existentes de FITsociety.

  3. FITsociety guarda las mediciones en el miembro.

  4. 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?

  1. El miembro se sube al dispositivo InBody.

  2. 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.

  3. InBody procesa la medición en LB Web.

  4. InBody envía un webhook a FITsociety.

  5. FITsociety comprueba la clave de instalación y el secreto de webhook.

  6. FITsociety devuelve inmediatamente 202 Accepted a InBody.

  7. En segundo plano, FITsociety obtiene los datos de medición mediante la API de InBody.

  8. Si el webhook contiene userID y datetimes , FITsociety importa exactamente esa medición.

  9. Si el webhook no contiene una marca de tiempo específica, FITsociety comprueba las mediciones de hoy para los miembros vinculados.

  10. FITsociety guarda los valores en las mediciones de progreso del miembro.

  11. 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í:

  1. FITsociety revisa todos los miembros de la empresa.

  2. Para cada miembro se generan variantes del número de teléfono.

  3. FITsociety consulta a InBody para buscar el usuario con cada variante del número de teléfono.

  4. Si coincide exactamente un usuario de InBody, se comprueba ese candidato.

  5. Si el correo electrónico o la fecha de nacimiento no coinciden, no se crea la vinculación.

  6. Si la coincidencia es segura, se guarda el valor de InBody userID en 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 companyId y clientId;

  • 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/GetDatetimesByID marcas 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.

  1. Comprueba que el proveedor InBody sea visible/esté disponible para la empresa.

  2. Solicita al cliente o a InBody el nombre de cuenta/ID de cuenta de LB Web.

  3. Solicita al cliente o a InBody la clave API.

  4. Pide a InBody que añada la IP de salida de FITsociety a la lista de permitidos:

3.123.63.205/32

  1. Abre la página del plugin de InBody en FITsociety.

  2. Introduce Cuenta .

  3. Introduce Clave API .

  4. Deja URL base de la API en producción, salvo que se trate de un sandbox.

  5. Elige Live para un cliente real.

  6. Haz clic en Guardar configuración.

  7. Copia el secreto de webhook de inmediato.

  8. Copia la URL de webhook.

  9. En InBody/LB Web, introduce:

Webhook Name: FITsociety - <bedrijfsnaam>Webhook URL: <webhook-url-uit-fitsociety>Header name: x-fitsociety-inbody-secretHeader value: <webhook-secret>

  1. Si los encabezados no funcionan, utiliza:

Webhook URL: <webhook-url-uit-fitsociety>?secret=<webhook-secret>

  1. En FITsociety, haz clic en Vincular miembros automáticamente.

  2. Comprueba cuántos miembros están vinculados y cuáles necesitan revisión.

  3. Haz clic en Obtener todas las mediciones.

  4. Comprueba en algunos miembros si las mediciones aparecen en el progreso.

  5. Realiza una medición de prueba en el dispositivo InBody.

  6. Comprueba si el webhook importa automáticamente la nueva medición.

  7. Comprueba si se incluyen PDF. Si no, pregunta a InBody si los PDF están disponibles mediante la API.

¿Te ha resultado útil este artículo? ¡Gracias por tu opinión!

Gracias, leemos todos los comentarios.

Artículos relacionados