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