Meta no permite averiguar el teléfono a partir del BSUID: no hay endpoint de consulta inversa, cada empresa debe llevar su propia equivalencia. Pero el BSUID llega en TODOS los webhooks de mensaje, también en los que aún traen teléfono, así que la equivalencia se puede ir guardando sola mientras la persona todavía muestra su número. - users.bsuid guarda esa equivalencia, y el webhook la anota en cada mensaje. Cuando alguien oculte su número, se le seguirá reconociendo y respondiendo a su teléfono de siempre. - Va en columna aparte y no en phone_number porque el teléfono además cruza con el paciente y el turnero; mezclarlos rompería esos cruces. - Para quien nunca escribió mostrando el número queda pedirle el contacto: pedirContacto() manda el botón request_contact_info, y el webhook atiende el mensaje `contacts` que llega si acepta. - Al vincular puede aparecer un segundo registro de la misma persona. No se fusionan: una fusión mal hecha mezcla dos historias clínicas. Gana el que tiene el teléfono, el otro queda anotado en el log para revisarlo a mano. - scripts/backfill_bsuid.php carga las equivalencias del histórico (6.423), con --simular para verlas sin escribir. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
1.1 KiB
SQL
22 lines
1.1 KiB
SQL
-- 20260811_bsuid_mapa_identidad.sql
|
|
--
|
|
-- Segunda parte del cambio de identidad de WhatsApp (ver 20260811_bsuid_identidad_whatsapp.sql).
|
|
--
|
|
-- Meta manda el BSUID en TODOS los webhooks de mensaje, también en los que aún
|
|
-- traen teléfono. Eso permite guardar la equivalencia BSUID↔teléfono mientras
|
|
-- la persona todavía muestra su número, de modo que el día que lo oculte
|
|
-- siga siendo reconocible: ya sabemos quién es.
|
|
--
|
|
-- El histórico de webhook_logs tiene 6.423 equivalencias que se cargan con
|
|
-- scripts/backfill_bsuid.php.
|
|
--
|
|
-- Se guarda en una columna aparte y no en phone_number porque son dos cosas
|
|
-- distintas: el BSUID identifica, el teléfono además sirve para cruzar con el
|
|
-- paciente y el turnero. Mezclarlos rompería esos cruces.
|
|
|
|
ALTER TABLE users ADD COLUMN bsuid VARCHAR(32) NULL DEFAULT NULL COMMENT 'Identificador de usuario por empresa (Meta). Presente aunque la persona oculte su teléfono.' AFTER phone_number;
|
|
|
|
-- Único: un BSUID identifica a una sola persona dentro del portafolio.
|
|
-- Admite varios NULL, que es el caso de todos los usuarios ya existentes.
|
|
ALTER TABLE users ADD UNIQUE KEY uk_users_bsuid (bsuid);
|