Извлечение ответа и Respond to Webhook
После того как узел HTTP Request получил ответ от OpenAI, в него приходит большой JSON. Пользователю весь этот JSON не нужен — нужен только сам текст ответа модели. Достанем его и вернём в качестве HTTP-ответа на webhook.
Структура ответа OpenAI
Ответ от Chat Completions API выглядит примерно так:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Почему программисты путают Хеллоуин и Рождество? Потому что 31 OCT == 25 DEC."
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 24, "total_tokens": 36 }
}Текст ответа лежит по пути choices[0].message.content.
Узел Respond to Webhook
Сценарий с триггером Webhook сам по себе не возвращает ничего осмысленного, если в настройках webhook выбрано Respond: When Last Node Finishes — он отдаст содержимое последнего узла как есть. Чтобы контролировать ответ, добавьте отдельный узел Respond to Webhook в конце сценария.
В настройках узла Respond to Webhook:
- Respond With: выберите
JSON(илиText, если хотите вернуть просто строку). - Response Body: введите JSON, в который положите только нужное поле, например:
{
"answer": "{{ $json.choices[0].message.content }}"
}Теперь webhook вернёт компактный ответ, удобный для клиента.
Альтернатива: вытащить текст в отдельный узел
Если вы хотите явно отделить шаг «извлечение ответа» от шага «отправка ответа», добавьте между HTTP Request и Respond to Webhook узел, который преобразует данные. Подойдёт Edit Fields (в более старых версиях он назывался Set) — в нём добавьте поле answer со значением {{ $json.choices[0].message.content }}. На выходе у вас будет один объект только с этим полем, и его легко вернуть.
Проверка
Отправьте запрос в Postman:
{ "question": "Объясни рекурсию одним предложением." }В ответ webhook должен вернуть JSON с полем answer и текстом от модели. Если что-то пошло не так, откройте список executions сценария и посмотрите данные на каждом узле — это самый быстрый способ найти ошибку.