docs.iiAgent.pro
  • О нас
  • Рабочее пространство
    • Панель управления
    • Левое меню
    • Карточка бота
    • Меню бота
  • Настройка бота
    • Базовые параметры
    • Базы знаний и (Embedding)
    • Навыки
    • Каналы коммуникаций
    • Исходящие
    • Еще настройки
  • Функции
    • Анализ данных
    • Базы данных
    • Бизнес
    • Вычисления
    • Диалоги
    • Интернет
    • Реклама
    • Соц сети
    • Фото и видео
    • Разное
  • Университет
    • Как создать бота?
    • Что такое RPA?
    • Агентская автоматизация
    • Агентный искусственный интеллект
    • Порождающий искусственный интеллект
    • Кейсы
    • Шаблоны
  • API
    • API настройка
  • Создание функции
  • Интеграции
    • Подключение авито
Powered by GitBook
On this page
  • Работа с Гугл таблицами
  • Заполнение Google таблицы данными
  • Добавить строку в таблицу Google
  • Работа с Гугл сервисами
  • Управление Google календарем
  • Чтение текста из Google документа v2
  • Замена текста в шаблоне Google Slides
  • Записать текст в документ Google
  • Чтение текста из Google документа
  • Редактирование презентации в Google Slides (с использованием ИИ)
  • Замена текста в шаблоне Google Document
  • Работа с Битрикс 24
  • Отправить лид в Битрикс24
  • Получение лида из Битрикс24
  • Изменить стадию сделки в Битрикс24
  • Получить данные из определенной сделки из Битрикс
  • Получение задачи из Bitrix24
  • Завершение задачи в Bitrix24
  • Прикрепить файл к задаче в Bitrix24
  • Получение товаров из категории на сайте Bitrix24
  • Анализ аудио записей из Bitrix24 папки
  • Работа с Yclients
  • Yclients: Запись на услугу с указанием даты и времени
  • Yclients: Получить список сотрудников и их услуг по ID компании
  • Получение текущих записей по номеру телефона клиента в сервисе YClients
  • Создать запись в сервисе YClients
  • Yclients: Получить полный список данных о клиенте по номеру телефона
  • Удаление записей клиента в сервисе YClients
  • Yclients: Получить график сотрудника на указанные даты
  • Работа c файлами
  • Генерация PDF
  • Чтение офисных файлов
  • Другие СРМ
  • Поиск товаров на Мойсклад
  • Получить данные из определенной сделки из AmoCRM
  • Работа с HH.ru
  • Поиск резюме на сайте HH
  • Поиск вакансий на HH.ru
  • Распознавание данных
  • Распознавание текста на фото
  • Распознование текста на фото через Gemini-Pro-Vision
  • Распознавание текста на фото и документах используя EasyOSR, GigaChat, YandexOSR, Gemini
  • Распознавание текста (gemini-pro-vision + gemini-flash)
  • Презентации PPTX
  • Редактирование презентации PPTX
  • Создание презентации PPTX
  • Поиск и отправка данных
  • Отправка лида (все каналы)
  • Поиск контактов на странице сайта
  • Поиск холодных клиентов
  • Поиск контакта по базе Apollo.ai
  • Проверка компании по данным ФНС
  • Получение товаров из категории на сайте Bitrix24
  • Получение товаров
  • Получение товаров из категории на сайте Webasyst (Shop-Script)
  • Получение товаров из категории на сайте WordPress
  • Дополнительные функции
  • Создание лендинга на Bootstrap
  • Оплата в диалоге
  1. Функции

Бизнес

PreviousБазы данныхNextВычисления

Last updated 6 months ago

Работа с Гугл таблицами

Заполнение Google таблицы данными

Заполнение Google таблицы данными

{  
    "name": "edit_google_sheet",  
    "description": "Редактировать данные в Google Sheet",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL Google Sheet",  
            }, 
            "data": {  
                "type": "string",  
                "description": "Данные для добавления в одну строку в формате: `A1::значение1##G2::значение2##FB25::значение3`", 
            }, 
        }, 
        "required": ["url", "data"],  
    },  
},

Добавить строку в таблицу Google

Позволяет вести запись в строку таблицы Google без затрат токенов.

{
    "name": "append_row_to_google_sheet",
    "description": "Appent row to Google Sheet",
    "parameters": {
        "type": "object",
        "properties": {
            "url": {
                "type": "string",
                "description": "URL of Google Sheet",
            },
            "sheet_number": {
                "type": "integer",
                "description": "List Index in Google Sheet. Starts from 1. Default value is 1.",
            },
            "sheet_name": {
                "type": "string",
                "description": "List Name in Google Sheet. Not required.",
            },
            "row_to_append": {
                "type": "string",
                "description": "Row data to append at the end of Google Sheet formatted like this: `value1;;value2;;value3`",
            },
        },
        "required": ["url", "sheet_number", "text_to_append"],
    },
},

Работа с Гугл сервисами

Управление Google календарем

С помощью функции бот может безопасно добавлять, просматривать, редактировать и удалять события в Google календаре. В поведении боту пропишите эти настройки:

1. Для твоей работы необходим ID календаря, который ты будешь передавать в функцию "google_calendar". ID календаря может быть предоставлен и в виде Email адреса. Без него ты не можешь отвечать ни на какие вопросы пользователя.
2. При показе запланированных событий после названия события указывай его "event_id".
3. Вот инструкции как пользоваться функцией:

Пропишите в промте боту как правильно этим пользоваться:

Тип действия. 
`+` - означает добавление события. 
`?` - означает получение всех событий календаря.. 
`-` - удалить событие в календаре. 
`.` - редактировать событие в календаре.

Также необходимо в настройках вашего календаря с помощью браузера открыть доступ к этому пользователю: "dialogai@dialogai-385904.iam.gserviceaccount.com" с правами "Внесение изменений и предоставления доступа".

dialogai@dialogai-385904.iam.gserviceaccount.com

ID календаря может быть как в виде e-mail адреса, так и в виде собственного обозначения, если это не основной календарь (ID можно найти в настройках интеграции календаря). Если боту предоставить ID не верный, будет выходить ошибка.

    {
    "name": "google_calendar",
    "description": "Управление календарем Google",
    "parameters": {
        "type": "object",
        "properties": {
            "calendarId": {
                "type": "string",
                "description": "ID календаря",
            },
            "action": {
                "type": "string",
                "enum": ["+", "?", '-', '.'],
                "description": "Тип действия. `+` - означает добавление события. `?` - означает получение всех событий календаря.. `-` - удалить событие в календаре. `.` - редактировать событие в календаре.",
            },
            "event_ids": {
                "type": "string",
                "description": "Список ID событий в календаре в формате json строки: ```[{\"event_id\": \"3lsvlor3hjlgpgmv7er7e5juov\"}]```. Передается при типах действия `-` или '.'",
            },
            "events": {
                "type": "string",
                "description": "Список событий в формате json строки: ```[{\"summary\": \"test event\", \"description\": \"some info\", \"start\": {\"dateTime\": \"2024-09-04T03:00:00+03:00\"}, \"end\": {\"dateTime\": \"2024-09-04T05:30:00+03:00\"}}]```. Передается при типах действия `+` или '.'",
            },
            "start_date": {
                "type": "string",
                "description": "Дата начала периода в формате `2024-09-04T03:00:00+03:00`. Передается при типах действия `?` или '-'",
            },
            "end_date": {
                "type": "string",
                "description": "Дата окончания периода в формате `2024-09-04T03:00:00+03:00`. Передается при типах действия `?` или '-'",
            },
        },
        "required": ["calendarId", "action"],
    },
},

