Главная Интеграции

Интеграции

Litus Dmitrii
От Nika and 1 другое
• 14 статьи

KkmServer

Установка KkmServer 1. Перейдите на сайт KKM Server 2. Скачайте и установите дистрибутив Kkm-Server 3. Установите плагин/расширение для вашего браузера 4. Запустите программу KkmServer 5. В появившемся окне откройте вкладку "Установить тип запуска" и выберите "Автозапуск: Свернутое Трей" 6. Откройте в браузере  плагин/расширение Kkm Server, выберите адрес http://localhost:5893 и после нажмите "Настроить" 7. Далее перейдите в раздел "Настройка оборудования" и нажмите "Добавить устройство" 8. Выберите "Тип устройства" — "Фискальный регистратор" и "Протокол устройства" поддерживаемый вашим ФР, затем нажмите "Добавить устройство" Настройка Vlapp 1. Перейдите в Настройки, "Фискальные регистраторы" 2. Нажмите "Создать" 3. В появившемся окне установите "Тип регистратора" в значение "KkmServer" 4. Укажите данные для подключения (127.0.0.1:5893) и параметры налогообложения 5. Нажмите "Сохранить" 6. Выберите созданный ФР в карточке кассы

Обновлено Jan 07, 2025

Новофон – IP телефония

Получение Key и Secret: - Войдите в личный кабинет Novofon. - Перейдите в раздел «Пользователи АТС», затем кликните на пользователя, являющегося Администратором. - В открывшемся окне перейдите на вкладку API, включите галочку «Использовать ключ API» и сгенерируйте Secret. - В vlApp перейдите в Интеграции и кликните по карточке «Novofon». - Cкопируйте полученные данные (Key и Secret) в форму настройки интеграции Novofon. - Переведите селектор «Состояние» в значение Вкл. - Нажмите «Сохранить». Адрес для уведомлений: - В vlApp перейдите в Интеграции и кликните по карточке «Novofon». - Cкопируйте адрес для уведомлений. - В личном кабинете Novofon, откройте раздел «Интеграции», и кликните по карточке «Уведомление о событиях». - В появившейся форме, в поле "Webhook URL" вставьте скопированный ранее адрес. - Переведите селектор «Интеграция активна» в в активное состояние. - Переведите селектор «Использовать ключи API» в активное состояние. - Используйте Key и Secret полученные ранее (см. "Получение Key и Secret"). - Нажмите «Сохранить». Добавление внутренних номеров: - В vlApp перейдите в Интеграции и кликните по карточке «Novofon». - Нажмите «Добавить внутренний номер». - Свяжите внутренний номер пользователя АТС с пользователем в vlApp.

Обновлено Mar 05, 2025

Webhook

