'POST',
'callback' => 'brandgap_execute_cyber_diagnostic',
'permission_callback' => '__return_true',
));
});
function brandgap_execute_cyber_diagnostic(WP_REST_Request $request) {
// Sua chave de API inserida de forma segura no servidor
$gemini_api_key = 'AIzaSyBeRuuaEnZI0VRElYT3dLgYBRyMLjFD0ZE';
$params = $request->get_json_params();
if (empty($params)) {
return new WP_REST_Response(array('error' => 'Nenhum dado recebido pelo servidor.'), 400);
}
// Montagem do Prompt Estratégico utilizando as variáveis enviadas pelo seu formulário
$prompt = "Atue como um Engenheiro de Posicionamento de Marca e Estrategista de Negócios Sênior.\n";
$prompt .= "Analise as seguintes respostas do briefing de uma empresa e gere um diagnóstico de marca estruturado em formato JSON rigoroso.\n\n";
$prompt .= "--- DADOS DO BRIEFING ---\n";
$prompt .= "Nome da Empresa/Marca: " . sanitize_text_field($params['nome_empresa']) . "\n";
$prompt .= "Segmento de Atuação: " . sanitize_text_field($params['segmento']) . "\n";
$prompt .= "Modelo Comercial: " . sanitize_text_field($params['modelo']) . "\n";
$prompt .= "Concorrentes/Inspirações: " . sanitize_textarea_field($params['concorrentes']) . "\n";
$prompt .= "Pilar de Reputação Escolhido (Escolha Forçada): " . sanitize_text_field($params['escolha_forcada']) . "\n";
$prompt .= "Drivers de Valor Selecionados: " . implode(', ', array_map('sanitize_text_field', (array)$params['valores'])) . "\n";
$prompt .= "Auto-percepção de Temperamento: " . sanitize_textarea_field($params['auto_percepcao']) . "\n";
$prompt .= "Gargalo Comercial/Imagem: " . sanitize_textarea_field($params['gargalos']) . "\n\n";
$prompt .= "--- REQUISITOS DE SAÍDA ---\n";
$prompt .= "Sua resposta DEVE ser exclusivamente um objeto JSON válido, sem blocos de código markdown (sem os caracteres ```json), sem explicações extras. Siga estritamente esta estrutura de chaves:\n";
$prompt .= "{\n";
$prompt .= " \"arquetipo\": \"NOME DO ARQUÉTIPO PRINCIPAL\",\n";
$prompt .= " \"arquetipo_desc\": \"Texto explicativo e profundo justificando a aplicação deste arquétipo com base nos gargalos informados.\",\n";
$prompt .= " \"voz_tom\": \"Definição do estilo e tom de voz da marca\",\n";
$prompt .= " \"pos_x\": número inteiro de -100 a 100 (onde -100 é Tradicional e 100 é Inovador),\n";
$prompt .= " \"pos_y\": número inteiro de -100 a 100 (onde -100 é Acessível e 100 é Premium),\n";
$prompt .= " \"falar\": [\"Diretriz verbal 1\", \"Diretriz verbal 2\", \"Diretriz verbal 3\"],\n";
$prompt .= " \"nao_falar\": [\"Barreira verbal 1\", \"Barreira verbal 2\", \"Barreira verbal 3\"],\n";
$prompt .= " \"plano_acao\": [\n";
$prompt .= " { \"titulo\": \"Ação 1\", \"desc\": \"Descrição prática de implementação\" },\n";
$prompt .= " { \"titulo\": \"Ação 2\", \"desc\": \"Descrição prática de implementação\" },\n";
$prompt .= " { \"titulo\": \"Ação 3\", \"desc\": \"Descrição prática de implementação\" }\n";
$prompt .= " ]\n";
$prompt .= "}";
// Chamada oficial utilizando o modelo estável 1.5-flash
$url = '[https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=](https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=)' . $gemini_api_key;
$body = array(
'contents' => array(
array('parts' => array(array('text' => $prompt)))
),
'generationConfig' => array(
'responseMimeType' => 'application/json'
)
);
$args = array(
'body' => json_encode($body),
'headers' => array('Content-Type' => 'application/json'),
'timeout' => 45,
'sslverify' => false, // Evita bloqueios de SSL em servidores compartilhados
'data_format' => 'body'
);
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
return new WP_REST_Response(array('error' => 'Falha de comunicação com a IA: ' . $response->get_error_message()), 500);
}
$response_body = wp_remote_retrieve_body($response);
$data = json_decode($response_body, true);
if (!isset($data['candidates'][0]['content']['parts'][0]['text'])) {
return new WP_REST_Response(array('error' => 'Resposta inválida do motor da IA.', 'debug' => $data), 500);
}
$raw_text = trim($data['candidates'][0]['content']['parts'][0]['text']);
// Sanatização extra de strings markdown
$raw_text = preg_replace('/^
```json/', '', $raw_text);
$raw_text = preg_replace('/```$/', '', $raw_text);
$raw_text = trim($raw_text);
$clean_json = json_decode($raw_text, true);
if (json_last_error() !== JSON_ERROR_NONE) {
return new WP_REST_Response(array('error' => 'Falha no parseamento dos dados estruturados.', 'raw' => $raw_text), 500);
}
// [Opcional] Grava os leads no banco de dados para segurança de dados comerciais
update_option('bg_lead_' . time(), array(
'data' => current_time('mysql'),
'nome' => $params['lead_nome'],
'email' => $params['lead_email'],
'whatsapp' => $params['lead_whats'],
'empresa' => $params['nome_empresa']
));
return new WP_REST_Response($clean_json, 200);
}
// =========================================================================
// 2. FRONT-END: SEU CÓDIGO ORIGINAL INTEGRAVEL POR SHORTCODE
// =========================================================================
add_shortcode('brandgap_app', 'brandgap_render_cyber_interface');
function brandgap_render_cyber_interface() {
ob_start();
?>
Cruzando eixos competitivos...
A Inteligência Artificial está montando o seu Dashboard
DIAGNÓSTICO ARQUETÍPICO
--
--
MATRIZ DE MERCADO
PremiumAcessível
TradicionalInovador
PROJEÇÃO VERBAL
--
DIRETRIZ DE ENTRADA (FALAR) _
BARREIRA DE MARCA (NUNCA DIZER) _
PLANO DE REVOLUÇÃO POSICIONAL
Quer executar essa estratégia de marca com nosso time?
Aceleramos seu design de posicionamento eliminando intermediários.
Agendar Sessão Estratégica _//