API запрос для добавления звонков с хранением данных на S3

Для безопасного хранения данных в облачной системе можно использовать S3 совместимое хранилище. Такое есть у Yandex Cloud, AWS, selcdn и других провайдеров IaaS. При этом Qolio может иметь возможность проигрывать записи, которые хранятся в приватных бакетах. Для этого нужно настроить хранилище в вашем провайдере и прислать нам следующие данные:

  • Ссылку на вашу интеграцию

  • AWS_ACCESS_KEY_ID - Yandex или AWS S3 key, берется из кабинета IaaS.

  • AWS_SECRET_KEY - Yandex или AWS S3 secret берется из кабинета IaaS.

  • AWS_REGION - регион S3, в котором хранятся записи. Для Yandex S3 это значение всегда равно "ru-central1"

  • AWS_BUCKET_NAME - имя бакета S3, где лежат звонки

  • AWS_S3_ENDPOINT - endpoint самого S3, например для Yandex S3 он всегда такой "https://storage.yandexcloud.net"

Далее в документе будет рассказано, как написать скрипт, который будет выгружать эти данные

Пример выгрузки записей в S3

Для успешной работы Qolio должен принимать данные о телефонных звонках через API по http(s). Для упрощения работы используется "Custom HTTP интеграция", подробности о которой можно почитать тут.

В Qolio необходимо передавать следующие данные о звонках:

  • ID оператора в системе (operator_id) - это идентификатор оператора в системе, с которым связан звонок.

  • Длительность (duration) и направление звонка (direction)

  • Номер звонящего клиента (client_phone_number)

  • Uuid - идентификатор звонка (должен быть уникальным в системе)

  • URL Ссылку на запись разговора (media_url), по которой можно получить доступ к записи разговора. Эта ссылка будет передаваться в плеер сервиса Qolio после того, как будет подписана на стороне S3.

media_url в данном случае является ссылкой временного доступа которая генерируется с помощью s3 клиента. В текущем примере интеграции подразумевается что файл предварительно загружается на s3 совместимое хранилище (Yandex Cloud) и для его загрузки в Qolio cоздается ссылка временного доступа (presigned url)

Пример media_url: https://storage.yandexcloud.net/naumen-records/records/2021/05/21/telephony_1_piu_732460.mp3

Также есть возможность расширить набор этих данных через поле metacontent (custom_fields). Подробности можно прочитать в статье про Custom HTTP интеграцию.

Скрипт для загрузки телефонных звонков в Qolio

Важно! - Скрипт написан для python 2.7 Для версии Python 3+ будут отличаться импорты pip пакетов

Для коннекта к S3 используется boto3 пакет (хорошо документированный клиент для aws сервисов для python https://github.com/boto/boto3)

Для запуска скрипта

В этом скрипте есть следующие константы:

Константы

INTEGRATION_URL - Значение AUTHORIZATION_TOKEN берется из модального диалога интеграции (Токен интеграции).

AUTHORIZATION_TOKEN - Значение INTEGRATION_URL берется из модального диалога интеграции (URL интегрируемого приложения).

AWS_ACCESS_KEY_ID = Yandex S3 key берется из кабинета Yandex Cloud. AWS_SECRET_KEY = Yandex S3 secret берется из кабинета Yandex Cloud. AWS_REGION = "ru-central1" (для Yandex S3 всегда такой) AWS_BUCKET_NAME = имя бакета Yandex S3, где лежит звонок AWS_S3_ENDPOINT = "https://storage.yandexcloud.net" (для Yandex S3 всегда такой)

Описаний функций скрипта

Имя
Описание

main()

запускает скрипт

upload_file_to_aws_s3()

создает соединение через boto клиент к Yandex S3 сервису и загружает тестовый аудио файл в приватный бакет. возвращает ссылку на загруженный файл

create_presigned_url

создает ссылку доступа к файлу , при указании expiration аргумента создает временную ссылку

send_phone_call_to_dealapp

принимает ссылку на телефонный звонок, преобразует в JSON и отправляет на сервис Qolio

Last updated

Was this helpful?