Nextbot
  • Начало
    • Что такое Nextbot?
    • Сценарии использования
      • Ремонт компьютеров
      • Продажа диванов
    • Как начать?
      • Регистрация
      • Создание агента
      • Наполнение базы знаний
      • Добавление функций
      • Публикация ИИ-агента и получение заявок
  • Функционал
    • Аккаунт
      • Безопасность
    • Диалоги
    • Агенты
    • Настройка Агента
      • Системный промпт
      • Стартовое сообщение
      • Температура
      • Оптимизация истории диалога
      • Управление активностью агента
      • Буфер сообщений
      • Форматирование текста. Markdown
      • Дата и время
      • Защита от спама на агента
      • Защита от спама на пользователя
      • Расписание работы ИИ-агента
      • Работа с файлами
        • Голосовые сообщения
        • Изображения
        • Прочие файлы
      • Отложенная отправка
      • Свой ключ OpenAI
    • Чат
    • Источники знаний
      • База знаний
      • Документы
      • OpenAI документы
      • OpenAI веб-поиск
      • Таблицы
        • Создание таблицы вручную
        • Создание таблицы из файла
        • Поиск в таблице
    • Функции
      • Активация функций
      • Название и описание
      • Параметры функций
      • Реакция на выполнение
      • Сценарий поведения после выполнения функции
      • Отправка результатов
        • amoCRM
        • Bitrix24
        • Telegram
        • U-ON.Travel
        • Custom API
        • Python
          • Использование REST API
          • Подключение и работа с Google Таблицам
        • Google Calendar
        • Поиск в таблице
      • Отключить отложенные сообщения
      • Отправка отложенного сообщения
    • Дообучение
      • Как обучить свою модель?
    • Каналы
      • Telegram
        • Инструкция подключения бота к Nextbot
        • Инструкция подключения бота к группе
        • Инструкция подключения бота к личному аккаунту
        • Инструкция получения заявок в Telegram бота
        • Инструкция получения заявок в Telegram чат/группу
      • Вконтакте
      • WhatsApp
      • Авито
      • АвитоPro
        • Подключение аккаунта
        • Управление объявлениями
        • Сценарии поведения ИИ
      • Instagram*
        • Инструкция по подключению Instagram* к Nextbot
      • Jivo
    • Интеграции
      • Notion
        • Подключение
        • Импортирование таблицы
        • Создание таблицы
        • Настройка прав
        • Дополнительная инструкция
        • Примеры
          • Ремонт телефонов
          • Магазин цветов
        • Лимит записей
        • Частые ошибки
      • Bitrix24
        • Подключение
          • Nextbot как канал
          • Nextbot как чатбот
        • Пример использования
        • Отправка шаблонных сообщений в WhatsApp из Bitrix24
      • amoCRM
        • Подключение
        • Отправка шаблонных сообщений в WhatsApp из amoCRM
      • U-ON
      • Google Календарь
        • Создать событие
        • Получить события
        • Удалить событие
        • Получить доступное время
        • Шаблоны функции для работы с Google Calendar
      • ElevenLabs
      • Google Таблицы
      • YCLIENTS
        • Подключение интеграции с YCLIENTS
        • Настройка мастеров и списка услуг для интеграции с YCLIENTS
        • Мастер создания функций YCLIENTS
        • Настройка ИИ-Агента для работы с YCLIENTS
      • Яндекс.Метрика
    • Чат на сайт
    • Аналитика
  • Цены
    • Ценообразование
      • Расходы на LLM
      • Малый бизнес
    • Тарифы
  • Советы
    • Продвинутые техники
      • Мультиагентность
  • Вопрос - ответ
    • Часто задаваемые вопросы
Powered by GitBook
On this page
  1. Функционал
  2. Функции
  3. Отправка результатов
  4. Python

Использование REST API

PreviousPythonNextПодключение и работа с Google Таблицам

Last updated 1 month ago