Обзор Webhook Service позволяет внешним системам подписываться на события, происходящие в системе vlApp. При наступлении события система отправляет HTTP POST запрос на настроенный URL с данными о событии. На все запросы необходимо отвечать 200 OK. После 5 неудачных попыток отправка вебхуков на ваш endpoint останавливается на 5 минут, через 5 минут система автоматически возобновит отправку. Создание вебхука Для создания вебхука перейдите в Настройки > Интеграции > WebHooks > Добавить WebHook Формат Webhook уведомлений Все вебхуки отправляются в формате JSON с единой структурой: {   "event": "event_name",   "userId": "550e8400-e29b-41d4-a716-446655440001",   "timestamp": "2024-01-01T10:00:00Z",   "data": {     *// Данные события (зависят от типа события)*   } } event - строковый идентификатор типа события (например, "order_created", "customer_deleted") data - объект с данными, специфичными для данного типа события В разделах ниже приведены полные примеры payload для каждого типа события - Заказы - Обращения - Клиенты

Обновлено Dec 17, 2025

Webhook - Заказы

Обзор Все события отправляются в формате JSON с единой структурой: {   "event": "order_created",   "userId": "550e8400-e29b-41d4-a716-446655440001",   "timestamp": "2024-01-01T10:00:00Z",   "data": {     *// Данные события (зависят от типа события)*   } } Подробную информацию о настройке и способах использования смотрите в статье "Вебхуки" Создан новый заказ event: order_created data: {   "creationTime": "2024-12-17T10:00:00Z",   "closedAt": null,   "dueDate": "2024-12-24T10:00:00Z",   "num": "А40",   "title": "Apple iPad A1454",   "sn": "SN123456",   "malfunction": "Белый экран",   "condition": "Отходит экран от корпуса",   "status": "Новый",   "statusId": "3a118871-f8e8-ea71-c068-51dae78ad941",   "urgent": false,   "isWarranty": false,   "customerId": "550e8400-e29b-41d4-a716-446655440011",   "customerName": "Иванов Иван Иванович",   "managerName": "Петрова Анна Сергеевна",   "engineerFullName": "Сидоров Алексей Михайлович",   "total": 15000.00,   "location": "3a118871-fa11-eb35-fd10-91905199afba",   "orderTypeId": 1,   "orderTypeTitle": "Платный",   "previousOrderId": null,   "previousOrderNum": null } TypeScript интерфейс: interface OrderCreatedData {   */** Время создания в формате ISO 8601 */*   creationTime: string;   */** Время закрытия заказа */*   closedAt: string | null;   */** Срок выполнения в формате ISO 8601 */*   dueDate: string;   */** Номер заказа */*   num: string;   */** Название заказа */*   title: string;   */** Серийный номер устройства */*   sn: string;   */** Описание неисправности */*   malfunction: string;   */** Состояние устройства */*   condition: string;   */** Статус заказа */*   status: string;   */** Идентификатор статуса */*   statusId: string;   */** Признак срочности */*   urgent: boolean;   */** Признак гарантийного ремонта */*   isWarranty: boolean;   */** Идентификатор клиента */*   customerId: string;   */** Имя клиента */*   customerName: string;   */** Имя менеджера */*   managerName: string;   */** Полное имя инженера */*   engineerFullName: string;   */** Общая сумма */*   total: number;   */** Идентификатор локации */*   location: string;   */** Идентификатор типа заказа */*   orderTypeId: number;   */** Название типа заказа */*   orderTypeTitle: string;   */** Идентификатор предыдущего заказа */*   previousOrderId: string | null;   */** Номер предыдущего заказа */*   previousOrderNum: string | null; } Изменен статус event: order_status_changed data: {   "orderId": "550e8400-e29b-41d4-a716-446655440000",   "userId": "550e8400-e29b-41d4-a716-446655440001",   "creationTime": "2024-12-17T10:00:00Z",   "status": "В работе",   "statusId": "550e8400-e29b-41d4-a716-446655440010" } TypeScript интерфейс: interface OrderStatusChangedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор пользователя, изменившего статус */*   userId: string;   */** Время изменения статуса */*   creationTime: string;   */** Новый статус заказа */*   status: string;   */** Идентификатор статуса */*   statusId: string; } Заказ удален event: order_deleted data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000" } TypeScript интерфейс: interface OrderDeletedData {   */** Идентификатор удаленного заказа */*   orderId: string; } Добавлен комментарий event: order_comment_added data: {   "orderId": "550e8400-e29b-41d4-a716-446655440000",   "commentId": 1001,   "text": "Клиент просит ускорить выполнение заказа",   "isPrivate": false } TypeScript интерфейс: interface OrderCommentAddedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор комментария */*   commentId: number;   */** Текст комментария */*   text: string;   */** Признак приватности комментария */*   isPrivate: boolean; } Добавлен материал event: order_material_added data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "MaterialId": 9116,   "Name": "Ламинат Дуб Темный 33 класс",   "Quantity": 1,   "Price": 850.00,   "Total": 850.00,   "PurchasePrice": 650.00,   "RelatedWorkId": 2001,   "WarrantyUnit": 0,   "WarrantyValue": 7 } TypeScript интерфейс: interface OrderMaterialAddedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор материала */*   materialId: number;   */** Название материала */*   name: string;   */** Количество */*   quantity: number;   */** Цена продажи */*   price: number;   */** Общая сумма (Quantity × Price) */*   total: number;   */** Закупочная цена */*   purchasePrice: number;   */** Идентификатор связанной работы */*   relatedWorkId: number;   */** Единица измерения гарантии */*   warrantyUnit: number;   */** Значение гарантии */*   warrantyValue: number; } Обновлена информация о материале event: order_material_updated data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "MaterialId": 9116,   "Name": "Ламинат Дуб Темный 33 класс",   "Quantity": 30,   "Price": 850.00,   "Total": 25500.00,   "PurchasePrice": 650.00,   "RelatedWorkId": 2001,   "WarrantyUnit": 0,   "WarrantyValue": 7 } TypeScript интерфейс: interface OrderMaterialUpdatedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор материала */*   materialId: number;   */** Название материала */*   name: string;   */** Количество */*   quantity: number;   */** Цена продажи */*   price: number;   */** Общая сумма (Quantity × Price) */*   total: number;   */** Закупочная цена */*   purchasePrice: number;   */** Идентификатор связанной работы */*   relatedWorkId: number;   */** Единица измерения гарантии */*   warrantyUnit: number;   */** Значение гарантии */*   warrantyValue: number; } Материал удален event: order_material_deleted data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "MaterialId": 9116,   "Name": "Ламинат Дуб Темный 33 класс" } TypeScript интерфейс: interface OrderMaterialDeletedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор материала */*   materialId: number;   */** Название материала */*   name: string; } Добавлена работа event: order_work_added data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "WorkId": 2001,   "Name": "Укладка ламината",   "Quantity": 25,   "Price": 150.00,   "Total": 3750.00,   "CostPrice": 100.00,   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "UserName": "Алексей Сидоров",   "PriceWorkId": 101,   "WarrantyUnit": 0,   "WarrantyValue": 7 } TypeScript интерфейс: interface OrderWorkAddedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор работы */*   workId: number;   */** Название работы */*   name: string;   */** Количество */*   quantity: number;   */** Цена продажи */*   price: number;   */** Общая сумма (Quantity × Price) */*   total: number;   */** Себестоимость */*   costPrice: number;   */** Идентификатор исполнителя */*   userId: string;   */** Имя исполнителя */*   userName: string;   */** Идентификатор прайс-листа работ */*   priceWorkId: number;   */** Единица измерения гарантии */*   warrantyUnit: number;   */** Значение гарантии */*   warrantyValue: number; } Обновлена информация о работе event: order_work_updated data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "WorkId": 2001,   "Name": "Укладка ламината",   "Quantity": 30,   "Price": 150.00,   "Total": 4500.00,   "CostPrice": 100.00,   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "UserName": "Алексей Сидоров",   "PriceWorkId": 101,   "WarrantyUnit": 0,   "WarrantyValue": 7 } TypeScript интерфейс: interface OrderWorkUpdatedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор работы */*   workId: number;   */** Название работы */*   name: string;   */** Количество */*   quantity: number;   */** Цена продажи */*   price: number;   */** Общая сумма (Quantity × Price) */*   total: number;   */** Себестоимость */*   costPrice: number;   */** Идентификатор исполнителя */*   userId: string;   */** Имя исполнителя */*   userName: string;   */** Идентификатор прайс-листа работ */*   priceWorkId: number;   */** Единица измерения гарантии */*   warrantyUnit: number;   */** Значение гарантии */*   warrantyValue: number; } Работа удалена event: order_work_deleted data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "WorkId": 2001,   "Name": "Укладка ламината" } TypeScript интерфейс: interface OrderWorkDeletedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор работы */*   workId: number;   */** Название работы */*   name: string; } Назначен инженер event: order_engineer_assigned data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "EngineerId": "550e8400-e29b-41d4-a716-446655440012",   "EngineerName": "Сидоров Алексей Михайлович",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderEngineerAssignedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор инженера */*   engineerId: string;   */** Имя инженера */*   engineerName: string;   */** Идентификатор пользователя, выполнившего назначение */*   userId: string;   */** Время назначения */*   creationTime: string; } Назначен менеджер event: order_manager_assigned data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "ManagerId": "550e8400-e29b-41d4-a716-446655440013",   "ManagerName": "Петрова Анна Сергеевна",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderManagerAssignedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор менеджера */*   managerId: string;   */** Имя менеджера */*   managerName: string;   */** Идентификатор пользователя, выполнившего назначение */*   userId: string;   */** Время назначения */*   creationTime: string; } Обновлена локация event: order_location_updated data: {   "OrderIds": ["550e8400-e29b-41d4-a716-446655440000"],   "LocationId": "550e8400-e29b-41d4-a716-446655440014",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderLocationUpdatedData {   */** Массив идентификаторов заказов */*   orderIds: string[];   */** Идентификатор локации */*   locationId: string;   */** Идентификатор пользователя, выполнившего обновление */*   userId: string;   */** Время обновления */*   creationTime: string; } Создан платеж event: order_payment_created data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "PaymentId": "550e8400-e29b-41d4-a716-446655440015",   "Amount": 5000.00,   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderPaymentCreatedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор платежа */*   paymentId: string;   */** Сумма платежа */*   amount: number;   */** Идентификатор пользователя, создавшего платеж */*   userId: string;   */** Время создания платежа */*   creationTime: string; } Платеж удален event: order_payment_deleted data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "PaymentId": "550e8400-e29b-41d4-a716-446655440016",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderPaymentDeletedData {   */** Идентификатор заказа */*   orderId: string;   */** Идентификатор платежа */*   paymentId: string;   */** Идентификатор пользователя, удалившего платеж */*   userId: string;   */** Время удаления платежа */*   creationTime: string; } Обновлен срок выполнения event: order_due_date_updated data: {   "OrderId": "550e8400-e29b-41d4-a716-446655440000",   "DueDate": "2024-12-31T10:00:00Z",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface OrderDueDateUpdatedData {   */** Идентификатор заказа */*   orderId: string;   */** Новый срок выполнения в формате ISO 8601 */*   dueDate: string;   */** Идентификатор пользователя, обновившего срок */*   userId: string;   */** Время обновления срока */*   creationTime: string

Обновлено Dec 17, 2025

Webhook - Клиенты

Создан новый клиент event: customer_created data: {   "Id": "3a1e3499-3eb7-6dd3-4bc8-950d51c4d506",   "Name": "Test Q.A.+++",   "Source": "Рекомендации клиентов",   "Email": null,   "AllowNotify": true,   "Groups": [     {       "Title": "Группа 123",       "Color": "#C0382B"     },     {       "Title": "Group X",       "Color": "#ff0040"     }   ],   "Phones": [     {       "Id": 60525,       "PhoneNumber": "+7 796 167 81448"     }   ],   "Type": 0,   "CreationTime": "2025-12-15T17:31:29.81687",   "TotalBalance": 0,   "IsBalanceOperationAllowed": false } TypeScript интерфейс: interface CustomerCreatedData {   */** Идентификатор клиента */*   id: string;   */** Имя клиента */*   name: string;   */** Источник клиента */*   source: string;   */** Email клиента */*   email: string | null;   */** Разрешение на уведомления */*   allowNotify: boolean;   */** Группы клиента */*   groups: Array<{     title: string;     color: string;   }>;   */** Телефоны клиента */*   phones: Array<{     id: number;     phoneNumber: string;   }>;   */** Тип клиента */*   type: number;   */** Время создания клиента */*   creationTime: string;   */** Общий баланс */*   totalBalance: number;   */** Разрешены ли операции с балансом */*   isBalanceOperationAllowed: boolean; } Добавлен комментарий event: customer_comment_added data: {   "CustomerId": "3a1e3499-3eb7-6dd3-4bc8-950d51c4d506",   "CommentId": 2001,   "Text": "Клиент интересовался статусом ремонта",   "IsPrivate": false } TypeScript интерфейс: interface CustomerCommentAddedData {   */** Идентификатор клиента */*   customerId: string;   */** Идентификатор комментария */*   commentId: number;   */** Текст комментария */*   text: string;   */** Признак приватности комментария */*   isPrivate: boolean; } Клиент удален event: customer_deleted data: {   "CustomerId": "550e8400-e29b-41d4-a716-446655440021",   "CustomerName": "Петров Петр Петрович",   "UserId": "550e8400-e29b-41d4-a716-446655440001",   "CreationTime": "2024-12-17T10:00:00Z" } TypeScript интерфейс: interface CustomerDeletedData {   */** Идентификатор клиента */*   customerId: string;   */** Имя клиента */*   customerName: string;   */** Идентификатор пользователя, удалившего клиента */*   userId: string;   */** Время удаления клиента */*   creationTime: string; }

Обновлено Dec 17, 2025

Интеграция с банком «Точка»

Общая информация Интеграция с банком «Точка» подключает ваш расчётный счёт к vlApp, чтобы поступления учитывались автоматически. Операции из выписки сами становятся оплатами в кассе, привязываются к счетам на оплату и отмечают связанные заказы. Раздел находится в «Настройки › Интеграции › Банки». Как включить 1. Откройте «Настройки › Интеграции» и в группе «Банки» нажмите «Настроить» на карточке «Точка Банк». 2. Скопируйте адрес из поля «Redirect URI» и укажите его при регистрации приложения в кабинете «Точки». 3. Впишите «Client ID» и «Client Secret», полученные в кабинете «Точки», и нажмите «Сохранить реквизиты». 4. Нажмите «Подключить» и разрешите доступ к счёту. После этого привяжите банковский счёт к нужной кассе. Как пользоваться После подключения ничего делать вручную не нужно: - поступления по счёту сами становятся оплатами в привязанной кассе; - оплаты сопоставляются со счетами на оплату — счёт получает статус «Оплачен» или «Оплачен частично», а связанные заказы отмечаются автоматически; - переводы между вашими собственными счетами учитываются как перемещение, а не как доход и расход; - выписка синхронизируется в фоне, и по завершении приходит уведомление. Чтобы синхронизировать выписку вручную, откройте карточку интеграции и нажмите «Синхронизировать». Важно - Для подключения нужны права администратора и доступ к настройкам. - Один банковский счёт привязывается к одной кассе — проверьте привязку перед первой синхронизацией. - Платежи, которые система не смогла сопоставить со счётом, остаются для ручного разнесения.

Обновлено Jul 16, 2026

Telegram-бот компании

Общая информация Собственный Telegram-бот позволяет отправлять клиентам уведомления и вести самообслуживание от имени вашего бренда, а не от общего бота vlApp. Клиент видит имя и аватар вашего бота. Раздел находится в «Настройки › Интеграции › Мессенджеры». Как включить 1. Создайте бота в Telegram через @BotFather и скопируйте его токен. 2. Откройте «Настройки › Интеграции» и в группе «Мессенджеры» нажмите «Настроить» на карточке «Telegram-бот». 3. Вставьте токен в поле «Токен бота». 4. При необходимости заполните поле «Приветствие» — текст, который увидит клиент при первом обращении. 5. Включите переключатель «Включён» и нажмите «Проверить», а затем «Сохранить». Как пользоваться После подключения уведомления о статусе заказа и сообщения поддержки уходят клиентам через вашего бота. Ссылки-привязки чата с клиентом также ведут на вашего бота. В карточке видны текущий статус бота, признак того, что токен задан, и регистрация вебхука. Важно - Если свой бот не настроен или выключен, всё продолжает работать через общий бот vlApp. - Токен бота хранится в зашифрованном виде и в карточке отображается скрытым. - Кнопка «Проверить» помогает убедиться, что токен верный, до сохранения.

Обновлено Jul 16, 2026

SMS-шлюз Eskiz.uz

Общая информация Eskiz.uz — SMS-шлюз для отправки сообщений клиентам в Узбекистане: дешёвая доставка на узбекские номера и буквенные отправители. Это пятый шлюз в системе. Раздел находится в «Настройки › Интеграции › SMS». Как включить 1. Откройте «Настройки › Интеграции» и в группе «SMS» нажмите «Настроить» на карточке «Eskiz.uz». 2. Укажите «E-mail» и «Секретный ключ» . Получение секретного ключа: 3. В поле «Отправитель» впишите зарегистрированное имя отправителя. 4. Нажмите «Проверить подключение», затем включите переключатель «Состояние» и сохраните. Как пользоваться После включения SMS-уведомления клиентам (например, о статусе заказа) отправляются через Eskiz.uz по правилам ваших уведомлений. Важно - «E-mail» — обязательное поле. - Имя отправителя должно быть заранее зарегистрировано у провайдера. - Кнопка «Проверить подключение» помогает убедиться, что реквизиты верны, до включения шлюза.

Обновлено Jul 16, 2026

Голосовые оповещения

Общая информация Голосовые оповещения проговаривают события вслух прямо в мастерской: «Новый заказ номер 1234, мастер Иванов». Мастеру не нужно смотреть в монитор или телефон — он слышит, что пришел заказ или сменился статус, и продолжает работать руками. Как это устроено: 1. Событие (новый заказ, смена статуса, назначена задача, срочный комментарий) попадает в правила оповещений. 2. В правиле выбран канал «Голосовое оповещение». 3. Сервер синтезирует речь через Yandex SpeechKit — голосом Алисы. 4. Готовое аудио уходит на устройство-диктор — это открытая на киоск-экране, планшете или Android-боксе страница, которая проигрывает объявления вслух. Что нужно настроить 1. Зарегистрировать устройство-диктор и привязать к нему колонку. 2. Настроить правила оповещений с каналом «Голосовое оповещение». Шаг 1. Карточка интеграции Настройка доступна пользователям с правом на раздел настроек. 1. В главном меню откройте «Настройки» → «Интеграции». 2. Найдите в группе «Другое» карточку «Голосовые оповещения» и нажмите «Настроить». Справа откроется панель настроек. Синтез речи (Yandex SpeechKit) - «Голос» — каким голосом говорит система. Список подписан по полу: «alena — женский», «ermil — мужской» и так далее. Оставьте пустым, чтобы использовать голос по умолчанию (alena). - «Темп речи» — ползунок скорости. В шумной мастерской чуть медленнее обычно разборчивее. Расход синтеза речи Блок «Расход синтеза речи» показывает, сколько синтеза израсходовано в этом месяце: «Израсходовано 0 из 1000 блоков» и дата обновления счетчика — «Обновится 01.10.2026». Единица учета — блок, это 250 символов текста. Подсказка рядом: «Блок — 250 символов текста. Одно объявление обычно занимает 1 блок.» То есть 1000 блоков — это примерно тысяча объявлений в месяц. Когда лимит исчерпан, объявления не пропадают: они доставляются на устройство текстом и проговариваются встроенным голосом самого устройства — просто не голосом Алисы. Если синтез не входит в ваш тариф, вместо цифр будет надпись «Синтез речи не входит в ваш тарифный план» и подсказка о смене тарифа. Шаг 2. Устройство-диктор Устройство-диктор — это сущность в vlApp, которая описывает одну «говорящую точку»: колонку в цехе, планшет на приемке, экран в зале. Создание В блоке «Устройства-дикторы» нажмите «Добавить устройство». | Поле | Зачем | | -------------------------------- | ----------------------------------------------------------------------------------------- | | «Название» | Обязательное. Как вы узнаете устройство в списке: «Колонка в цехе», «Приемка» | | «Локация» | Филиал, события которого озвучиваются. Пусто — устройство озвучивает события всех локаций | | «Пользователи» | Сотрудники, чьи события озвучиваются. Пусто — события всех сотрудников | | «Фильтр событий» | Какие события проговаривать. Пусто — все, что до устройства дошло | | «Громкость» | Громкость проигрывания, 0–100 | | «Тишина с» / «Тишина до» | Интервал, когда устройство молчит — например обед или ночь | | «Способ доставки» | Куда отправлять объявление, см. ниже | Тихие часы задаются парой: либо обе границы, либо ни одной. Иначе форма выдаст «Тихие часы задаются парой: укажите обе границы или ни одной.» Нажмите «Сохранить» — устройство появится в списке. Способ доставки - «Клиент-диктор (страница vlApp)» — основной вариант. Объявления проигрывает открытая на устройстве веб-страница. - «Яндекс.Станция» — экспериментальный канал: объявление проговаривает сама умная колонка Яндекса. Требует токена аккаунта Яндекса, работает через неофициальный API. В этом режиме синтез SpeechKit не расходуется — говорит сама Алиса на стороне колонки. Привязка колонки Чтобы устройство заговорило, страницу-диктор нужно один раз привязать. 1. В карточке устройства нажмите «Подключить» (позже кнопка называется «Код привязки»). 2. Откроется окно «Привязка устройства» с крупным кодом и QR-кодом. 3. На самом устройстве отсканируйте QR или откройте ссылку — страница привяжется сама. Код можно ввести и вручную. Кнопка «Скопировать ссылку» копирует адрес страницы-диктора вместе с кодом — удобно отправить его в мессенджере на планшет. Если код уже использован, окно скажет: «Код уже использован. Сформируйте новый, чтобы привязать другое устройство.» Кнопка «Сформировать новый код» выдает новый код; прежний перестает действовать сразу, но уже привязанная колонка продолжает работать, пока по новому коду не привяжется другая. Код привязки — это ключ доступа к вашим оповещениям. Не публикуйте его и не показывайте на общих экранах. Список устройств В карточке видно название, состояние и настройки. Состояния: | Бейдж | Что значит | | -------------------- | --------------------------------------------------------------------------- | | «В сети» | Страница-диктор открыта и на связи | | «Не в сети» | Страница закрыта, устройство выключено или нет интернета | | «Выключено» | Устройство отключено в настройках — объявления не приходят | | «Яндекс.Станция» | Доставка в Станцию; присутствия у нее нет, поэтому «в сети» не показывается | Кнопки в карточке: - «Тест» — отправить проверочное объявление. Самый быстрый способ убедиться, что колонка слышна из другого конца цеха. - «Редактировать» — изменить настройки. - «Удалить» — убрать устройство. Если оно сейчас в сети, система переспросит: «Устройство сейчас в сети и продолжает озвучивать события. Удалить его?» Шаг 3. Правила оповещений Само по себе устройство ничего не скажет — нужно правило, которое отправит на него событие. 1. В главном меню откройте «Настройки» → «Уведомления». 2. Выберите вкладку с нужным разделом: «Заказы», «Обращения», «Товары», «Задачи». 3. Нажмите «Создать». 4. Выберите событие, а в поле «Способ уведомления» — «Голосовое оповещение». 5. Укажите цель и сохраните. Кому адресовать У голосового канала цель работает не так, как у почты — «получателя-человека» здесь нет: - «Устройства-дикторы» — объявление звучит на всех устройствах филиала, без привязки к конкретному сотруднику; - цель-сотрудник — озвучат только те устройства, за которыми этот сотрудник закреплен в поле «Пользователи». Подсказка в интерфейсе формулирует это так: «Объявление прозвучит на устройствах-дикторах выбранного филиала, а если филиал не задан — филиала самой записи.» Цели «Клиент» и «Группа в Telegram» для голосового канала недоступны — клиенту в мастерскую колонку не поговоришь. Отдельный случай — задачи: у правил задач филиал не задается, поэтому объявление уходит на устройства-дикторы всех филиалов. Сузить круг можно только целью-сотрудником. Как запустить диктор в мастерской 1. Откройте на устройстве ссылку из окна привязки (или отсканируйте QR). 2. Введите код, если открывали ссылку без него. 3. Нажмите на странице любую кнопку — например «Тест». Это нужно один раз: браузеры не дают проигрывать звук, пока пользователь ничего не нажал. 4. Разверните страницу на весь экран и оставьте открытой. Дальше устройство работает само: держит соединение, переподключается при обрыве, не дает экрану заснуть и проигрывает объявления по очереди — срочные вперед. Практические советы: - Планшет или бокс лучше держать на постоянном питании. - Проверьте слышимость кнопкой «Тест» с рабочего места мастера, а не от стойки. - Если в цехе шумно, снизьте темп речи в настройках и поднимите громкость устройства. Важно - Код привязки — ключ доступа. Не публикуйте его. Если код мог попасть к посторонним, нажмите «Сформировать новый код». - Устройство-диктор должно оставаться открытым. Закрыли вкладку — статус станет «Не в сети», объявления копятся и проигрываются после возвращения в сеть. - Первое нажатие на странице обязательно — без него браузер не даст звука. - Лимит синтеза считается по тенанту помесячно. Исчерпали — объявления продолжают приходить, но озвучиваются голосом самого устройства. - Тихие часы задаются парой значений, иначе форма не сохранится. - Пустые поля «Локация», «Пользователи», «Фильтр событий» означают «без ограничений» — устройство озвучит все, что до него дошло. - «Яндекс.Станция» — экспериментальный канал на неофициальном API; он может перестать работать без предупреждения. - Настройка доступна только пользователям с правом на раздел настроек.

Обновлено Sep 01, 2026