BLUEPRINT
Глава 6: Протокол Вызова
6.1 Обзор
Invocation Protocol определяет, как потребители навыков удалённо вызывают обнаруженные навыки. Протокол использует асинхронную модель вызова с поддержкой запросов статуса и получения результатов.
6.2 Трёхшаговая Модель Вызова
| Шаг | HTTP-метод | Endpoint | Описание |
|---|---|---|---|
| 1. Инициировать вызов | POST | {invocation_endpoint} | Отправить запрос, получить ID выполнения |
| 2. Запросить статус | GET | {status_url}/{execution_id} | Запросить статус выполнения |
| 3. Получить результат | GET | {result_url}/{execution_id} | Получить результат выполнения |
6.3 Формат Запроса
{
"caller": { "id": "ifay-instance-001", "type": "ifay", "credentials": { "api_key": "sk-xxxxx" } },
"skill_id": "com.example.translate-v1",
"inputs": { "text": "Hello, world!", "target_language": "zh-CN" },
"context": { "trace_id": "trace-abc-123", "priority": "normal", "timeout_ms": 30000 }
}
Поля Запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
caller | object | Да | Информация о вызывающей стороне |
caller.id | string | Да | Уникальный идентификатор вызывающей стороны |
caller.type | string | Да | Тип вызывающей стороны (ifay/service/user) |
skill_id | string | Да | ID целевого навыка |
inputs | object | Да | Входные параметры |
context | object | Нет | Контекст вызова |
6.4 Формат Ответа
{
"execution_id": "exec-789-xyz",
"status": "completed",
"skill_id": "com.example.translate-v1",
"output": { "translated_text": "你好,世界!", "confidence": 0.98 },
"timestamps": { "created_at": "2025-03-20T14:30:00Z", "completed_at": "2025-03-20T14:30:02Z" }
}
Перечисление Статусов Выполнения
| Статус | Описание |
|---|---|
accepted | Запрос получен, ожидает выполнения |
running | Выполняется |
completed | Выполнение успешно завершено |
failed | Выполнение не удалось |
timeout | Превышено время выполнения |
6.5 Поток Аутентификации
Перед вызовом потребитель проверяет поле auth в Skill Descriptor и выполняет соответствующий поток аутентификации (API Key, OAuth 2.0 или без аутентификации).
6.6 Таймаут и Повтор
{
"execution_id": "exec-789-xyz",
"status": "timeout",
"error": {
"code": "EXECUTION_TIMEOUT",
"message": "Skill execution exceeded the configured timeout of 30000ms",
"retry": { "suggested_delay_ms": 5000, "max_attempts": 3 }
}
}
Стратегия повтора: экспоненциальный backoff (начальная задержка × 2^n).