Чтение текста из Google документа v2

Чтение текста из Google документа v2

{  
    "name": "read_google_doc_text",  
    "description": "Читает содержимое Google Docs по URL и возвращает текст с ограничением по размеру",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL документа Google Docs",  
            },
            "limit": {  
                "type": "integer",  
                "description": "Максимальное количество символов в ответе. По умолчанию равно 8000",  
                "minimum": 1  
            },
            "return_as_link": {  
                "type": "integer",  
                "description": "0 - возвращает текст, 1 - возвращает ссылку на файл txt вместо текста",  
            },
        }, 
        "required": ["url", "return_as_link"],  
    },  
},

Замена текста в шаблоне Google Slides

Пример инструкции в боте:

Получить информацию от пользователя  и Измени только эти значения:
###company_name### — замените на новое название компании.
###pres_name### — замените на название презентации.
###about_us### — замените на текст “О компании”.
###about_us_2### — замените на дополнительный текст “О компании”.
###product_1### — замените на описание первого продукта/услуги.
{  
    "name": "replace_in_google_slides",  
    "description": "Заменить текстовые метки в Google Slides",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL презентации Google Slides",  
            }, 
            "replacements": {  
                "type": "string",  
                "description": "Строка замен строго в формате: `метка1->значение1||метка2->значение2`. `->` - этот разделитель обязателен.",
            },
            "format": {  
                "type": "string",  
                "description": "Формат возвращаемой ссылки",  
                "enum": ["link", "pdf", "pptx"],  
            }, 
        }, 
        "required": ["url", "replacements", "format"],  
    },  
},

Записать текст в документ Google

Записать текст в документ Google

{
    "name": "append_text_to_google_doc",
    "description": "Appent text to Google Document",
    "parameters": {
        "type": "object",
        "properties": {
            "url": {
                "type": "string",
                "description": "URL of Google Document",
            },
            "text_to_append": {
                "type": "string",
                "description": "Text to append at the end of Google Document",
            },
        },
        "required": ["url", "text_to_append"],
    },
},

Чтение текста из Google документа

Чтение текста из Google документа

{  
    "name": "get_google_doc_text",  
    "description": "Получить текст из документа Google по URL",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL документа Google",  
            },
            "limit": {  
                "type": "integer",  
                "description": "Максимально количество букв в ответе, по умолчанию 8000",  
            },
        }, 
        "required": ["url", "limit"],  
    },  
},

Редактирование презентации в Google Slides (с использованием ИИ)

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

В этой презентации:
https://docs.google.com/presentation/d/1RSl-KiaTh7xB-R3tOywleXyO6LvPd4dv5wyjbOjkfUY/edit?usp=sharing
Напиши слоган и замени лучшая на эффективная
{  
    "name": "ai_edit_google_slides",  
    "description": "Редактирует текст в Google Slides",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL презентации Google Slides",  
            }, 
            "task": {  
                "type": "string",  
                "description": "Задача, содержащая слоган и слово для замены", 
            }, 
        }, 
        "required": ["url", "task"],  
    },  
},

Замена текста в шаблоне Google Document

Пример инструкции в боте:

Получить информацию от пользователя  и Измени только эти значения:
###company_name### — замените на новое название компании.
###pres_name### — замените на название документа.
###about_us### — замените на текст “О компании”.
###about_us_2### — замените на дополнительный текст “О компании”.
###product_1### — замените на описание первого продукта/услуги.
{  
    "name": "replace_in_google_doc",  
    "description": "Заменить текстовые метки в Google Document",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL презентации Google Document",  
            }, 
            "replacements": {  
                "type": "string",  
                "description": "Строка замен строго в формате: `метка1->значение1||метка2->значение2`. `->` - этот разделитель обязателен.",
            },
            "format": {  
                "type": "string",  
                "description": "Формат возвращаемой ссылки",  
                "enum": ["link", "pdf", "docx"],  
            }, 
        }, 
        "required": ["url", "replacements", "format"],  
    },  
},

Работа с Битрикс 24

Отправить лид в Битрикс24

Отправить лид в Битрикс24

{ 
    "name": "send_lead_bitrix24", 
    "description": "Отправка лида в Bitrix24", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "bitrix_webhook": { 
                "type": "string", 
                "description": "Вебхук Bitrix24", 
            }, 
            "name": { 
                "type": "string", 
                "description": "Имя клиента", 
            }, 
            "phone": { 
                "type": "string", 
                "description": "Номер телефона клиента", 
            }, 
     	    "email": { 
                "type": "string", 
                "description": "E-mail клиента", 
            },
        }, 
        "required": ["bitrix_webhook", "name", "phone", "email"], 
    }, 
}, 

Получение лида из Битрикс24

Функция запрашивает в Битрикс24 новый лид

{  
    "name": "get_lead_from_bitrix24",  
    "description": "Get lead information from Bitrix24",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "webhook": {  
                "type": "string",  
                "description": "Bitrix24 webhook URL",  
            }
        }, 
        "required": ["webhook"],  
    },  
},

Изменить стадию сделки в Битрикс24

Функция update_deal_stage предназначена для обновления стадии сделки в системе Битрикс24. Она принимает три параметра: deal_id (идентификатор сделки), stage_id (идентификатор новой стадии) и webhook_url (URL вебхука для отправки запроса).

{  
    "name": "bitrix_update_deal_stage",  
    "description": "Обновить стадию сделки в Битрикс24",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "deal_id": {  
                "type": "integer",  
                "description": "ID сделки",  
            }, 
            "stage_id": {  
                "type": "string",  
                "description": "ID новой стадии", 
            }, 
            "webhook_url": {  
                "type": "string",  
                "description": "URL вебхука Битрикс24", 
            }, 
        }, 
        "required": ["deal_id", "stage_id", "webhook_url"],  
    },  
},

Получить данные из определенной сделки из Битрикс

Функция работает при заполненном вебхуке Битрикс24 в разделе "Лидогенерация".

Для получения данных о сделке в функцию нужно предать ID сделки.

