Действия функций — Custom API, Python, REST API

Источник: doc.nextbot.ru/functional/functions


Общая архитектура действий

После выполнения функции можно отправить данные во внешние сервисы. Это настраивается в разделе «Действия» (ранее «Отправка результатов»).

Доступные интеграции для отправки

Интеграция Описание
Custom API Универсальный HTTP-запрос к любому REST API
Python Выполнение Python-скрипта
Telegram Отправка в Telegram-бота/группу
amoCRM Создание/обновление сделки в amoCRM
Bitrix24 Интеграция с Bitrix24
Kommo Отправка данных в Kommo
Google Calendar Создание события в Google Calendar
U-ON.Travel Интеграция с U-ON.Travel
Yandex.Metrica Отправка целей в Яндекс.Метрику
Мой Склад Интеграция с Мой Склад

Custom API

Настройка HTTP-запроса

Custom API позволяет отправить любой HTTP-запрос к внешнему сервису после выполнения функции.

Настройка Описание
Метод GET, POST, PUT, PATCH, DELETE
URL Эндпоинт API
Параметры (Query) Параметры в URL (?key=value)
Заголовки (Headers) HTTP-заголовки (Authorization, Content-Type, и т.д.)
Тело запроса (Body) JSON-тело запроса

Использование переменных

В URL, заголовках и теле запроса можно подставлять:

Вложенные объекты

Тело запроса поддерживает вложенную структуру JSON:

{
  "client": {
    "name": "{{client_name}}",
    "phone": "{{phone}}"
  },
  "request": {
    "type": "{{service_type}}",
    "amount": "{{amount}}"
  }
}

Тестирование

Custom API можно протестировать прямо в интерфейсе NextBot:

  1. Заполнить все поля запроса
  2. Нажать «Тестировать»
  3. Увидеть ответ от API (статус, тело ответа)

Python-скрипты

⚠️ Требуется подписка определённого уровня

Доступные библиотеки

Python-скрипты выполняются в изолированной среде с предустановленными библиотеками:

Аргументы функции

Все параметры функции доступны через словарь args:

# Получение параметров функции
client_name = args.get("client_name", "")
phone = args.get("phone", "")
amount = args.get("amount", 0)

Обязательная переменная result

Скрипт обязан определить переменную result — это то, что агент увидит как результат:

# Пример: сбор контакта
client_name = args.get("client_name", "Неизвестно")
phone = args.get("phone", "Не указан")

result = f"Контакт записан: {client_name}, тел: {phone}"

Тестирование


REST API через Python

Когда использовать вместо Custom API

Ситуация Решение
Динамический URL (зависит от параметров) Python + requests
Отправка JSON-массивов Python + requests
PUT/DELETE запросы Python + requests
Сложная логика обработки ответа Python + requests
Цепочка последовательных запросов Python + requests
Простой POST/GET Custom API (проще)

Пример: POST-запрос с JSON

import requests
import json

url = "https://api.example.com/orders"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {args.get('api_key', '')}"
}

payload = {
    "client_name": args.get("client_name", ""),
    "phone": args.get("phone", ""),
    "amount": float(args.get("amount", 0)),
    "currency": args.get("currency", "RUB")
}

response = requests.post(url, headers=headers, json=payload)

if response.status_code == 200:
    data = response.json()
    result = f"Заказ создан: #{data.get('order_id', 'N/A')}"
else:
    result = f"Ошибка: {response.status_code} — {response.text}"

Пример: Supabase-интеграция через Python

import requests

SUPABASE_URL = "https://your-project.supabase.co"
SUPABASE_KEY = "your-anon-key"

headers = {
    "apikey": SUPABASE_KEY,
    "Authorization": f"Bearer {SUPABASE_KEY}",
    "Content-Type": "application/json",
    "Prefer": "return=minimal"
}

# Вставка данных
data = {
    "client_name": args.get("client_name"),
    "phone": args.get("phone"),
    "service": args.get("service_type"),
    "dialog_id": args.get("dialog_id")
}

response = requests.post(
    f"{SUPABASE_URL}/rest/v1/leads",
    headers=headers,
    json=data
)

if response.status_code in [200, 201]:
    result = "Данные успешно сохранены в базу"
else:
    result = f"Ошибка: {response.status_code}"

Важные замечания

  1. Порядок действий: Можно добавить несколько действий к одной функции — они выполняются последовательно
  2. Ошибки: При сбое действия агент получает сообщение об ошибке
  3. Стоимость: Каждое выполнение потребляет Botcoins

Отправка результатов Админу (Telegram / WhatsApp)

Общая схема настройки

Для получения уведомлений в мессенджер необходимо выполнить привязку администратора к боту.

Настройка Telegram

  1. Подключите Telegram в разделе Интеграции.
  2. Получите Админ пароль в настройках.
  3. Отправьте пароль:
    • Лично боту (для личных уведомлений).
    • В группу, куда добавлен бот (для уведомлений в группу).
  4. В функции выберите действие «Админу в мессенджер»Telegram.
  5. Настройте поля отчета (Текст, Параметры, Данные пользователя).

Настройка WhatsApp

  1. Подключите WhatsApp (через Green API).
  2. Перейдите в настройки WhatsApp в NextBot.
  3. Задайте/получите пароль администратора.
  4. Отправьте пароль:
    • Контакту агента (личные сообщения).
    • В группу (требуется опция «Отвечать в группе»).
  5. Добавьте действие «Админу в мессенджер»WhatsApp.

⚠️ Важно: Получатель в Telegram может быть только один (человек или группа) для конкретной настройки. В WhatsApp также требуется предварительная авторизация администратора.