Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Построение пайплайна CI/CD в GitLab
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Визуализация логов в Grafana с помощью плагина Cloud Logging
    • Канареечный релиз функции Cloud Functions
    • Интерактивная отладка функций Cloud Functions
    • Создание функции Node.js с помощью TypeScript
    • Запуск контейнерного приложения в Serverless Containers
    • Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
    • Использование API Gateway для настройки синтеза речи в SpeechKit
    • Подключение к YDB из функции Cloud Functions на Python
    • Подключение к базе данных YDB из функции Cloud Functions на Node.js
    • Защита API Gateway при помощи Smart Web Security
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows
    • Настройка реагирования в Cloud Logging и Yandex Cloud Functions
    • Настройка интеграций Workflows с Tracker, YandexGPT и Yandex Cloud Postbox
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисные аккаунты
  • Создайте API-ключ для сервисного аккаунта
  • Создайте пространство
  • Добавьте сервисный аккаунт в пространство
  • Создайте подключение
  • Создайте проект
  • Создайте инфраструктуру
  • Создайте секрет
  • Создайте модель данных
  • Создайте папки для хранения файлов и их метаданных
  • Подготовьте метаданные
  • Загрузите файлы
  • Проверьте результат
  • Удалите ресурсы
  1. Бессерверные технологии
  2. Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows

Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 29 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
    • Создайте сервисные аккаунты
    • Создайте API-ключ для сервисного аккаунта
    • Создайте пространство
    • Добавьте сервисный аккаунт в пространство
    • Создайте подключение
    • Создайте проект
  • Создайте инфраструктуру
  • Создайте секрет
  • Создайте модель данных
  • Создайте папки для хранения файлов и их метаданных
  • Подготовьте метаданные
  • Загрузите файлы
  • Проверьте результат
  • Удалите ресурсы

Примечание

Workflows находится на стадии Preview. Чтобы получить доступ, отправьте заявку в консоли управления.

Вы можете настроить автоматическую загрузку файлов с диалогами и их метаданными из бакета Object Storage в пространство SpeechSense. Поддерживаемые форматы:

  • MP3, WAV, OggOpus — для аудиозаписей;
  • JSON — для переписки из чата.

На схеме:

  1. Триггер для Object Storage отслеживает появление новых JSON-файлов с метаданными в выделенной папке бакета или любой из ее подпапок.
  2. Когда в папке появляются новые файлы, триггер вызывает функцию workflow-call, которая запускает рабочий процесс Workflows.
  3. Рабочий процесс получает содержимое JSON-файлов с метаданными и проверяет их синтаксис с помощью функции verify-file.
  4. Рабочий процесс получает параметры подключения SpeechSense из секрета Yandex Lockbox.
  5. Путь к аудиозаписи или текстовому файлу, а также их метаданные передаются в функцию загрузки speechsense-upload.
  6. Функция speechsense-upload загружает файлы и их метаданные в пространство SpeechSense.
  7. Во время выполнения рабочий процесс обращается к БД с метаданными:
    1. Логируются ошибки синтаксиса в файлах с метаданными.
    2. Логируются ошибки синтаксиса записей в файлах с метаданными.
    3. Проводится проверка на дубликаты: перед вызовом функции speechsense-upload проверяется, загружен ли уже файл в это пространство SpeechSense.
    4. Логируются ошибки функции speechsense-upload.
    5. При успешной загрузке файла логируются его метаданные и уникальный идентификатор в пространстве SpeechSense.
  8. Сервис WebSQL позволяет получить доступ к БД с метаданными. Для просмотра используется один пользователь БД, а для загрузки файлов — другой.

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

Чтобы автоматизировать загрузку данных в SpeechSense:

  1. Подготовьте облако к работе.
  2. Создайте инфраструктуру для загрузки файлов.
  3. Создайте секрет Yandex Lockbox.
  4. Создайте модель данных в кластере Managed Service for PostgreSQL.
  5. Создайте в бакете Object Storage папки для хранения файлов и их метаданных.
  6. Подготовьте метаданные.
  7. Загрузите файлы в бакет Object Storage.
  8. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость ресурсов входят:

  • плата за хранение данных в бакете и операции с ними (см. тарифы Yandex Object Storage);
  • плата за использование кластера (см. тарифы Yandex Managed Service for PostgreSQL);
  • плата за вызовы функций (см. тарифы Yandex Cloud Functions);
  • плата за хранение секрета и запросы к нему (см. тарифы Yandex Lockbox).

