Звуковые файлы для воспроизведения при удержании абонентами домена (waitonhold_domain)

Обзор

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

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

Для кросс-доменных звонков мелодия удержания определяется доменом абонента, инициировавшего постановку на удержание.

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

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

Запросы

HTTP verb Endpoint Описание

POST

/rest/v1/fs/targets/waitonhold_domain

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

GET

/rest/v1/fs/targets/waitonhold_domain

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

GET

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

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

PUT

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

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

DELETE

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

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

HEAD

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

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


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

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

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

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

Запрос

Пример запроса
POST /rest/v1/fs/targets/waitonhold_domain 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="domain_hold_music.wav"
Content-Transfer-Encoding: binary

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

Ответ

Пример ответа
[
  {
    "name": "domain_hold_melody.wav",
    "size": 1277539,
    "status": "ok"
  },
  {
    "name": "nutcracker3.mp3",
    "size": 2186022,
    "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/waitonhold_domain HTTP/1.1

Ответ

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

[
  {
    "name": "domain_hold_melody.wav",
    "size": 1277539,
    "last_modified": "2025-11-15 13:26:03"
  },
  {
    "name": "nutcracker3.mp3",
    "size": 2186022,
    "last_modified": "2024-12-25 00:00:00"
  }
]

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

Запрос

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/waitonhold_domain/domain_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''domain_hold_music.wav

BINARY BODY OF 'domain_hold_music.wav'

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

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

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

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

Запрос

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

BINARY BODY OF 'domain_hold_music.wav'
Пример запроса (multipart)
PUT /rest/v1/fs/targets/waitonhold_domain/domain_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="domain_hold_music.wav"; filename="domain_hold_music.wav"
Content-Transfer-Encoding: binary

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

Ответ

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

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

Запрос

Пример запроса
DELETE /rest/v1/fs/targets/waitonhold_domain/domain_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/waitonhold_domain/domain_hold_music.wav?attachment=true HTTP/1.1

Ответ

Пример успешного ответа
HTTP/1.1 200 OK
content-type: audio/x-wav
last-modified: Sat, 15 Nov 2025 13:26:03 GMT
content-disposition: attachment; filename=domain_hold_melody.wav
content-length: 1277539
Пример неуспешного ответа
HTTP/1.1 404 Not Found