{  
    "name": "bitrix_get_dial_fields",  
    "description": "Получить данные из определенной сделки из Битрикс",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "deal_id": {  
                "type": "string",  
                "description": "ID сделки",  
            }, 
        }, 
        "required": ["deal_id"],  
    },  
}, 

Получение задачи из Bitrix24

Получение задачи из Bitrix24

{ 
    "name": "bitrix_get_task", 
    "description": "Получение задачи из Bitrix24", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "bitrix_webhook": { 
                "type": "string", 
                "description": "Bitrix24 webhook URL", 
            }, 
            "keyword": { 
                "type": "string", 
                "description": "Ключевое слово в названии задачи", 
            },
        }, 
        "required": ["bitrix_webhook", "keyword"], 
    }, 
},

Завершение задачи в Bitrix24

Завершение задачи в Bitrix24

{ 
    "name": "bitrix_end_task", 
    "description": "Завершение задачи из Bitrix24", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "bitrix_webhook": { 
                "type": "string", 
                "description": "Bitrix24 webhook URL", 
            }, 
            "ID": { 
                "type": "integer", 
                "description": "ID задачи в Bitrix24", 
            },
            "task_result": { 
                "type": "string", 
                "description": "Текст с результатом выполнения задачи", 
            },
        }, 
        "required": ["bitrix_webhook", "ID", "task_result"], 
    }, 
},

Прикрепить файл к задаче в Bitrix24

Пример инструкции в боте:

Прикрепи файл к задаче в Битрикс24: https://minio.nplus1.ru/app-images/152754/30c1c568a1e8e538911c6f8d02ca69f2.jpg
Номер задачи: 122
ID папки: 1
Webhook Битрикс24: "https://COMPANY.bitrix24.ru/rest/1/b7zwgdXXXXXXXX"
{  
    "name": "bitrix24_attach_file_to_task",  
    "description": "Прикрепить файл к задаче в Bitrix24",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "bitrix24_webhook": {  
                "type": "string",  
                "description": "Вебхук для доступа к API Bitrix24",  
            }, 
            "task_id": {  
                "type": "string",  
                "description": "ID задачи, к которой нужно прикрепить файл",  
            },
            "folder_id": {  
                "type": "string",  
                "description": "ID папки, в которой находится задача",  
            },
            "file_url": {  
                "type": "string",  
                "description": "URL файла, который нужно прикрепить",  
            },
        }, 
        "required": ["bitrix24_webhook", "task_id", "folder_id", "file_url"],  
    },  
},

Получение товаров из категории на сайте Bitrix24

Получение товаров из категории на сайте Bitrix.

Для работы функции создайте в корне сайта файл api_products.php со следующим кодом:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// Проверка, что запрос является POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    die(json_encode(array("error" => "Only POST requests are allowed")));
}

// Подключение необходимых модулей
CModule::IncludeModule("iblock");

// Получение параметров из POST-запроса
$postData = json_decode(file_get_contents('php://input'), true);

$site_url = $postData['site_url'] ?? null;
$searchName = $postData['name'] ?? '';
$categoryId = $postData['category_id'] ?? null;
$minPrice = $postData['min_price'] ?? null;
$maxPrice = $postData['max_price'] ?? null;

// Формирование фильтра
$arFilter = array(
    "IBLOCK_ID" => 2,
    "ACTIVE" => "Y"
);

if (!empty($searchName)) {
    $arFilter["%NAME"] = $searchName;
}

if ($categoryId) {
    $arFilter["SECTION_ID"] = $categoryId;
    $arFilter["INCLUDE_SUBSECTIONS"] = "Y";
}

// Выборка товаров
//$arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PROPERTY_PRICE", "CATALOG_QUANTITY");
$arSelect = array("*", "PROPERTY_*");
$arResult = array();

$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);

while($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
	$arProps = $ob->GetProperties();
    $imageUrl = CFile::GetPath($arFields["DETAIL_PICTURE"]);

	$arFilter = array("PRODUCT_ID" => $arFields["ID"]);
    $price = CPrice::GetList(array(), $arFilter)->Fetch();
    $productPrice = $price["PRICE"];

	if ($minPrice !== null) {
		if ($productPrice < $minPrice) {
			continue;
		}
	}
	
	if ($maxPrice !== null) {
		if ($productPrice > $maxPrice) {
			continue;
		}
	}

    // Проверяем, начинается ли URL с "/upload/"
    if (strpos($imageUrl, '/upload/') === 0) {
        $imageUrl = $site_url . $imageUrl;
    }
    
    $arResult[] = array(
		"name" => $arFields["NAME"],
		"price" => $productPrice,
		"url" => $site_url . $arFields["DETAIL_PAGE_URL"],
		"details" => $arFields["DETAIL_TEXT"],
		"image_url" => $imageUrl
    );
}

// Вывод результата в формате JSON
header('Content-Type: application/json');
echo json_encode($arResult);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

В коде замените код инфоблока каталога товаров - IBLOCK_ID на значение для вашего сайта. Инфоблок - это сущность, где хранится структурированная информация, например товары, новости.

{  
    "name": "get_products_bitrix",  
    "description": "Получить товары с сайта на Битрикс по заданным параметрам",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "site_url": {  
                "type": "string",  
                "description": "URL сайта для поиска товаров без `/` в конце",  
            }, 
            "paraments": {  
                "type": "string",  
                "description": """
                Параметры поиска в виде: `name:id:min_price:max_price:limit##name:id:min_price:max_price:limit##`
                `name` - Название товара (может быть прочерком `-`)
                `nacategory_idme` - ID категории товара
                `min_price` - Минимальная цена товара
                `max_price` - Максимальная цена товара
                `limit` - Сколько товаров должно быть в ответе. По умолчанию 10
                """,  
            }, 
        }, 
        "required": ["site_url", "paraments"],  
    },  
},

Анализ аудио записей из Bitrix24 папки

Сначала функция обращается в папку на диске Bitrix24 и скачивает все новые .mp3 файлы за последние 10 минут. Далее она переводит все файлы в текст и проводит анализ диалогов. Результаты она записывает в таблицу Google.

{ 
    "name": "bitrix_mp3_to_sheet", 
    "description": "Анализ аудио записей из папки Bitrix24", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "bitrix_webhook": { 
                "type": "string", 
                "description": "Bitrix24 webhook URL", 
            }, 
            "folder_id": { 
                "type": "integer", 
                "description": "Bitrix24 folder ID", 
            },
            "ID": { 
                "type": "integer", 
                "description": "ID бота для анализа диалогов", 
            },
            "sheet_url": { 
                "type": "string", 
                "description": "URL таблицы Google Sheet", 
            },
            "api_token": { 
                "type": "string", 
                "description": "API token бота для анализа диалогов", 
            },
            "time_interval": { 
                "type": "integer", 
                "description": "Интервал для загрузки новых файлов в минутах", 
            },
        }, 
        "required": ["bitrix_webhook", "folder_id", "ID", "sheet_url", "api_token", "time_interval"], 
    }, 
}, 