Создайте сервисные аккаунтыСоздайте сервисные аккаунты

Создайте два сервисных аккаунта:

  • deploy-sa — от его имени будет создаваться инфраструктура.

  • speechsense-sa — от его имени будут вызываться функции и запускаться рабочий процесс.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите нужный каталог.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: deploy-sa.
  5. Нажмите кнопку Добавить роль и выберите роли: functions.admin, storage.editor, iam.editor, mdb.admin, serverless.workflows.admin.
  6. Нажмите кнопку Создать.
  7. Повторите предыдущие шаги и создайте сервисный аккаунт speechsense-sa c ролями storage.viewer, functions.functionInvoker, functions.mdbProxiesUser, lockbox.payloadViewer, serverless.workflows.executor.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Создайте сервисный аккаунт deploy-sa:

    yc iam service-account create deploy-sa
    

    Результат:

    id: nfersamh4sjq********
    folder_id: b1gc1t4cb638********
    created_at: "2023-09-21T10:36:29.726397755Z"
    name: deploy-sa
    

    Сохраните идентификатор сервисного аккаунта deploy-sa (id) и каталога, в котором его создали (folder_id).

    Подробнее о команде yc iam service-account create читайте в справочнике CLI.

  2. Назначьте сервисному аккаунту deploy-sa роли functions.admin, storage.editor, iam.editor, mdb.admin, serverless.workflows.admin на каталог, указав сохраненные ранее идентификаторы каталога и сервисного аккаунта:

    yc resource-manager folder add-access-binding <идентификатор_каталога> \
      --role <роль> \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Команда принимает только одну роль за раз.

    Подробнее о команде yc resource-manager folder add-access-binding читайте в справочнике CLI.

    Если вы будете создавать секрет Yandex Lockbox через Yandex Cloud CLI от имени сервисного аккаунта deploy-sa, также назначьте ему роль lockbox.editor.

  3. Повторите предыдущие шаги и создайте сервисный аккаунт speechsense-sa c ролями storage.viewer, functions.functionInvoker, functions.mdbProxiesUser, lockbox.payloadViewer, serverless.workflows.executor.

Чтобы создать сервисный аккаунт, воспользуйтесь методом create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService.Create.

Чтобы назначить сервисному аккаунту deploy-sa роли functions.admin, storage.editor, iam.editor, mdb.admin и serverless.workflows.admin, воспользуйтесь методом setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService.SetAccessBindings.

Таким же способом назначьте сервисному аккаунту speechsense-sa роли storage.viewer, functions.functionInvoker, functions.mdbProxiesUser, lockbox.payloadViewer, serverless.workflows.executor.

Создайте API-ключ для сервисного аккаунтаСоздайте API-ключ для сервисного аккаунта

Создайте API-ключ для сервисного аккаунта speechsense-sa.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления перейдите в каталог, в котором находится сервисный аккаунт.

  2. В списке сервисов выберите Identity and Access Management.

  3. На панели слева выберите Сервисные аккаунты.

  4. Выберите сервисный аккаунт speechsense-sa.

  5. На панели сверху нажмите кнопку Создать новый ключ и выберите пункт Создать API-ключ.

  6. Нажмите кнопку Создать.

  7. Сохраните идентификатор и секретный ключ.

    Внимание

    После закрытия диалога значение ключа будет недоступно.

Создайте API-ключ для сервисного аккаунта speechsense-sa и запишите ответ в файл api_key.yaml:

yc iam api-key create \
  --service-account-name speechsense-sa \
  > api_key.yaml

В результате вы получите файл api_key.yaml, который содержит значение API-ключа в поле secret:

api_key:
  id: ajeke74kbp5b********
  service_account_id: ajepg0mjt06s********
  created_at: "2019-04-09T08:41:27Z"
secret: AQVN1HHJReSrfo9jU3aopsXrJyfq_UHs********

Создайте API-ключ с помощью метода REST API create для ресурса ApiKey:

