> For the complete documentation index, see [llms.txt](https://help.axatel.by/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.axatel.by/administrirovanie-telefonnoi-stancii/api/obrabotka-faksov-servisom-aksatel.md).

# FAX API

![](/files/-MJ13IkJHMXTfrfV9Lzk)

## API управления

\
\
Внешние системы должны обращаться на адрес http(s)://fqdn\_ws\_role/api/token/v1/{token}/files/{command}

* **fqdn\_ws\_role** - адрес URL роли WS (Веб-сервера управления)
* **{token}** - значение локального токена из созданного публичного канала
* **{command}** - команда управления (описаны ниже)

## Команды управления

### Загрузка файлов в домен

#### upload

![](/files/-MP0wCT3BJG3onLqRyrf)

&#x20;http(s)://fqdn\_ws\_role/api/token/v1/{token}/files/upload\
&#x20;**Метод** - POST\
&#x20;**Content-Type** - multipart/form-data\
&#x20;**Body** -  Form  \
\
В ответе json приходит результат загрузки файла. \
\
Успешный ответ содержит "resultcode": 0, "resultmsg": "OK". \
\
Пример успешного ответа:

```
{
"resultcode": 0,
"resultmsg": "OK",
"data":{
"upload":[
{
"name": "002.mp3",
"res": "ok"
}
]
}
}
```

Неуспешный ответ содержит код ошибки и ее описание.

&#x20;Пример неуспешного ответа:

```
{ 
 "resultcode": 1501,
  "resultmsg": "Not enough free disk space"
 }
```

&#x20;

### Получение списка файлов.&#x20;

#### list

![](/files/-MJ1gRLeeyf7xMj7ZdwG)

&#x20;http(s)://fqdn\_ws\_role/api/token/v1/{token}/files/list

Метод - GET

&#x20;В ответе json с полным списком файлов следующего вида

```
{
 "resultcode": 0,
  "resultmsg": "OK",
   "data": { "files": [ 
   {
    "file": {
     "name": "205-a10-02.zip"
    }
     },
      { 
      "file": {
       "name": "queue_wait_sgk.mp3" 
       }
      }
    ] 
  } 
}
```

### Скачивание файла в браузере.

#### download

![](/files/-MJ1gE3zOSd7J9jZtRAo)

&#x20;http(s)://fqdn\_ws\_role/api/token/v1/{token}/files/download?file={filename}

&#x20;Метод - GET\
{filename} - имя файла для скачивания

Пример успешного ответа:

![](/files/-MP0x1p6qKDyXIqN1nAk)

{% hint style="info" %}
Скачанный файл будет иметь название **download** и не будет иметь расширения.\
Чтобы открыть этот файл нужно будет изменить его расширение на указанное в запросе.
{% endhint %}

### &#x20;Удаление файла.

#### delete

![](/files/-MJ1glZ42RBd3jTsRVoX)

&#x20;http(s)://fqdn\_ws\_role/api/token/v1/{token}/files/delete?file={filename}<br>

Метод - GET\
{filename} - имя файла для удаления

Хранение файла и получение доступа из сценариев Файл хранится в директории **fsync** домена в поддиректории **/data/tokens/**.

Пример ...**/syncfolder/domains/domain.demo.axatell/data/tokens/205-a10-02.zip**\
Для получения доступа к файлу в IVR/SVC сценарии можно через формирования пути к файлу следующего вида:

путь = syn\_domain()\
файл = tokens/205-a10-02.zip

&#x20;Пример получения файла в Выражениях Сценария:

&#x20;makepath(syn\_domain(),"tokens/002.mp3")

* 002.mp3- имя файла
* tokens - константа имени каталога

Результат успешного выполнения:

```
{
"resultcode": 0,
"resultmsg": "OK"
}
```

### Отправка факса

#### sendfax

![](/files/-MMuFStN6iw5SKHNBxij)

http(s)://fqdn\_ws\_role/api/token/v1/{token}\
\
Метод - POST\
Content-Type - application/json

* **action** - действие, которое нужно совершить над списком факсов (sendfax — отправить)
* **recipient** - получатель факса
* voiceDocumentSID- <необязательный параметр> — идентификатор предварительно загруженного голосового файла
* **terminalId** - идентификатор телефонного номера, который будет назначен в качестве номера-отправителя
* **attachment** - идентификатор предварительно загруженного файла в формате TIF
* **sip** - ответ провайдера описан в соответствии с стандартом&#x20;

{% content-ref url="/pages/-MIpci293tLiPPzTIj\_\_" %}
[SIP ответы и их значения](/sip-otvety-i-ikh-znacheniya.md)
{% endcontent-ref %}

* **status** - статус отправки факса
* **error** - содержит описание ошибок при отправке факса: "файл не найден", "номер не соответствует маске"

Пример:

```
{
 "action":"sendfax",
 "recipient": 375291554499,
 "voiceDocumentSID":"002.mp3"
 "terminalId": 301
 "attachment":"123123.tif"
 }
 

```

&#x20;

Пример успешной отправки:

```

"sip_code": "200",
"success": "true",
"error": "null",
"status": "sent"
}
```

Допускается отправка сообщения через pop протокол.\
Для реализации требуется передавать сообщение с темой письма содержащий номер телефона и 1 приложением файла в формате TIF.\
На сервере предварительно настраивается маска с именем отправителя с которым разрешена отправка сообщения **user{mask}@fqdn**\
После отправки приходить ответное сообщение с статусом отправки на обратный e-mail адрес.

### Инициализация базы данных

#### init\_fax

![](/files/-MP0zHIz7VkxvK2bwrBW)

&#x20;

{% hint style="info" %}
Требуется выполнить для первично инициализации
{% endhint %}

&#x20;http(s)://fqdn\_ws\_role/api/token/v1/{token}\
&#x20;**Метод** - POST\
&#x20;**Content-Type** - application/json\
&#x20;**Body** -  Text &#x20;

* **action** - константа
* **domain** - имя текущего домена
* &#x20;**drop** - true = удалить если ранее было созданы схемы и таблицы, false = не удалять ничего

Пример:

```
{
  "action":"init_fax",  
  "domain":"domain.a1.axatel.by",    
  "drop":"true"    
}
```

Ответ успешного выполнения:

```
{
"received": true
}
```

### Запрос информации по факсам

#### fax\_history

![](/files/-MP10khjg7fpDv1taRZY)

http(s)://fqdn\_ws\_role/api/token/v1/{token}\
\
Метод - **POST**\
Content-Type - **application/json**

**Body:**

* **action** - константа
* "**type-** тип incoming | outgoing
* **from\_dt**:"2020-12-16 20:00", //время UTC начала списка. Может быть дата или дата-время
* **till\_dt**- время UTC окончания списка. Может быть дата или дата-время
* **fields**- *список полей, которые выводить, можно указывать через запятую.*

  * **\*** - вывести все поля
  * id&#x20;
  * type
  * remotenum
  * start\_dt
  * stop\_dt
  * result
  * url

Пример запроса:

```
{
  "action":"history", 
  "type":"outgoing",   
  "from_dt":"2020-12-16 20:00", 
  "till_dt":"2020-12-20 23:30",  
  "fields":"*"		
}
```

Пример успешного вывода:

```
{
"data":[
{
"id": "940fbbf2-0176-81d6-990b-005056011d6c",
"type": "outgoing",
"remotenum": "3880456",
"start_dt": "2020-12-20T20:28:13.84",
"stop_dt": "2020-12-20T20:28:30.38",
"result": "success",
"url": "https://domain.a1.axatel.by/callrecords/domains/demo.a1.axatel.by/data/fax/outgoing/mtu1otezoty1nw53d5.tiff"
},
]
}
```

### Описание поля Result

**success** - успешная обработка\
**failed** - ошибка \
**receiving** - в процессе приемки \
**dialing** - набор номера \
**sending** - процесс отправки