Работа с Yclients

Yclients: Запись на услугу с указанием даты и времени

Yclients: Запись на услугу с указанием даты и времени

{
    "name": "yclients_book_record",
    "description": "Yclients: Запись на услугу с указанием даты и времени",
    "parameters": {
        "type": "object",
        "properties": {
            "phone": {
                "type": "string",
                "description": "Номер телефона для записи",
            },
            "code": {
                "type": "integer",
                "description": "Код для аутентификации",
            },
            "datetime": {
                "type": "string",
                "description": "Дата и время записи в формате ISO 8601",
            },
            "api_key": {
                "type": "string",
                "description": "API ключ для авторизации",
            },
            "api_key_user": {
                "type": "string",
                "description": "Пользовательский API ключ для авторизации",
            },
        },
        "required": ["phone", "code", "datetime", "api_key", "api_key_user"],
    },
},

Yclients: Получить список сотрудников и их услуг по ID компании

Yclients: Получить список сотрудников и их услуг по ID компании

{
    "name": "yclients_get_staff_list_with_services",
    "description": "Yclients: Получить список сотрудников и их услуг по ID компании",
    "parameters": {
        "type": "object",
        "properties": {
            "api_key": {
                "type": "string",
                "description": "API ключ для доступа к Yclients"
            },
            "company_id": {
                "type": "integer",
                "description": "ID компании в Yclients"
            },
            "api_key_user": {
                "type": "string",
                "description": "API ключ пользователя для доступа к Yclients"
            }
        },
        "required": ["api_key", "company_id", "api_key_user"]
    },
},

Получение текущих записей по номеру телефона клиента в сервисе YClients

Пример инструкции в боте:

Используй эти данные для записи клиентов:
АПИ токен: "XXXXXXXXXXXXX"
Токен пользователя: "XXXXXXXXXXXXXXXXXXXXXX"
Номер компании: 309XXX
{  
    "name": "yclients_client_appointments",  
    "description": "Получить записи клиента по номеру телефона",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "company_id": {  
                "type": "integer",  
                "description": "ID компании в YClients",  
            }, 
            "api_token": {  
                "type": "string",  
                "description": "API токен для доступа к YClients",  
            }, 
            "user_token": {  
                "type": "string",  
                "description": "Токен пользователя для доступа к YClients",  
            }, 
            "client_phone": {  
                "type": "string",  
                "description": "Номер телефона клиента", 
            }, 
        }, 
        "required": ["company_id", "api_token", "user_token", "client_phone"],  
    },  
},

Создать запись в сервисе YClients

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

Вы - Диана, опытный администратор центра Подологии, специализирующийся на уходе за стопами и ногтями. Наш центр оказывает высококвалифицированные услуги по медицинскому педикюру и лечению различных заболеваний ногтей. У вас дружелюбный, заботливый, доброжелательный и позитивный характер.

Используй в общении смайлы: 🏙️,✍,😇,🙏🏻,🌿 .
Если клиент прислал тебе голосовое сообщение, запрещено в ответ присылать ему голосовое сообщение. Не присылай в ответ голосовые сообщения и любые аудио файлы!
Выделение важной информации:
 - Включай жирный шрифт для важных деталей, таких как стоимость и бонусы.
Запрещено писать чтобы клиент подождал.

Твоя задача создавать записи клиентов на сеансы в наш салон красоты.

Номера услуг:
1340XXX - ПараМедицинский МАНИКЮР (seance_length - 2часа)
...

Номера специалистов:
3276XXXX - Милана (подолог)
...

Используй эти данные для записи клиентов:
АПИ токен: "XXXXXXXXXXXXX"
Токен пользователя: "XXXXXXXXXXXXXXXXXXXXXX"
Номер компании: 309XXX

Емайл у всех клиентов передавай такой: api@email.com
{  
    "name": "yclients_book_appointment",  
    "description": "Записать клиента на прием через API YClients",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "company_id": {  
                "type": "integer",  
                "description": "ID компании в YClients",  
            }, 
            "api_token": {  
                "type": "string",  
                "description": "API токен для доступа к YClients",  
            }, 
            "user_token": {  
                "type": "string",  
                "description": "Токен пользователя для доступа к YClients",  
            }, 
            "client_info": {  
                "type": "string",  
                "description": "Информация о клиенте в формате 'телефон;имя;email'",  
            }, 
            "staff_id": {  
                "type": "integer",  
                "description": "ID сотрудника, к которому записывается клиент",  
            }, 
            "service_ids": {  
                "type": "string",  
                "description": "ID услуг, разделенные точкой с запятой",  
            }, 
            "datetime": {  
                "type": "string",  
                "description": "Дата и время записи в формате ISO 8601",  
            }, 
            "seance_length": {  
                "type": "integer",  
                "description": "Длительность сеанса в минутах",  
            }, 
        }, 
        "required": ["company_id", "api_token", "user_token", "client_info", "staff_id", "service_ids", "datetime", "seance_length"],  
    },  
},

Yclients: Получить полный список данных о клиенте по номеру телефона

Yclients: Получить полный список данных о клиенте по номеру телефона

{
    "name": "yclients_get_client_data_by_phone",
    "description": "Yclients: Получить полный список данных о клиенте по номеру телефона",
    "parameters": {
        "type": "object",
        "properties": {
            "company_id": {
                "type": "integer",
                "description": "ID компании",
            },
            "phone": {
                "type": "string",
                "description": "Номер телефона клиента",
            },
            "api_key": {
                "type": "string",
                "description": "bearer api_key",
            },
        },
        "required": ["company_id", "phone", "api_key"],
    },
},

Удаление записей клиента в сервисе YClients

Пример инструкции в боте:

Используй эти данные для записи клиентов:
АПИ токен: "XXXXXXXXXXXXX"
Токен пользователя: "XXXXXXXXXXXXXXXXXXXXXX"
Номер компании: 309XXX
Номера записей: 914XXXXX; 9144XXXX
{  
    "name": "yclients_delete_client_appointments",  
    "description": "Удалить записи клиента в сервисе YClients по списку ID записей",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "company_id": {  
                "type": "integer",  
                "description": "ID компании в YClients",  
            }, 
            "api_token": {  
                "type": "string",  
                "description": "API токен для доступа к YClients",  
            }, 
            "user_token": {  
                "type": "string",  
                "description": "Токен пользователя для доступа к YClients",  
            }, 
            "record_ids": {  
                "type": "string",  
                "description": "ID записией, которые нужно удалить, разделенные точкой с запятой", 
            }, 
        }, 
        "required": ["company_id", "api_token", "user_token", "record_ids"],  
    },  
},

Yclients: Получить график сотрудника на указанные даты

Yclients: Получить график сотрудника на указанные даты

