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;
|
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'])) {
|
if (!empty($terms['documento_url'])) {
|
||||||
$docUrl = $terms['documento_url'];
|
$docUrl = $terms['documento_url'];
|
||||||
$isLocal = (
|
$isLocal = (
|
||||||
@@ -511,7 +511,7 @@ class BotService {
|
|||||||
strpos($docUrl, '127.0.0.1') !== false ||
|
strpos($docUrl, '127.0.0.1') !== false ||
|
||||||
preg_match('/https?:\/\/\d+\.\d+\.\d+\.\d+:\d+/', $docUrl)
|
preg_match('/https?:\/\/\d+\.\d+\.\d+\.\d+:\d+/', $docUrl)
|
||||||
);
|
);
|
||||||
if (!$isLocal) {
|
if (!$isLocal && strpos($msg, $docUrl) === false) {
|
||||||
$msg .= "\n\n📄 Documento: " . $docUrl;
|
$msg .= "\n\n📄 Documento: " . $docUrl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -519,10 +519,12 @@ class BotService {
|
|||||||
$this->whatsappService->sendTextMessage($phoneNumber, $msg);
|
$this->whatsappService->sendTextMessage($phoneNumber, $msg);
|
||||||
|
|
||||||
// Marcar usuario como "esperando respuesta de términos"
|
// 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 {
|
try {
|
||||||
$this->db->update(
|
$this->db->update(
|
||||||
'users',
|
'users',
|
||||||
['terms_pending' => 1],
|
['terms_pending' => 1, 'welcome_sent_at' => date('Y-m-d H:i:s')],
|
||||||
'id = :id',
|
'id = :id',
|
||||||
['id' => $user['id']]
|
['id' => $user['id']]
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user