Использование 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["dateStringCreatedDialog"] - Дата/время начала (текст)
# args["dateUonCreatedDialog"] - Дата/время начала (под UON)
# args["dateStringUseFunction"] - Дата/время функции (текст)
# args["dateUonUseFunction"] - Дата/время функции (под UON)
# args["link"] - Ссылка на диалог
# args["messenger"] - Мессенджер
# args["linkAdAvito"] - Ссылка на объявление Авито
# args["locationAvito"] - Локация Авито
# args["linkDialogAvito"] - Ссылка на диалог Авито
# args["linkDialogInMessenger"] - Ссылка на диалог в мессенджере
# args["nameUser"] - Имя в мессенджере
# args["userId"] - ID пользователя
# args["linkWidget"] - Ссылка на сайт с виджетом
# args["phoneNumberWhatsapp"] - Номер телефона из WhatsApp
# args["linkInUserMessanger"] - Ссылка на пользователя в мессенджере
# args["agentHash"] - ID агента
# args["platformIdSalebot"] - ID платформы Salebot
# args["userImageLinks"] - Ссылки на изображения пользователя
# args["lastUserImageLink"] - Последняя ссылка на изображение пользователя
# args["bitrixEntityId"] - ID сущности в Bitrix24
# args["bitrixToken"] - Токен доступа Bitrix24
# args["bitrixContactFirstName"] - Имя контакта в Bitrix24
# args["bitrixContactLastName"] - Фамилия контакта в Bitrix24
# args["bitrixPhoneNumber"] - Номер телефона контакта в Bitrix24
# args["bitrixContactEmail"] - Email контакта в Bitrix24
# args["bitrixEntityLink"] - Ссылка на сделку/лида в Bitrix24
# args["amoToken"] - Токен доступа amoCRM
# args["amoDealId"] - ID сделки в amoCRM
# args["amoContactFirstName"] - Имя контакта в amoCRM
# args["amoContactLastName"] - Фамилия контакта в amoCRM
# args["amoPhoneNumber"] - Номер телефона контакта в amoCRM
# args["amoContactEmail"] - Email контакта в amoCRM
# args["amoDealLink"] - Ссылка на сделку в amoCRM
# args["avitoProAccountName"] - Имя аккаунта в Avito Pro
# args["telegramStartParams"] - Переменные из запроса telegram /start
# args["fullDialog"] - Полный диалог
Скопируйте весь код из поля "Код функции", откройте 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?