{
    "name": "yclients_get_employee_schedule",
    "description": "Yclients: Получить график сотрудника на указанные даты",
    "parameters": {
        "type": "object",
        "properties": {
            "start_date": {
                "type": "string",
                "description": "Дата начала в формате YYYY-MM-DD",
            },
            "end_date": {
                "type": "string",
                "description": "Дата окончания в формате YYYY-MM-DD",
            },
            "api_key": {
                "type": "string",
                "description": "bearer api_key",
            },
            "company_id": {
                "type": "integer",
                "description": "company_id",
            },
            "api_key_user": {
                "type": "string",
                "description": "api_key_user",
            },
        },
        "required": ["start_date", "end_date", "api_key", "company_id", "api_key_user"],
    },
},

Работа c файлами

Генерация PDF

Функция позволяет попросить бота сформировать PDF файл из любой переданной ему или сгенерированной им самим информации. При этом если вы хотите оформить файл красиво с разметкой, то используйте такую инструкцию: "Если я попрошу сделать PDF, то оформи текст в соответствии с заданием в формате HTML и сформируй из этого файл PDF".

"Если я попрошу сделать PDF, то оформи текст в соответствии с заданием в формате HTML и сформируй из этого файл PDF".
{
    "name": "generate_pdf_from_html",
    "description": "Генерация PDF документа на основе HTML-кода",
    "parameters": {
        "type": "object",
        "properties": {
            "title": {
                "type": "string",
                "description": "Заголовок HTML-документа"
            },
            "body_content": {
                "type": "string",
                "description": "Содержимое тела HTML-документа"
            },
            "styles": {
                "type": "string",
                "description": "CSS-стили для HTML-документа"
            },
            "filename": {
                "type": "string",
                "description": "Имя файла на выходе. Не обязательный параметр."
            },
        },
        "required": ["title", "body_content"]
    },
},

Чтение офисных файлов

Функция переводит файлы форматов PDF, DOC, XLS, PPT в текст

{
    "name": "read_file_from_url",
    "description": "Read a file from a URL and extract text with Cyrillic support",
    "parameters": {
        "type": "object",
        "properties": {
            "url": {
                "type": "string",
                "description": "URL of the file",
            },
            "file_type": {
                "type": "string",
                "description": "Type of the file to read",
                "enum": ["PDF", "DOC", "DOCX", "XLS", "XLSX", "PPT", "PPTX"],
            }
        },
        "required": ["url", "file_type"],
    },
},

Другие СРМ

Поиск товаров на Мойсклад

Поиск товара по ключевому слову в базу сервиса Мойсклад

{  
    "name": "moysklad_search",  
    "description": "Search for products by query in the Moysklad API",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "query": {  
                "type": "string",  
                "description": "Search query",  
            }, 
            "token": {  
                "type": "string",  
                "description": "Bearer token for authorization", 
            }, 
        }, 
        "required": ["query", "token"],  
    },  
},

Получить данные из определенной сделки из AmoCRM

Функция работает при заполненном вебхуке AmoCRM в разделе "Лидогенерация".

Для получения данных о сделке в функцию нужно предать ID сделки.

{  
    "name": "amocrm_get_lead",  
    "description": "Получить данные о сделке из AmoCRM по ID сделки",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "lead_id": {  
                "type": "integer",  
                "description": "ID сделки, данные которой нужно получить",  
            }, 
        }, 
        "required": ["lead_id"],  
    },  
},

Работа с HH.ru

Поиск резюме на сайте HH

Функция предназначена для поиска резюме на платформе hh.ru. Она принимает несколько параметров, включая OAuth токен для авторизации, текст для поиска, ID региона, опыт работы и количество результатов на странице.

  1. api_token: обязательный параметр, который используется для авторизации при обращении к API.

  2. search_text: обязательный параметр, который определяет, что именно нужно искать в резюме.

  3. area: опциональный параметр, который позволяет указать ID региона для более точного поиска.

  4. experience: опциональный параметр, который позволяет фильтровать резюме по опыту работы. Возможные значения: "noExperience", "between1And3", "between3And6", "moreThan6".

  5. per_page: опциональный параметр, который задает количество результатов на странице (по умолчанию 20).

{  
    "name": "hh_search_resumes",  
    "description": "Поиск резюме на hh.ru",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "api_token": {  
                "type": "string",  
                "description": "OAuth токен для авторизации",  
            }, 
            "search_text": {  
                "type": "string",  
                "description": "Текст для поиска",  
            }, 
            "area": {  
                "type": "string",  
                "description": "ID региона поиска",  
            }, 
            "experience": {  
                "type": "string",  
                "description": "Опыт работы",  
                "enum": ["noExperience", "between1And3", "between3And6", "moreThan6"], 
            }, 
            "per_page": {  
                "type": "integer",  
                "description": "Количество результатов на странице",  
            }, 
        }, 
        "required": ["api_token", "search_text"],  
    },  
},

Функция ищет по запросу вакансии на сайте HH.ru

{ 
    "name": "hh_vacancies", 
    "description": "Поиск вакансий на сайте HH.ru", 
    "parameters": { 
        "type": "object", 
        "properties": { 
           "search_filter": { 
                "type": "string", 
                "description": "Поисковый фильтр", 
            },
            "region_id": { 
                "type": "integer", 
                "description": "ID города или региона", 
            },
            "period": { 
                "type": "integer", 
                "description": "Период в днях, за который появились вакансии", 
            },
        }, 
        "required": ["search_filter", "region_id", "period"], 
    }, 
},

Поиск резюме на HH.ru

Функция invite_for_interview предназначена для поиска резюме на сайте HH.ru и отправки приглашений на собеседование. Она принимает следующие параметры:

  • search_query: строка, содержащая поисковый запрос для поиска резюме.

  • employer_id: строка, содержащая ID работодателя на HH.ru.

  • vacancy_id: строка, содержащая ID вакансии, на которую отправляется приглашение.

  • message: строка, содержащая сообщение для приглашения на собеседование.

Функция выполняет следующие шаги:

  1. Формирует URL и параметры для поиска резюме на HH.ru.

  2. Выполняет запрос к API HH.ru для поиска резюме по заданному поисковому запросу.

  3. Проверяет, успешно ли выполнен запрос и найдены ли резюме.

  4. Формирует URL для отправки приглашений на собеседование.

  5. Для каждого найденного резюме отправляет приглашение на собеседование с указанным сообщением.

  6. Возвращает сообщение о результате выполнения: либо "Приглашения успешно отправлены", либо сообщение об ошибке.

Функция использует библиотеку requests для выполнения HTTP-запросов к API HH.ru.

