fix: evitar doble saludo y URL duplicada en mensaje de términos
- sendTermsMessage: solo agrega PDF al final si la URL no está ya en el mensaje - sendTermsMessage: marca welcome_sent_at=now() junto con terms_pending=1 para evitar race condition donde un segundo webhook concurrente cae en isNewUser() y envía la bienvenida mientras los términos ya fueron enviados
This commit is contained in:
@@ -503,7 +503,7 @@ class BotService {
|
||||
|
||||
if (!$msg) return;
|
||||
|
||||
// Adjuntar URL del documento solo si es una URL pública (no localhost)
|
||||
// Adjuntar URL del documento solo si es una URL pública y no está ya incluida en el mensaje
|
||||
if (!empty($terms['documento_url'])) {
|
||||
$docUrl = $terms['documento_url'];
|
||||
$isLocal = (
|
||||
@@ -511,7 +511,7 @@ class BotService {
|
||||
strpos($docUrl, '127.0.0.1') !== false ||
|
||||
preg_match('/https?:\/\/\d+\.\d+\.\d+\.\d+:\d+/', $docUrl)
|
||||
);
|
||||
if (!$isLocal) {
|
||||
if (!$isLocal && strpos($msg, $docUrl) === false) {
|
||||
$msg .= "\n\n📄 Documento: " . $docUrl;
|
||||
}
|
||||
}
|
||||
@@ -519,10 +519,12 @@ class BotService {
|
||||
$this->whatsappService->sendTextMessage($phoneNumber, $msg);
|
||||
|
||||
// Marcar usuario como "esperando respuesta de términos"
|
||||
// También marcamos welcome_sent_at para evitar que una llamada concurrente
|
||||
// al webhook envíe el mensaje de bienvenida por race condition.
|
||||
try {
|
||||
$this->db->update(
|
||||
'users',
|
||||
['terms_pending' => 1],
|
||||
['terms_pending' => 1, 'welcome_sent_at' => date('Y-m-d H:i:s')],
|
||||
'id = :id',
|
||||
['id' => $user['id']]
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user