9. Примеры интеграции
Выгрузка для ИИ (JSON)Базовые примеры create_task, polling get_result, режимов view для synthesis и экспорта NDJSON/CSV. Подробные правила работы с синергией см. в разделе 5.
# 9. Примеры интеграции
Bash (cURL)
Базовый сценарий: create_task + get_result (view=summary).
Фрагмент кодаbash
# 1) Создать задачу
RESPONSE=$(curl -s -X POST "https://digihash.ru/datacollector/api.php?action=create_task" \
-H "Content-Type: application/json" \
-H "X-Calc-Profile: B" \
-d '{
"api_key": "655351024",
"user": {
"first_name": "Иван",
"last_name": "Иванов",
"birth_date": "1990-01-01",
"birth_time": "12:00",
"birth_city": "Москва"
},
"systems": ["forecast", "synthesis"],
"forecast": {
"period_type": "day",
"period_start_date": "2026-02-14"
}
}')
echo "$RESPONSE"
TASK_ID=$(echo "$RESPONSE" | jq -r '.request_id')
# 2) Опрос результата
sleep 3
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=$TASK_ID&view=summary"Bash (cURL)
Получение explain-режима и экспорт NDJSON.
Фрагмент кодаbash
# Explain-слой synthesis
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=task_123&view=explain"
# Экспорт NDJSON
curl -s "https://digihash.ru/datacollector/api.php?action=export_result&request_id=task_123&format=ndjson"Bash (cURL)
Доступ к приватному request_id через заголовок X-API-Key.
Фрагмент кодаbash
# Приватный get_result
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=task_private_123&view=summary" \
-H "X-API-Key: your_private_key"
# Приватный export_result
curl -s "https://digihash.ru/datacollector/api.php?action=export_result&request_id=task_private_123&format=ndjson" \
-H "X-API-Key: your_private_key"PHP
Пример с опросом результата и переключением view.
Фрагмент кодаphp
<?php
$apiUrl = 'https://digihash.ru/datacollector/api.php';
$requestId = 'task_123';
for ($i = 0; $i < 30; $i++) {
sleep(2);
$result = json_decode(file_get_contents($apiUrl . '?action=get_result&request_id=' . urlencode($requestId) . '&view=summary'), true);
if (($result['status'] ?? '') === 'success') {
// Для synthesis-задачи это канонический слой summary
print_r($result['summary'] ?? []);
// При необходимости запрашиваем расширенное объяснение
$explain = json_decode(file_get_contents($apiUrl . '?action=get_result&request_id=' . urlencode($requestId) . '&view=explain'), true);
print_r($explain['domain_components'] ?? []);
exit;
}
if (($result['status'] ?? '') === 'error') {
throw new RuntimeException('Ошибка worker: ' . json_encode($result['error'] ?? null, JSON_UNESCAPED_UNICODE));
}
}
throw new RuntimeException('Превышено время ожидания результата');
?>JavaScript (Fetch)
Фронтенд-опрос с view=summary и последующим экспортом csv.
Фрагмент кодаjavascript
async function getSynthesisAndExport(requestId) {
const base = 'https://digihash.ru/datacollector/api.php';
const summaryRes = await fetch(`${base}?action=get_result&request_id=${encodeURIComponent(requestId)}&view=summary`);
const summary = await summaryRes.json();
if (summary.status !== 'success') {
throw new Error(`Задача еще не готова: ${summary.status}`);
}
const csvRes = await fetch(`${base}?action=export_result&request_id=${encodeURIComponent(requestId)}&format=csv`);
const csvText = await csvRes.text();
return { summary, csvText };
}