У сервиса 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
есть среда restricted python: import использовать нельзя но есть подключенные библиотеки и пример кода.

# Доступные параметры в словаре 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)

# Системные поля в словаре args:
# args["dateStringCreatedDialog"] - Дата/время начала (текст)
# args["dateUonCreatedDialog"] - Дата/время начала (под UON)
# args["dateStringUseFunction"] - Дата/время функции (текст)
# args["dateUonUseFunction"] - Дата/время функции (под UON)
# args["link"] - Ссылка на диалог
# args["messenger"] - Мессенджер
# args["linkAdAvito"] - Ссылка на объявление Авито
# args["locationAvito"] - Локация Авито
# args["linkDialogAvito"] - Ссылка на диалог Авито
# args["nameUser"] - Имя в мессенджере
# args["linkWidget"] - Ссылка на сайт с виджетом
# args["phoneNumberWhatsapp"] - Номер телефона из WhatsApp
# args["linkInUserMessanger"] - Ссылка на пользователя в мессенджере
# args["agentHash"] - ID агента
# args["platformIdSalebot"] - ID платформы Salebot

# Доступные возможности:
# Математика: abs, round, pow, sum, max, min, divmod, math (модуль)
# Типы данных: bool, int, float, str, chr, ord, bin, oct, hex
# Структуры: dict, list, tuple, set, frozenset, len, sorted, reversed, any, all
# Итерация: range, enumerate, zip, iter, next, filter, map
# Операторы присваивания: +=, -=, *=, /=, //=, %=, **=, <<=, >>=, &=, ^=, |=
# HTTP: requests.get(), requests.post(), requests.put(), requests.delete()
# JSON: json.loads(), json.dumps()
# Кодирование: base64 (модуль) - для кодирования/декодирования в base64
# Хеширование: hashlib (модуль) - для создания хешей (md5, sha1, sha256 и др.)
# Работа с CSV: csv (модуль) - для чтения/записи CSV файлов
# Структуры данных: collections (модуль) - Counter, defaultdict, deque и др.
# Функциональное программирование: itertools, functools (модули)
# Регулярные выражения: re (модуль)
# Дата и время: datetime (модуль), time (модуль), dateutil (модуль)
# Случайные числа: random (модуль)
# Статистика: statistics (модуль)
# URL обработка: urllib.parse (модуль)
# Логирование: debug() - для отладочных сообщений

# Пример использования логирования
debug("Начало выполнения функции")
debug(f"Получены аргументы: {args}")

# Пример HTTP-запроса с логированием (используем публичный API JSONPlaceholder)
try:
    debug("Отправка HTTP запроса к JSONPlaceholder API...")
    response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
    response.raise_for_status()
    data = response.json()
    debug(f"Получен ответ от API: {data}")
except requests.RequestException as e:
    debug(f"Ошибка при выполнении запроса: {str(e)}")
    result = {"status": "error", "message": str(e)}
else:
    debug("Запрос выполнен успешно")
    result = {
        "status": "success",
        "title": data.get("title"),
        "body": data.get("body")
    }

# Пример обработки данных с логированием
try:
    debug("Начало обработки данных")
    # Пример обработки полученных данных
    processed_data = {
        "post_info": f"Заголовок: {result.get('title', '')}",
        "word_count": len(result.get('body', '').split())
    }
    debug(f"Данные обработаны: {processed_data}")
except Exception as e:
    debug(f"Ошибка при обработке данных: {str(e)}")
    raise

# Результат выполнения функции необходимо сохранить в переменную result
# Результат может быть словарем, списком, строкой или числом
debug("Формирование результата")
result = {
    "status": "success",
    "message": "Функция выполнена успешно",
    "processed_data": processed_data,
    "input_args": args
}
debug("Выполнение функции завершено")


можешь на основе этого кода написать отправку post запроса на URL https://eventorganizer.free.beeceptor.com/event/create
с отправкой 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"
    }
}

Код, сгенерированный 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 успешно доставлен