diff --git a/modules/turnero/views/chat.php b/modules/turnero/views/chat.php index 3f9f5da..cf7e389 100644 --- a/modules/turnero/views/chat.php +++ b/modules/turnero/views/chat.php @@ -1178,7 +1178,7 @@ const nuevoMensaje = (() => { row.className = 'tpl-var-row'; const ph = v.example || v.placeholder || v.label; row.innerHTML = `` + - ``; + ``; varsBody.appendChild(row); }); } @@ -1193,9 +1193,9 @@ const nuevoMensaje = (() => { async function enviar() { if (!_phone || !_tpl) return; const inputs = [...document.querySelectorAll('#nv-vars-body input[data-var-index]')]; - const params = inputs.map(el => ({ name: el.dataset.varIndex, value: el.value.trim() })); - const missing = params.findIndex(p => !p.value); + const missing = inputs.findIndex(el => !el.value.trim()); if (missing !== -1) { inputs[missing].focus(); return; } + const params = _buildParams(inputs); const templateName = _tpl.template_name; const templateLang = _tpl.language_code; @@ -1293,7 +1293,7 @@ async function selectTemplate(tpl) { const label = v.label || ('Variable ' + v.index); const ph = v.example || v.placeholder || label; row.innerHTML = `` + - ``; + ``; varsBody.appendChild(row); }); } @@ -1302,12 +1302,28 @@ async function selectTemplate(tpl) { } } +function _buildParams(inputs) { + const hasNamed = inputs.some(el => { + const n = (el.dataset.varPlaceholder || '').replace(/\{\{|\}\}/g, '').trim(); + return n && !/^\d+$/.test(n); + }); + if (hasNamed) { + const obj = {}; + inputs.forEach(el => { + const n = (el.dataset.varPlaceholder || '').replace(/\{\{|\}\}/g, '').trim() || el.dataset.varIndex; + obj[n] = el.value.trim(); + }); + return obj; + } + return inputs.map(el => el.value.trim()); +} + async function sendTemplate() { if (!_tplSelected || !state.activeUserId) return; const inputs = [...document.querySelectorAll('#tpl-vars-body input[data-var-index]')]; - const params = inputs.map(el => ({ name: el.dataset.varIndex, value: el.value.trim() })); - const missing = params.findIndex(p => !p.value); + const missing = inputs.findIndex(el => !el.value.trim()); if (missing !== -1) { inputs[missing].focus(); return; } + const params = _buildParams(inputs); const templateName = _tplSelected.template_name; const templateLang = _tplSelected.language_code;