feat: expandir tab Por Categoría en bot-config
- Toggle "Pedir finca al inicio" por categoría → maneja greeting/greeting_flow - Campo editable de greeting_flow (pre-llena ask_finca al activar el toggle) - Selector de menú inicial (greeting_menu, visible cuando NO pide finca) - Selector de flujo de respaldo (fallback_flow) por categoría - Datalist con flows y menús disponibles para autocompletar - save-per-type actualiza greeting, greeting_flow, greeting_menu y fallback_flow preservando menus/flows/commands del seed en cada categoría - Cat 1: sin finca, configura greeting_menu desde admin - Cat 2/3: pide finca activado, greeting_flow = ask_finca Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
0ddab6adcf
commit
909c6be32f
+35
-9
@@ -660,22 +660,48 @@ $routes = [
|
||||
|
||||
$config = json_decode($company['config_json'] ?? '{}', true) ?: [];
|
||||
|
||||
$rawPt = $config['per_type'] ?? [];
|
||||
$rawPt = $config['per_type'] ?? [];
|
||||
$perType = (is_array($rawPt) && count(array_filter(array_keys($rawPt), 'is_string')) > 0)
|
||||
? $rawPt : [];
|
||||
|
||||
$perTypeMenus = $_POST['per_type_menu'] ?? [];
|
||||
$ptAskFinca = $_POST['per_type_ask_finca'] ?? [];
|
||||
$ptGreetFlow = $_POST['per_type_greeting_flow'] ?? [];
|
||||
$ptMenus = $_POST['per_type_menu'] ?? [];
|
||||
$ptFallback = $_POST['per_type_fallback'] ?? [];
|
||||
|
||||
foreach ([1, 2, 3] as $cat) {
|
||||
$mk = trim($perTypeMenus[$cat] ?? '');
|
||||
$key = (string)$cat;
|
||||
if ($mk !== '') {
|
||||
$perType[$key] = array_merge($perType[$key] ?? [], ['greeting_menu' => $mk]);
|
||||
$key = (string)$cat;
|
||||
$current = $perType[$key] ?? []; // preserve menus/flows/commands from seed
|
||||
|
||||
$askFinca = ($ptAskFinca[$cat] ?? '0') === '1';
|
||||
|
||||
if ($askFinca) {
|
||||
$gf = trim($ptGreetFlow[$cat] ?? 'ask_finca');
|
||||
$current['greeting'] = '';
|
||||
$current['greeting_flow'] = $gf !== '' ? $gf : 'ask_finca';
|
||||
unset($current['greeting_menu']);
|
||||
} else {
|
||||
unset($perType[$key]['greeting_menu']);
|
||||
if (empty($perType[$key])) unset($perType[$key]);
|
||||
$current['greeting'] = null;
|
||||
unset($current['greeting_flow']);
|
||||
$mk = trim($ptMenus[$cat] ?? '');
|
||||
if ($mk !== '') {
|
||||
$current['greeting_menu'] = $mk;
|
||||
} else {
|
||||
unset($current['greeting_menu']);
|
||||
}
|
||||
}
|
||||
|
||||
$fb = trim($ptFallback[$cat] ?? '');
|
||||
if ($fb !== '') {
|
||||
$current['fallback_flow'] = $fb;
|
||||
} else {
|
||||
unset($current['fallback_flow']);
|
||||
}
|
||||
|
||||
$perType[$key] = $current;
|
||||
}
|
||||
$config['per_type'] = empty($perType) ? new stdClass() : $perType;
|
||||
|
||||
$config['per_type'] = $perType;
|
||||
|
||||
CompanyRepository::save(['id' => $companyId, 'config_json' => json_encode($config, JSON_UNESCAPED_UNICODE)]);
|
||||
echo json_encode(['ok' => true]);
|
||||
|
||||
Reference in New Issue
Block a user