{
    "name": "invite_for_interview",
    "description": "Находит резюме на HH.ru и отправляет приглашение на собеседование",
    "parameters": {
        "type": "object",
        "properties": {
            "search_query": {
                "type": "string",
                "description": "Поисковый запрос для поиска резюме"
            },
            "employer_id": {
                "type": "string",
                "description": "ID работодателя на HH.ru"
            },
            "vacancy_id": {
                "type": "string",
                "description": "ID вакансии, на которую отправляется приглашение"
            },
            "message": {
                "type": "string",
                "description": "Сообщение для приглашения на собеседование"
            }
        },
        "required": ["search_query", "employer_id", "vacancy_id", "message"]
    },
},

Распознавание данных

Распознавание текста на фото

Функция распознает текст на фото

{  
    "name": "easyosr",  
    "description": "Распознование текста по фото",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL фото для распознования", 
            }, 
        }, 
        "required": ["url"],  
    },  
},

Распознование текста на фото через Gemini-Pro-Vision

Функции нужно отправить ссылку на фото в формате JPG.

{  
    "name": "gemini_vision",  
    "description": "Извлечение текста из изображения по URL",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "image_url": {  
                "type": "string",  
                "description": "URL изображения",  
            }, 
        }, 
        "required": ["image_url"],  
    },  
},

Распознавание текста на фото и документах используя EasyOSR, GigaChat, YandexOSR, Gemini

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

Модели для распознавания текста: page (по умолчанию) — подходит для изображений с любым количеством строк текста, сверстанного в одну колонку. page-column-sort — для распознавания многоколоночного текста. handwritten — для распознавания произвольного сочетания печатного и рукописного текста на русском и английском языках. table — для распознавания таблиц на русском и английском языках.

Модели для распознавания шаблонных документов: passport — основной разворот паспорта. driver-license-front — водительское удостоверение, лицевая сторона. driver-license-back — водительское удостоверение, обратная сторона. vehicle-registration-front — свидетельство о регистрации транспортного средства, лицевая сторона. vehicle-registration-back — свидетельство о регистрации транспортного средства, обратная сторона. license-plates — все регистрационные номера автомобилей на изображении.

{  
    "name": "osr_combine",  
    "description": "Распознавание текста по фото или PDF",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "osr_model": {  
                "type": "string",  
                "description": "Модель для распознавания. ```\nМодели для распознавания текста:\npage (по умолчанию) — подходит для изображений с любым количеством строк текста, сверстанного в одну колонку.\npage-column-sort — для распознавания многоколоночного текста.\nhandwritten — для распознавания произвольного сочетания печатного и рукописного текста на русском и английском языках.\ntable — для распознавания таблиц на русском и английском языках.\n    \nМодели для распознавания шаблонных документов:\npassport — основной разворот паспорта.\ndriver-license-front — водительское удостоверение, лицевая сторона.\ndriver-license-back — водительское удостоверение, обратная сторона.\nvehicle-registration-front — свидетельство о регистрации транспортного средства, лицевая сторона.\nvehicle-registration-back — свидетельство о регистрации транспортного средства, обратная сторона.\nlicense-plates — все регистрационные номера автомобилей на изображении.\n```", 
                "enum": ["page", "page-column-sort", "handwritten", "table", "passport", "driver-license-front", "driver-license-back", "vehicle-registration-front", "vehicle-registration-back", "license-plates"], 
            }, 
            "file_url": {  
                "type": "string",  
                "description": "URL изображения или PDF файла для распознавания", 
            },
        }, 
        "required": ["osr_model", "file_url"],  
    },  
},

Распознавание текста (gemini-pro-vision + gemini-flash)

Функции нужно отправить ссылку на фото в формате JPG

{  
    "name": "osr_combine_ai",  
    "description": "Распознавание текста по фото",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "image_url": {  
                "type": "string",  
                "description": "URL изображения для распознавания", 
            },
        }, 
        "required": ["image_url"],  
    },  
},

Презентации PPTX

Редактирование презентации PPTX

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

1. Запроси ссылку на презентацию в PPTX.
2. Спроси что нужно изменить в презентации.
3. Запусти функцию редактирования PPTX и покажи ответ функции.
{  
    "name": "ai_edit_pptx",  
    "description": "Редактирование PPTX файла",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "pptx_url": {  
                "type": "string",  
                "description": "URL PPTX файла для редактирования",  
            }, 
            "task": {  
                "type": "string",  
                "description": "Задача редактирования",  
            }, 
            "pdf_result": {  
                "type": "integer",  
                "description": "1 - нужно выдать в формате PDF, 0 - формат PPTX. По умолчанию равно 0.",  
            }, 
        }, 
        "required": ["pptx_url", "task", "pdf_result"],  
    },  
},

Создание презентации PPTX

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

1. Для создание презентации ты должна создать сначала HTML страницу на которой каждый заголовок `<h1>` становится заголовком слайда, а соответствующий текст разбивай на блоки с тегом `<p>`.
2. В одном теге `<p>` не должно быть больше 100 символов.
3. Картинки добавляй отдельно, используя тег `<img>`.
{  
    "name": "generate_pptx",  
    "description": "Создает презентацию PowerPoint из HTML-кода",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "html_content": {  
                "type": "string",  
                "description": "HTML-код для создания презентации",  
            }, 
        }, 
        "required": ["html_content"],  
    },  
},

Поиск и отправка данных

Отправка лида (все каналы)

Функция необходима для сбора лидов (заявок) ботом и отправки информации вам, настраивается на странице "Настройка сбора лидов"

{ 
    "name": "send_lead", 
    "description": "Отправка лида", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "name": { 
                "type": "string", 
                "description": "Имя клиента", 
            }, 
            "phone": { 
                "type": "string", 
                "description": "Номер телефона клиента", 
            }, 
 	    "email": { 
                "type": "string", 
                "description": "E-mail клиента", 
            },
            "region": { 
                "type": "string", 
                "description": "Регион или город клиента", 
            },
            "url": { 
                "type": "string", 
                "description": "Адрес страницы на сайте", 
            }, 
            "log": { 
                "type": "string", 
                "description": "Сюда напиши всю переписку с клиентом", 
            },
            "subject": { 
                "type": "string", 
                "description": "Тема письма, в которой название компании в которую обращается клиент", 
            },
            "body": { 
                "type": "string", 
                "description": "Текст письма, в котором укажи все полученные контактные данные клиента и суть его запроса", 
            },
            "amo_pipeline_id": { 
                "type": "integer", 
                "description": "ID воронки в AmoCRM. Не обязательный параметр.", 
            },
            "amo_status_id": { 
                "type": "integer", 
                "description": "ID этапа воронки в AmoCRM. Не обязательный параметр.", 
            },
        }, 
        "required": ["name", "phone", "email", "region", "log", "subject", "body"], 
    }, 
}, 

Поиск контактов на странице сайта

Поиск контактов на странице сайта

{  
    "name": "contacts_in_url",  
    "description": "Получение контактов на странице по её URL",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "url": {  
                "type": "string",  
                "description": "URL для передачи в запрос",  
            },
            "css_selector": {  
                "type": "string",  
                "description": "CSS селектор нужного блока на странице. Может быть пустым.",  
            },
        }, 
        "required": ["url", "css_selector"],  
    },  
},

