cat > /home/tvitec62/son.tvitecnologia.com.br/telefonia/api/webhook.php << 'EOF'
<?php
// /telefonia/api/webhook.php - VERSÃO COMPLETA

$log_file = '/tmp/webhook_zenvia.log';
$timestamp = date('Y-m-d H:i:s');

function log_webhook($msg) {
    global $log_file, $timestamp;
    file_put_contents($log_file, "[$timestamp] $msg\n", FILE_APPEND | LOCK_EX);
}

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

log_webhook("🚀 WEBHOOK ACIONADO - " . $_SERVER['REQUEST_METHOD']);

$input = file_get_contents('php://input');
log_webhook("📥 Input: " . $input);

$data = json_decode($input, true);
log_webhook("📊 Decodificado: " . print_r($data, true));

if (!$data) {
    log_webhook("❌ JSON inválido");
    http_response_code(200);
    echo json_encode(['status' => 'ok', 'erro' => 'json_invalido']);
    exit();
}

// Conectar ao banco
$conexao_path = '/home/tvitec62/son.tvitecnologia.com.br/conexao.php';
require_once $conexao_path;
log_webhook("✅ Banco conectado");

// Extrair dados completos
$call_id = $data['id'] ?? 'webhook_' . time();
$status = $data['status_geral'] ?? $data['status'] ?? 'finalizada';
$duracao = intval($data['duracao_segundos'] ?? $data['duracao'] ?? 0);
$custo = floatval($data['preco'] ?? 0);
$data_hora_fim = $data['data_termino'] ?? $data['data_fim'] ?? date('Y-m-d H:i:s');
$data_hora_inicio = $data['data_criacao'] ?? $data['data_inicio'] ?? null;

// Extrair números
$numero_origem = '';
$numero_destino = '';

if (isset($data['origem']) && is_array($data['origem'])) {
    $numero_origem = $data['origem']['numero'] ?? '';
} elseif (isset($data['numero_origem'])) {
    $numero_origem = $data['numero_origem'];
}

if (isset($data['destino']) && is_array($data['destino'])) {
    $numero_destino = $data['destino']['numero'] ?? '';
} elseif (isset($data['numero_destino'])) {
    $numero_destino = $data['numero_destino'];
}

// URL da gravação
$url_gravacao = $data['url_gravacao'] ?? null;

log_webhook("📞 Chamada: $call_id | $numero_origem -> $numero_destino | {$duracao}s | R$ $custo");

// Verificar se já existe
$check = $conn->prepare("SELECT id FROM chamadas_telefonicas WHERE call_id_zenvia = ?");
$check->bind_param("s", $call_id);
$check->execute();
$result = $check->get_result();

if ($result->num_rows > 0) {
    // Atualizar
    $update = $conn->prepare("
        UPDATE chamadas_telefonicas 
        SET status = ?, duracao = ?, custo = ?, data_hora_fim = ?, gravacao_url = ?
        WHERE call_id_zenvia = ?
    ");
    $update->bind_param("sidsds", $status, $duracao, $custo, $data_hora_fim, $url_gravacao, $call_id);
    $update->execute();
    log_webhook("✅ Chamada atualizada: " . $update->affected_rows . " registros");
    $update->close();
} else {
    // Inserir nova
    $insert = $conn->prepare("
        INSERT INTO chamadas_telefonicas 
        (call_id_zenvia, status, duracao, custo, data_hora_inicio, data_hora_fim, numero_origem, numero_destino, gravacao_url)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
    ");
    $insert->bind_param("ssidsssss", 
        $call_id, $status, $duracao, $custo, 
        $data_hora_inicio, $data_hora_fim, 
        $numero_origem, $numero_destino, $url_gravacao
    );
    
    if ($insert->execute()) {
        log_webhook("✅ Nova chamada inserida ID: " . $conn->insert_id);
    } else {
        log_webhook("❌ Erro ao inserir: " . $conn->error);
    }
    $insert->close();
}

$check->close();

// Responder
$response = ['status' => 'ok', 'timestamp' => time()];
echo json_encode($response);
log_webhook("✅ Resposta enviada\n");
?>
EOF