Общие звуковые файлы для воспроизведения при удержании (waitonholdcustom)

Обзор

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

Состав файлов произволен. При постановке на удержание воспроизводится случайный файл из каталога (а если каталог пуст, то из хранилища waitonhold).

Применяется, если для домена не установлены собственные мелодии через waitonhold_domain. Применение файлов происходит независимо от домена, которому принадлежат учетные записи абонентов звонка.

Каталог располагается в категории автоматически синхронизирующихся каталогов :SYNC.

Доступ к каталогу из сценариев происходит с помощью префикса категории каталогов ":SYNC_COMMON/wait/hold".

Запросы

HTTP verb Endpoint Описание

POST

/rest/v1/fs/targets/waitonholdcustom

Заливка группы файлов

GET

/rest/v1/fs/targets/waitonholdcustom

Получение списка файлов

GET

/rest/v1/fs/targets/waitonholdcustom/<filename>

Скачивание файла

PUT

/rest/v1/fs/targets/waitonholdcustom/<filename>

Перезаливка существующего файла

DELETE

/rest/v1/fs/targets/waitonholdcustom/<filename>

Удаление файла

HEAD

/rest/v1/fs/targets/waitonholdcustom/<filename>

Получение мета-информации о файле


Заливка группы файлов

Загрузка в коллекцию производится с помощью Content-Type: multipart/formdata.

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

Если файл с указанным именем уже существует, то он не сохраняется и возвращает ошибку. В зависимости от Content-Type и наличия успешно размещенных файлов в запросе может быть возвращен неудачный HTTP-ответ, либо информация о неудаче в теле HTTP-ответа 200 OK.

Запрос

Пример запроса
POST /rest/v1/fs/targets/waitonholdcustom HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e

-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="filename"; filename="hold_music.wav"
Content-Transfer-Encoding: binary

BINARY BODY OF 'hold_music.wav'
-----------boundary_69df8120352a996e--

Ответ

Пример ответа
[
  {
    "name": "01.mp3",
    "size": 70985,
    "status": "ok"
  },
  {
    "name": "hold_music.wav",
    "size": 1596292,
    "status": "ok"
  }
]

Получение списка файлов

Запрос

Table 1. Параметры запроса
Имя Тип Описание

filter

object

Фильтр по значениям полей.

mask

str

Список полей для вывода. Доступные поля для выдачи: name, size, last_modified.

offset

int

Смещение в списке файлов, подлежащих выдаче.

limit

int

Максимальное количество файлов в списке.

order

array<object|str>

Порядок сортировки файлов в списке.

Пример запроса
GET /rest/v1/fs/targets/waitonholdcustom HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "name": "F.zip",
    "size": 8411,
    "last_modified": "2019-09-20 10:30:43"
  },
  {
    "name": "Package.bin",
    "size": 12268,
    "last_modified": "2019-09-20 10:30:43"
  }
]

Скачивание файла

Запрос

Table 2. Параметры запроса
Имя Тип Описание

attachment

bool

Тип выдачи. По умолчанию false.

true – выдаётся с заголовком Content-Disposition: attachment; filename=filename.ext либо Content-Disposition: attachment; filename*=UTF-8''%d1%84%d0%b0%d0%b9%d0%bb.ext, где файл.ext – имя файла в кодировке UTF-8 и URLencoded.

false – выдается без заголовка Content-Disposition.

Пример запроса
GET /rest/v1/fs/targets/waitonholdcustom/hold_music.wav?attachment=true HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment; filename*=UTF-8''hold_music.wav

BINARY BODY OF 'hold_music.wav'

Перезаливка существующего файла

Производит замену файла.

Загрузка одного файла производится либо с помощью Content-Type: multipart/formdata, либо с произвольным Content-Type не являющимся мультипартом.

Если загрузка происходит с Content-Type: multipart/formdata, то будет сохранён только первый файл (первая часть имеющая поле filename в заголовке Content-Disposition), а само название файла будет проигнорировано.

Запрос

Пример запроса (octet-stream)
PUT /rest/v1/fs/targets/waitonholdcustom/hold_music.wav HTTP/1.1
Content-Type: application/octet-stream

BINARY BODY OF 'hold_music.wav'
Пример запроса (multipart)
PUT /rest/v1/fs/targets/waitonholdcustom/hold_music.wav HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e

-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="hold_music.wav"; filename="hold_music.wav"
Content-Transfer-Encoding: binary

BINARY BODY OF 'hold_music.wav'
-----------boundary_69df8120352a996e--

Ответ

Пример ответа
HTTP/1.1 204 No Content

Удаление файла

Запрос

Пример запроса
DELETE /rest/v1/fs/targets/waitonholdcustom/hold_music.wav HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 204 No Content

Получение мета-информации о файле

Возвращает мета-информацию о файле, содержащую в том числе размер в заголовке Content-Length.

Особенности

  • HTTP-ответ не содержит тела, несмотря на наличие заголовка Content-Length.

Запрос

Table 3. Параметры запроса
Имя Тип Описание

attachment

bool

Тип выдачи. По умолчанию false.

true – выдаётся с заголовком Content-Disposition: attachment; filename=filename.ext либо Content-Disposition: attachment; filename*=UTF-8''%d1%84%d0%b0%d0%b9%d0%bb.ext, где файл.ext – имя файла в кодировке UTF-8 и URLencoded.

false – выдается без заголовка Content-Disposition.

Пример запроса
HEAD /rest/v1/fs/targets/waitonholdcustom/hold_music.wav?attachment=true HTTP/1.1

Ответ

Пример успешного ответа
HTTP/1.1 200 OK
content-type: audio/x-wav
last-modified: Fri, 20 Sep 2019 09:26:44 GMT
content-disposition: attachment; filename=hold_music.wav
content-length: 1596292
Пример неуспешного ответа
HTTP/1.1 404 Not Found

См. также