Поиск холодных клиентов

Поиск холодных клиентов

{  
    "name": "find_clients",  
    "description": "Поиск контактов клиентов через поиск Яндекса",  
    "parameters": { 
        "type": "object", 
        "properties": { 
            "query": { 
                "type": "string", 
                "description": "Поисковый запрос без указания сайта", 
            }, 
            "site": { 
                "type": "string", 
                "description": "Сайт для поиска. Может быть пустым.", 
            }, 
            "n": { 
                "type": "integer", 
                "description": "Количество найденных страниц", 
            },
            "css_selector": {  
                "type": "string",  
                "description": "CSS селектор нужного блока на странице. Может быть пустым.",  
            },
            "channel": {  
                "type": "string",  
                "enum": ["Emails", "Phones", "Telegram", "WhatsApp"],
                "description": "Тип канала коммуникации с клиентом",  
            },
        }, 
        "required": ["query", "site", "n", "css_selector", "channel"], 
    }, 
}, 

Поиск контакта по базе Apollo.ai

Функция для получения информации о человека по базе данных Apollo.ai

{  
    "name": "apollo_person_search",  
    "description": "Поиск персоны в Apollo.ai",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "api_key": {  
                "type": "string",  
                "description": "API ключ для доступа к Apollo.ai",  
            }, 
            "first_name": {  
                "type": "string",  
                "description": "Имя персоны", 
            },
            "last_name": {  
                "type": "string",  
                "description": "Фамилия персоны", 
            },
            "organization_name": {  
                "type": "string",  
                "description": "Название организации", 
            },
            "domain": {  
                "type": "string",  
                "description": "URL домена", 
            },
        }, 
        "required": ["api_key", "first_name", "last_name", "organization_name", "domain"],  
    },  
},

Проверка компании по данным ФНС

Функция check_company_fns принимает два обязательных параметра: req (ОГРН или ИНН компании) и key (ключ доступа к API).

{  
    "name": "check_company_fns",  
    "description": "Проверка компании по данным ФНС России. Если в ответе функции есть слово `Позитив`, то нужно ответить так: `Положительная репутация`, иначе нужно ответить: `Отрицательная репутация`",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "req": {  
                "type": "string",  
                "description": "ОГРН или ИНН компании",  
            }, 
            "key": {  
                "type": "string",  
                "description": "Ваш ключ доступа к API", 
            }, 
        }, 
        "required": ["req", "key"],  
    },  
},

Получение товаров из категории на сайте Bitrix24

Получение товаров из категории на сайте Bitrix.

Для работы функции создайте в корне сайта файл api_products.php со следующим кодом:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

// Проверка, что запрос является POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    die(json_encode(array("error" => "Only POST requests are allowed")));
}

// Подключение необходимых модулей
CModule::IncludeModule("iblock");

// Получение параметров из POST-запроса
$postData = json_decode(file_get_contents('php://input'), true);

$site_url = $postData['site_url'] ?? null;
$searchName = $postData['name'] ?? '';
$categoryId = $postData['category_id'] ?? null;
$minPrice = $postData['min_price'] ?? null;
$maxPrice = $postData['max_price'] ?? null;

// Формирование фильтра
$arFilter = array(
    "IBLOCK_ID" => 2,
    "ACTIVE" => "Y"
);

if (!empty($searchName)) {
    $arFilter["%NAME"] = $searchName;
}

if ($categoryId) {
    $arFilter["SECTION_ID"] = $categoryId;
    $arFilter["INCLUDE_SUBSECTIONS"] = "Y";
}

// Выборка товаров
//$arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PROPERTY_PRICE", "CATALOG_QUANTITY");
$arSelect = array("*", "PROPERTY_*");
$arResult = array();

$res = CIBlockElement::GetList(array(), $arFilter, false, array("nPageSize" => 50), $arSelect);

while($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
	$arProps = $ob->GetProperties();
    $imageUrl = CFile::GetPath($arFields["DETAIL_PICTURE"]);

	$arFilter = array("PRODUCT_ID" => $arFields["ID"]);
    $price = CPrice::GetList(array(), $arFilter)->Fetch();
    $productPrice = $price["PRICE"];

	if ($minPrice !== null) {
		if ($productPrice < $minPrice) {
			continue;
		}
	}
	
	if ($maxPrice !== null) {
		if ($productPrice > $maxPrice) {
			continue;
		}
	}

    // Проверяем, начинается ли URL с "/upload/"
    if (strpos($imageUrl, '/upload/') === 0) {
        $imageUrl = $site_url . $imageUrl;
    }
    
    $arResult[] = array(
		"name" => $arFields["NAME"],
		"price" => $productPrice,
		"url" => $site_url . $arFields["DETAIL_PAGE_URL"],
		"details" => $arFields["DETAIL_TEXT"],
		"image_url" => $imageUrl
    );
}

// Вывод результата в формате JSON
header('Content-Type: application/json');
echo json_encode($arResult);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>

В коде замените код инфоблока каталога товаров - IBLOCK_ID на значение для вашего сайта. Инфоблок - это сущность, где хранится структурированная информация, например товары, новости.

{  
    "name": "get_products_bitrix",  
    "description": "Получить товары с сайта на Битрикс по заданным параметрам",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "site_url": {  
                "type": "string",  
                "description": "URL сайта для поиска товаров без `/` в конце",  
            }, 
            "paraments": {  
                "type": "string",  
                "description": """
                Параметры поиска в виде: `name:id:min_price:max_price:limit##name:id:min_price:max_price:limit##`
                `name` - Название товара (может быть прочерком `-`)
                `nacategory_idme` - ID категории товара
                `min_price` - Минимальная цена товара
                `max_price` - Максимальная цена товара
                `limit` - Сколько товаров должно быть в ответе. По умолчанию 10
                """,  
            }, 
        }, 
        "required": ["site_url", "paraments"],  
    },  
},

Получение товаров

Получение товаров из категории на сайте Webasyst (Shop-Script)

Получение товаров из категории на сайте Webasyst (Shop-Script).

Для работы требуется создать в корне сайта файл get_products.php со следующим кодом:

<?php

// Подключение к Webasyst
require_once($_SERVER['DOCUMENT_ROOT'].'/wa-config/SystemConfig.class.php');
waSystem::getInstance(null, new waSystemConfig());

// Инициализация приложения Shop
wa('shop');

