Использование REST API
У сервиса Nextbot уже реализована отправка результатов по REST API через функциональность Custom API. Зачем же тогда использовать вариант с Python Script?
Этот способ даёт больше гибкости в настройке. Например:
Использование переменных в URL — когда в зависимости от ответа пользователя нужно отправлять данные на разные эндпоинты вашего API.
Необходимость отправки JSON с массивом.
Из полученного ответа нужно извлечь только определённые поля, а весь ответ не требуется.
Нужно использовать методы PUT и DELETE, помимо стандартных GET и POST.
Пример

Допустим, у агента есть функция с параметрами, и, например, вы хотите отправить следующий JSON:
{
"event_py": {
"event_type": "event_type"
},
"details": [
{
"date": "date",
"venue": "venue",
"start_time": "start_time",
"city": "city",
"duration": "event_duration_hours"
}
],
"contact_info": {
"name": "name",
"phone": "phone_number"
}
}
Для теста был создан эндпоинт на mock-сервисе:
https://eventorganizer.free.beeceptor.com/event/create
принимающий POST-запрос с JSON.
Работа с Python Script
При включении отправки через Python Script в окно кода автоматически вставляется шаблон, способный отправлять GET-запрос на публичный API и парсить ответ.
В верхней части кода будет блок комментариев, где указаны все доступные параметры через словарь args
:
# Доступные параметры в словаре args:
# args["event_type"] - тип мероприятия (тип: string) [возможные значения определены в enum]
# args["date"] - дата (тип: string)
# args["start_time"] - время начала, формат даты - ISO 8601(YYYY-MM-DDTHH:mm) (тип: string)
# args["city"] - город (тип: string) [возможные значения определены в enum]
# args["venue"] - место проведения (тип: string)
# args["event_duration_minutes"] - продолжительность мероприятия в минутах (тип: integer)
# args["name"] - имя (тип: string)
# args["phone_number"] - номер телефона (тип: string)
# args["event_duration_hours"] - продолжительность мероприятия в часах (тип: string)

Скопируйте весь код из поля "Код функции", откройте ChatGPT, вставьте код и попросите составить POST-запрос на:
https://eventorganizer.free.beeceptor.com/event/create
с использованием нужного JSON.
Код, сгенерированный ChatGPT:
debug("Начало выполнения функции")
debug(f"Получены аргументы: {args}")
# Формируем JSON для отправки
payload = {
"event_py": {
"event_type": args.get("event_type", "")
},
"details": [
{
"date": args.get("date", ""),
"venue": args.get("venue", ""),
"start_time": args.get("start_time", ""),
"city": args.get("city", ""),
"duration": args.get("event_duration_hours", "")
}
],
"contact_info": {
"name": args.get("name", ""),
"phone": args.get("phone_number", "")
}
}
debug(f"Формированный JSON: {payload}")
# Отправляем POST-запрос
try:
debug("Отправка HTTP POST запроса...")
response = requests.post("https://eventorganizer.free.beeceptor.com/event/create", json=payload)
response.raise_for_status()
result = response.json()
debug(f"Ответ от сервера: {result}")
except requests.RequestException as e:
debug(f"Ошибка при выполнении запроса: {str(e)}")
result = {"status": "error", "message": str(e)}
debug("Выполнение функции завершено")
Тестрование
Запустите тест

Код выполнился — теперь проверим, пришло ли сообщение на наш эндпоинт.

Протестируем работу функции в диалоге

Откройте мониторинг эндпоинта

Убедитесь, что JSON успешно доставлен
Last updated
Was this helpful?