export SERVICEACCOUNT_ID=<идентификатор_сервисного_аккаунта>
export IAM_TOKEN=<токен>
curl \
  --request POST \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer $IAM_TOKEN" \
  --data "{ \"serviceAccountId\": \"$SERVICEACCOUNT_ID\" }" \
  https://iam.api.cloud.yandex.net/iam/v1/apiKeys

Где:

  • SERVICEACCOUNT_ID — идентификатор сервисного аккаунта.
  • IAM_TOKEN — IAM-токен.

Также API-ключ можно создать с помощью вызова gRPC API ApiKeyService.Create.

Создайте пространствоСоздайте пространство

Интерфейс SpeechSense
  1. Откройте главную страницу SpeechSense.
  2. Нажмите кнопку Создать пространство.
  3. Введите название пространства.
  4. Нажмите кнопку Создать.

Добавьте сервисный аккаунт в пространствоДобавьте сервисный аккаунт в пространство

Добавьте сервисный аккаунт speechsense-sa в пространство SpeechSense.

Интерфейс SpeechSense
  1. Откройте главную страницу SpeechSense.
  2. Перейдите в новое пространство.
  3. Нажмите кнопку Добавить участника → Добавить из организации.
  4. Cкопируйте идентификатор созданного ранее сервисного аккаунта speechsense-sa и вставьте в строку поиска.
  5. Выберите сервисный аккаунт speechsense-sa и укажите роль Data editor. Эта роль позволит сервисному аккаунту speechsense-sa загружать данные в SpeechSense.
  6. Нажмите кнопку Добавить.

Создайте подключениеСоздайте подключение

В зависимости от типа файлов, которые будут загружаться в SpeechSense, создайте подключение для аудио или для чата.

Создайте подключение для аудиоСоздайте подключение для аудио

Интерфейс SpeechSense
  1. Откройте главную страницу SpeechSense.

  2. Перейдите в нужное пространство.

  3. В правом верхнем углу нажмите Еще → Создать подключение.

  4. Укажите название подключения.

  5. Выберите тип данных Двухканальное аудио.

  6. В блоках Оператор, Клиент:

    1. Укажите каналы, в которых записаны голос оператора и голос клиента.
    2. Укажите для оператора и клиента ключи из файла метаданных. Этот файл содержит информацию о звонке, полученную из CRM-систем, АТС или других источников.

    По умолчанию в подключение добавлены ключи с именем и идентификатором оператора и клиента. В поле Название в системе введите название, под которым ключ будет отображаться в SpeechSense.

    Чтобы указать дополнительные метаданные для оператора и клиента, нажмите кнопку Добавить ключ.

  7. В блоке Общие метаданные укажите не связанные с оператором и клиентом ключи из файла метаданных.

    По умолчанию в подключение добавлены ключи с датой, направлением звонка и языком диалога. В поле Название в системе введите название, под которым ключ будет отображаться в SpeechSense.

    Чтобы указать дополнительные метаданные, нажмите кнопку Добавить ключ.

  8. Нажмите кнопку Создать подключение.

Создайте подключение для чатаСоздайте подключение для чата

Интерфейс SpeechSense
  1. Откройте главную страницу SpeechSense.

  2. Перейдите в нужное пространство.

  3. В правом верхнем углу нажмите Еще → Создать подключение.

  4. Укажите название подключения.

  5. Выберите тип данных Чат.

  6. В блоках Оператор, Клиент, Бот укажите ключи из файла метаданных. Этот файл содержит информацию о диалоге, полученную из чатов, CRM-систем или других источников.

    По умолчанию в подключение добавлены ключи с именем и идентификатором оператора, клиента и бота. В поле Название в системе введите название, под которым ключ будет отображаться в SpeechSense.

    Чтобы указать дополнительные метаданные для оператора, клиента и бота, нажмите кнопку Добавить ключ.

  7. В блоке Общие метаданные укажите не связанные с оператором, клиентом и ботом ключи из файла метаданных.

    По умолчанию в подключение добавлены ключи с датой, направлением и языком диалога. В поле Название в системе введите название, под которым ключ будет отображаться в SpeechSense.

    Чтобы указать дополнительные метаданные, нажмите кнопку Добавить ключ.

  8. Нажмите кнопку Создать подключение.

Создайте проектСоздайте проект

Интерфейс SpeechSense
  1. Откройте главную страницу SpeechSense.
  2. Перейдите в нужное пространство.
  3. Нажмите кнопку Создать проект.
  4. Введите имя проекта.
  5. В блоке Подключение нажмите Добавить подключение и выберите подключение, созданное ранее.
  6. Нажмите кнопку Создать проект.

Создайте инфраструктуруСоздайте инфраструктуру

  1. Склонируйте репозиторий yc-serverless-speechsense-workflows:

    git clone https://github.com/yandex-cloud-examples/yc-serverless-speechsense-workflows.git
    

    В репозитории находится скрипт, который создаст в облаке инфраструктуру, необходимую для загрузки файлов в SpeechSense:

    • бакет Object Storage;
    • кластер Managed Service for PostgreSQL;
    • функции Cloud Functions;
    • триггер для вызова функции Cloud Functions;
    • рабочий процесс Workflows;
    • подключения к базе данных кластера Managed Service for PostgreSQL.
  2. Для успешной работы скрипта настройте аутентификацию Yandex Cloud CLI от имени сервисного аккаунта deploy-sa:

    Yandex Cloud CLI
    1. Создайте авторизованный ключ для сервисного аккаунта deploy-sa и запишите его в файл:

      yc iam key create --output <путь_к_файлу_ключа> --service-account-name deploy-sa
      

      Где --output — путь к файлу для записи авторизованного ключа в формате JSON.

      Результат:

      id: aje4lue48687********
      service_account_id: ajeb9l33h6m********
      created_at: "2024-08-01T11:58:52.313177213Z"
      key_algorithm: RSA_2048
      

      Подробнее о команде yc iam key create см. в справочнике CLI.

    2. Создайте профиль, который будет использоваться для выполнения операций от имени сервисного аккаунта deploy-sa:

      yc config profile create <имя_профиля>
      
    3. Укажите в конфигурации профиля авторизованный ключ сервисного аккаунта deploy-sa:

      yc config set service-account-key <путь_к_файлу_ключа>
      
  3. Перейдите в папку с репозиторием и запустите скрипт:

    Bash
    cd deploy && bash deploy.sh
    

    В командной строке введите идентификатор каталога, имя сервисного аккаунта speechsense-sa, от которого будут вызываться функции и запускаться рабочий процесс, и имя бакета.

    Примерное время выполнения скрипта — 10-15 минут.

Создайте секретСоздайте секрет

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог, в котором хотите создать секрет.

  2. В списке сервисов выберите Lockbox.

  3. Нажмите кнопку Создать секрет.

  4. В поле Имя укажите имя секрета: speechsense-secret.

  5. В блоке Данные секрета:

    1. Выберите тип секрета Пользовательский.

    2. Добавьте API-ключ сервисного аккаунта:

      • В поле Ключ укажите: speechsense_api_key.
      • В поле Значение укажите значение созданного ранее API-ключа сервисного аккаунта speechsense-sa.
    3. Нажмите кнопку Добавить ключ/значение и добавьте идентификатор подключения SpeechSense:

      • В поле Ключ укажите: speechsense_connection_id.
      • В поле Значение укажите идентификатор подключения, созданного ранее.
    4. Нажмите кнопку Добавить ключ/значение и добавьте формат файлов с диалогами, которые будут загружены в SpeechSense:

      • В поле Ключ укажите: speechsense_file_format.
      • В поле Значение укажите формат файла. Допустимые значения: mp3,wav,ogg, text.
  6. Нажмите кнопку Создать.

Чтобы создать секрет, выполните команду:

yc lockbox secret create --name speechsense-secret \
  --payload "[{'key': 'speechsense_api_key', 'text_value': '<API-ключ>'},{'key': 'speechsense_connection_id', 'text_value': '<идентификатор_подключения>'}, {'key': 'speechsense_file_format', 'text_value': '<формат_файлов>'}]"

Результат:

id: e6q2ad0j9b55********
folder_id: b1gktjk2rg49********
created_at: "2021-11-08T19:23:00.383Z"
name: speechsense-secret
status: ACTIVE
current_version:
  id: g6q4fn3b6okj********
  secret_id: e6e2ei4u9b55********
  created_at: "2023-03-21T19:23:00.383Z"
  status: ACTIVE
  payload_entry_keys:
    - speechsense_api_key
    - speechsense_connection_id
    - speechsense_file_format

Чтобы создать секрет, воспользуйтесь методом REST API create для ресурса Secret или вызовом gRPC API SecretService.Create.

Создайте модель данныхСоздайте модель данных

  1. В папке с репозиторием откройте файл pg_metadata.sql.

  2. В блоке, отвечающем за вставку данных в таблицу public.source_system, укажите значения параметров:

    insert into public.source_system(source_system_id, lockbox_secret_id, source_system_desc)
    values ('<идентификатор_источника>', '<идентификатор_секрета>', '<описание_источника>');
    

    Где:

    • source_system_id — идентификатор источника данных, который будет использоваться в метаданных. Укажите любое уникальное строковое значение. Например: 000001.
    • lockbox_secret_id — идентификатор секрета Yandex Lockbox, созданного ранее. Например: e6qigo0vbci2********.
    • source_system_desc — описание источника данных. Например: Загрузка данных телефонии.
  3. Скопируйте содержимое файла pg_metadata.sql и выполните получившийся запрос c помощью сервиса WebSQL:

    Консоль управления
    1. Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
    2. Нажмите на имя кластера, созданного ранее. По умолчанию это speechsense-upload-metadata.
    3. Выберите вкладку WebSQL.
    4. Нажмите на имя подключения, которое заканчивается на -uploader.
    5. На странице сервиса WebSQL нажмите на имя БД — uploader.
    6. Вставьте запрос в редактор и нажмите кнопку Выполнить.

Создайте папки для хранения файлов и их метаданныхСоздайте папки для хранения файлов и их метаданных

В созданном ранее бакете Object Storage создайте две папки:

  • client_data — для файлов с диалогами.
  • client_metadata — для файлов с метаданными.

Папки не должны быть вложены одна в другую.

Консоль управления
Yandex Cloud CLI
AWS CLI
API

Чтобы создать папку:

  1. В консоли управления выберите каталог, в котором находится бакет.
  2. В списке сервисов выберите Object Storage.
  3. Выберите нужный бакет.
  4. Нажмите Создать папку и укажите имя папки.
  5. Нажмите на кнопку Создать.

Чтобы создать папку, выполните команду:

yc storage s3api put-object \
  --bucket <имя_бакета> \
  --key <имя_папки>/

Результат:

etag: '"d41d8cd98f00b204e9800998********"'
request_id: ba96231*********

Если у вас еще нет интерфейса командной строки AWS CLI, установите и сконфигурируйте его.

Чтобы создать папку, выполните команду:

aws s3api put-object \
  --endpoint-url=https://storage.yandexcloud.net \
  --bucket <имя_бакета>
  --key <имя_папки>/

Результат:

{
"ETag": "\"d41d8cd98f00b204e9800998********\""
}

Чтобы создать папку, воспользуйтесь методом S3 API upload.

Подготовьте метаданныеПодготовьте метаданные

Примечание

Даты указываются в формате ISO 8601 UTC с нулевым смещением времени. Если необходимо указать московское время, добавьте +03:00 вместо Z в конец строки: 2025-04-24T14:34:19+03:00.

Чтобы загрузить файл в SpeechSense, подготовьте его метаданные в формате JSON. Например:

{
  "source_system_id": "000001",
  "bucket_folder": "bucket://client_data",
  "metadata": [
    {
      "id": "my_audio.ogg",
      "operator_id": "42",
      "operator_name": "Иван Петров",
      "client_id": "327142",
      "client_name": "Петр Иванов",
      "date": "2024-08-30T19:32:11Z",
      "direction_outgoing": "0",
      "language": "RU",
      "file_name": "my_audio.ogg"
    }
  ]
}

Где:

  • Параметры, которые используются функцией speechsense-upload для загрузки файлов:

    • source_system_id — идентификатор источника данных, указанный в таблице public.source_system.

    • bucket_folder — путь к созданной ранее папке для аудиозаписей или текстовых файлов.

    • file_name — имя файла, который будет загружен.

  • Параметры, обязательные для передачи в SpeechSense:

    • id — идентификатор файла, уникальный для пространства SpeechSense.

    • operator_id — идентификатор оператора.

    • operator_name — имя оператора.

    • client_id — идентификатор клиента

    • client_name — имя клиента.

    • date — дата и время звонка в формате YYYY-MM-DDTHH:MM:SSZ.

    • direction_outgoing — направление звонка. 0 — для исходящего звонка, 1 — для входящего.

    • language — язык диалога. RU — для русского языка.

  • Дополнительные параметры для аналитики в SpeechSense:

    • cpn_region_id — идентификатор региона.

    • cpn_region_name — название региона.

    cpn_region_id и cpn_region_name использованы в качестве примера. Дополнительные параметры могут быть другими.

Метаданные могут содержать одну запись или массив из нескольких записей.

Важно

Не передавайте больше 100 записей одновременно: это может привести к потере данных, так как время выполнения функции Cloud Functions ограничено таймаутом.

Если файлов для загрузки больше 100, разделите их метаданные на отдельные JSON-файлы по 100 записей.

Загрузите файлыЗагрузите файлы

Загрузите файлы с диалогами в папку client_data, а JSON-файлы с метаданными — в папку client_metadata.

Важно

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

Если файлов больше 1000, не используйте для загрузки консоль управления.

Консоль управления
Yandex Cloud CLI
AWS CLI
API

Чтобы загрузить файлы:

  1. В консоли управления в списке сервисов выберите Object Storage и перейдите в бакет, в который нужно загрузить файлы.
  2. На панели слева выберите Объекты.
  3. Перейдите в нужную папку, нажав на ее имя.
  4. Оказавшись в нужной папке, на верхней панели нажмите Загрузить.
  5. В появившемся окне выберите необходимые файлы и нажмите Открыть.
  6. Консоль управления отобразит все файлы, выбранные для загрузки, и предложит для каждого из них выбрать класс хранилища. Класс хранилища по умолчанию определяется настройкой бакета.
  7. Нажмите Загрузить.
  8. Обновите страницу.

В консоли управления информация о количестве объектов в бакете и занятом месте обновляется с задержкой в несколько минут.

Чтобы загрузить файл в папку, выполните команду:

yc storage s3api put-object \
  --body <путь_к_загружаемому_файлу> \
  --bucket <имя_бакета> \
  --key <имя_папки>/<имя_файла>

Где:

  • --body — путь к файлу, который нужно загрузить.
  • --bucket — имя бакета.
  • --key — путь к файлу в папке.

Результат:

etag: '"d41d8cd98f00b204e980099********"'
request_id: 3f2705f********

Чтобы загрузить один файл, выполните команду:

aws --endpoint-url=https://storage.yandexcloud.net/ \
  s3 cp <путь_к_загружаемому_файлу> s3://<имя_бакета>/<имя_папки>/<имя_файла>

Чтобы загрузить все файлы из локальной директории и вложенных в нее директорий, используйте команду:

aws --endpoint-url=https://storage.yandexcloud.net/ \
  s3 cp --recursive <путь_к_директории_с_загружаемыми_файлами>/ s3://<имя_бакета>/<имя_папки>/

Результат:

upload: <имя_файла> to <путь_к_файлу_в_бакете>

Чтобы загрузить файл, воспользуйтесь методом S3 API upload.

Совет

Чтобы ускорить обработку аудиозаписей, используйте файлы формата OggOpus. Файлы других форматов можно сконвертировать в OggOpus с помощью утилит FFmpeg или SoX.

Проверьте результатПроверьте результат

Чтобы проверить выполнение рабочего процесса:

Консоль управления
  1. В консоли управления в списке сервисов выберите Serverless Integrations.
  2. На панели слева выберите Workflows.
  3. Нажмите на имя рабочего процесса. По умолчанию это wf-speechsense-upload.
  4. Перейдите на вкладку Запуски.
  5. Убедитесь, что рабочий процесс находится в статусе Выполнен.

Чтобы проверить, что файлы загрузились в SpeechSense:

Консоль управления
  1. Откройте страницу сервиса WebSQL.

  2. В разделе Подключения выберите подключение speechsense-upload-metadata и БД uploader.

  3. Выберите схему public.

  4. В группе Таблицы выберите таблицу:

    • talk — для просмотра загруженных в SpeechSense метаданных. Если файл с диалогом загружен, в его метаданных должен быть указан идентификатор talk_id.
    • errors — для просмотра ошибок, если загрузить файлы не удалось.

Удалите ресурсыУдалите ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать.

  1. Удалите объекты в бакете Object Storage и сам бакет.

  2. Удалите кластер Managed Service for PostgreSQL.

  3. Удалите триггер для вызова функции Cloud Functions.

  4. Удалите функции Cloud Functions.

  5. Удалите подключениe к базе данных кластера Managed Service for PostgreSQL:

    1. В консоли управления перейдите в каталог, в котором хотите удалить подключение.
    2. Выберите сервис Cloud Functions.
    3. На панели слева выберите Подключения к БД.
    4. В строке с подключением speechsense-upload-metadata-connection нажмите и выберите Удалить.
    5. В открывшемся окне нажмите Удалить.
  6. Удалите рабочий процесс Workflows:

    1. В консоли управления перейдите в каталог, в котором хотите удалить рабочий процесс.
    2. Выберите сервис Serverless Integrations.
    3. На панели слева выберите Workflows.
    4. В строке с рабочим процессом wf-speechsense-upload нажмите и выберите Удалить.
    5. В открывшемся окне нажмите Удалить.

Была ли статья полезна?

Предыдущая
Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
Следующая
Настройка реагирования в Cloud Logging и Yandex Cloud Functions
Проект Яндекса
© 2025 ООО «Яндекс.Облако»