// Функция для получения товаров из категории
function getProductsByCategory($category_id, $limit = 10, $offset = 0) {
    $collection = new shopProductsCollection('category/'.$category_id);
    $products = $collection->getProducts('*', $offset, $limit);
    
    $result = array();
    foreach ($products as $product) {
        // Получаем полный URL изображения
        $image_url = '';
        if ($product['image_id']) {
            $image = shopImage::getById($product['image_id']);
            if ($image) {
                $image_url = $image->getUrl('thumb', true); // true для получения абсолютного URL
            }
        }
        
        $result[] = array(
            'id' => $product['id'],
            'name' => $product['name'],
            'price' => $product['price'],
            'description' => $product['description'],
            'image_url' => $image_url,
        );
    }
    
    return $result;
}

// Обработка запроса
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $category_id = isset($_GET['category_id']) ? intval($_GET['category_id']) : 0;
    $limit = isset($_GET['limit']) ? intval($_GET['limit']) : 10;
    $offset = isset($_GET['offset']) ? intval($_GET['offset']) : 0;
    
    if ($category_id > 0) {
        $products = getProductsByCategory($category_id, $limit, $offset);
        
        header('Content-Type: application/json');
        echo json_encode(array(
            'status' => 'success',
            'data' => $products
        ));
    } else {
        header('HTTP/1.1 400 Bad Request');
        echo json_encode(array(
            'status' => 'error',
            'message' => 'Invalid category ID'
        ));
    }
} else {
    header('HTTP/1.1 405 Method Not Allowed');
    echo json_encode(array(
        'status' => 'error',
        'message' => 'Method not allowed'
    ));
}
?>
{  
    "name": "get_products_webasyst",  
    "description": "Получить список товаров с сайта Webasyst по заданной категории",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "site_url": {  
                "type": "string",  
                "description": "URL сайта без `/` в конце",  
            }, 
            "category_id": {  
                "type": "integer",  
                "description": "ID категории товаров",  
            }, 
            "limit": {  
                "type": "integer",  
                "description": "Количество товаров для получения",  
            }, 
            "offset": {  
                "type": "integer",  
                "description": "Смещение для пагинации",  
            }, 
        }, 
        "required": ["site_url", "category_id", "limit", "offset"],  
    },  
},

Получение товаров из категории на сайте WordPress

Получение товаров из категории на сайте WordPress.

Для работы функции добавьте в файл functions.php вот этот код:

add_action('rest_api_init', function () {
    register_rest_route('myshop/v1', '/products', array(
        'methods' => 'GET',
        'callback' => 'get_products_info',
        'permission_callback' => '__return_true'
    ));
});
function get_products_info($request) {
    $category = $request->get_param('category');
    $args = array(
        'status' => 'publish',
        'limit' => -1
    );
    if ($category) {
        $args['category'] = array($category);
    }
    $products = wc_get_products($args);
    $data = array();
    foreach ($products as $product) {
        $data[] = array(
            'id' => $product->get_id(),
            'name' => $product->get_name(),
            'price' => $product->get_price(),
            'regular_price' => $product->get_regular_price(),
            'sale_price' => $product->get_sale_price(),
            'stock_status' => $product->get_stock_status(),
            'stock_quantity' => $product->get_stock_quantity(),
            'categories' => wp_list_pluck($product->get_category_ids(), 'name'),
            'permalink' => get_permalink($product->get_id()),
            'image_url' => wp_get_attachment_url($product->get_image_id()),
        );
    }
    return new WP_REST_Response($data, 200);
}
{  
    "name": "get_products_from_wordpress",  
    "description": "Получить товары из категории на сайте WordPress",  
    "parameters": {  
        "type": "object",  
        "properties": { 
            "category": {  
                "type": "string",  
                "description": "Название категории товаров", 
            }, 
            "site_url": {  
                "type": "string",  
                "description": "Ссылка на сайт с WordPress без `/` в конце", 
            }, 
        }, 
        "required": ["category", "site_url"],  
    },  
},

Дополнительные функции

Создание лендинга на Bootstrap

Создание лендинга на Bootstrap

{
    "name": "generate_landing_page",
    "description": "Генерация одностраничного сайта",
    "parameters": {
        "type": "object",
        "properties": {
            "user_data": {
                "type": "string",
                "description": "Данные для сайта",
            },
            "user_comments": {
                "type": "string",
                "description": "Любые пожелания пользователя к сайту. Может быть пустым.",
            },
        },
        "required": ["user_data", "user_comments"]
    },
},

Оплата в диалоге

Функция генерирует ссылку и QR-код на оплату внутри диалога. Будет работать только при настроенной интеграции с платежной системой.

{ 
    "name": "get_payment_link", 
    "description": "Payment link generator", 
    "parameters": { 
        "type": "object", 
        "properties": { 
            "cost": { 
                "type": "integer", 
                "description": "Amount due", 
            }, 
        }, 
        "required": ["cost"], 
    }, 
},

Поиск вакансий на

Работа с Гугл таблицами
Заполнение Google таблицы данными
Добавить строку в таблицу Google
Работа с Гугл сервисами
Управление Google календарем
Чтение текста из Google документа v2
Замена текста в шаблоне Google Slides
Записать текст в документ Google
Чтение текста из Google документа
Редактирование презентации в Google Slides (с использованием ИИ)
Замена текста в шаблоне Google Document
Работа с Битрикс 24
Отправить лид в Битрикс24
Анализ аудио записей из Bitrix24 папки
Получение лида из Битрикс24
Прикрепить файл к задаче в Bitrix24
Завершение задачи в Bitrix24
Получение задачи из Bitrix24
Изменить стадию сделки в Битрикс24
Получить данные из определенной сделки из Битрикс
Работа с Yclients
Yclients: Запись на услугу с указанием даты и времени
Yclients: Получить список сотрудников и их услуг по ID компании
Получение текущих записей по номеру телефона клиента в сервисе YClients
Создать запись в сервисе YClients
Yclients: Получить полный список данных о клиенте по номеру телефона
Удаление записей клиента в сервисе YClients
Yclients: Получить график сотрудника на указанные даты
Работа c файлами
Генерация PDF
Чтение офисных файлов
Другие СРМ
Поиск товаров на Мойсклад
Получить данные из определенной сделки из AmoCRM
Работа с HH.ru
Поиск резюме на сайте HH
Поиск вакансий на HH.ru
Поиск резюме на HH.ru
Распознавание данных
Распознавание текста на фото
Распознавание текста на фото через Gemini-Pro-Vision
Распознавание текста на фото и документах используя EasyOSR, GigaChat, YandexOSR, Gemini
Распознавание текста (gemini-pro-vision + gemini-flash)
Презентации PPTX
Редактирование презентации PPTX
Создание презентации PPTX
Поиск и отправка данных
Отправка лида (все каналы)
Поиск контактов на странице сайта
Поиск холодных клиентов
Поиск контакта по базе Apollo.ai
Проверка компании по данным ФНС
Получение товаров из категории на сайте Bitrix
Получение товаров
Получение товаров из категории на сайте Webasyst (Shop-Script)
Получение товаров из категории на сайте WordPress
Дополнительные функции
Создание лендинга на Bootstrap
Оплата в диалоге
HH.ru