Автоматическая телефонная станция

Коммуникационная платформа, обладающая всеми возможностями современной офисной телефонной станции.

Документация пользователя

Документация пользователя

Авторизация пользователя

Для входа в Web интерфейс телефонной станции необходимо ввести IP адрес телефонной станции в Web браузер. Ссылка для входа будет иметь вид https://<IP>/pbx.

При правильном вводе откроется страница авторизации

Auth.jpg

где необходимо ввести Логин и Пароль. В случае утери пароля есть возможность восстановить его воспользовавшись кнопкой "Восстановление пароля". Для восстановления пароля у пользователя должен быть введен корректный почтовый адрес который был введен ранее администратором системы при добавлении пользователя.

Password_recovery.jpg

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

Документация администратора

Документация администратора

Синтез речи

Введение

Для оперативного создания голосовых приветствий и интерактивных голосовых меню в версии 8.0.0 была реализована возможность синтезировать речь через Web интерфейс телефонной станции. Данный модуль использует синтез от компании Яндекс. Для подключения данного модуля необходимо получить Yandex IAM Token. Полученный токен необходимо ввести в Настройки - Константы - Yandex IAM Token.

constant_index.JPG

Синтез речи

Для работы с синтезом речи необходимо открыть меню Медиа - Синтез речи. Откроется окно настроек синтеза речи.

synth_index_settings.JPG

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

Голос Пол Амплуа
alena (по умолчанию)
Ж (по умолчанию) нейтральная — neutral
радостная — good
filipp M
ermil M (по умолчанию) нейтральный — neutral
радостный — good
jane Ж (по умолчанию) нейтральная — neutral
радостная — good
раздраженная — evil
madirus M
omazh Ж (по умолчанию) нейтральная — neutral
раздраженная — evil
zahar M (по умолчанию) нейтральный — neutral
радостный — good
dasha Ж (по умолчанию) нейтральная — neutral
радостная — good
дружелюбная — friendly
julia Ж (по умолчанию) нейтральная — neutral
строгая — strict
lera Ж (по умолчанию) нейтральная — neutral
дружелюбная — friendly
masha Ж (по умолчанию) радостная — good
строгая — strict
дружелюбная — friendly
marina Ж (по умолчанию) нейтральная — neutral
шепот — whisper
дружелюбная — friendly
alexander M (по умолчанию) нейтральный — neutral
радостный — good
kirill M (по умолчанию) нейтральный — neutral
строгий — strict
радостный — good
anton M (по умолчанию) нейтральный — neutral
радостный — good

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

synth_index_list.JPG

Для скачивания аудиофайла нажмите кнопку "Скачать".

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

Дополнительно

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

Документация администратора

Переадресация на сотовые номера сотрудников

Переадресация при входящих вызовах

Для настройка вызова на сотовый, необходимо использовать приложение Dial. Добавляется в место где необходимо произвести вызов на сотовый.

Dial: SIP/<Номер>@<Транк>,<Время>

Номер - Номер абонента
Транк - Транк через который совершается вызов
Время - Время дозвона абонента

Пример:

NoOp: Входящий вызов
...
...
...
Dial: SIP/user-110-office,15,tT
Dial: SIP/81234567890@peer-71234567890-office,60
Hangup

Переадресация при добавочных вызовах

Для настройки переадресации при наборе добавочного номера необходимо добавить в маршрутизацию добавочных номеров расширение 110.

Пример маршрутизации добавочного номера 110 с переадресацией на сотовый:

NoOp: Вызов на добавочный номер
Dial: SIP/user-110-office,15,t
Dial: SIP/81234567890@peer-71234567890-office,60
Hangup

Переадресация при внутренних вызовах

Для настройки переадресации при наборе внутреннего номера необходимо добавить в маршрутизацию внутренних номеров расширение 110.

Пример маршрутизации внутреннего номера 110 с переадресацией на сотовый:

NoOp: Вызов на внутренний номер
...
...
...
Dial: SIP/user-110-office,15,tT
Dial: SIP/81234567890@peer-71234567890-office,60
Hangup

Документация администратора

Сообщение после звукового сигнала

Подготовка аудиофайла

Необходимо подготовить файл звукового приветствия, например "Оставьте сообщение после звукового сигнала".
Через меню Медиа->Аудиофайлы загрузите файл с наименованием "message-office".
Файл должен быть в формате wav (rate 8000 Hz, sample rate 16 bits, mono).

Настройка маршрутизации

Необходимо подготовить новую маршрутизацию, например "message-office"
В созданной маршрутизации добавить расширение "s"

NoOp : Сообщение после звукового сигнала
Answer
Playback : message-office
Record : /tmp/${UNIQUEID}.wav,,300,k
Hangup

Настройка отправки на электронную почту

Добавить в маршрутизацию расширение "h"

NoOp : Отправка сообщения на электронную почту
AGI : email/attachment.php,--source="${CALLERID(number)}",--destination="Номер",--emails="mail@example.com",--attachment="/tmp/${UNIQUEID}.wav"
Hangup

Настройка перенаправления

В нужном месте маршрутизации добавьте приложение "GoTo"

NoOp : Входящий вызов
...
...
...
Goto : message-office,s,1
Hangup

Документация администратора

Приложение Record

Краткое содержание

Запись в файл.

Описание

Если имя файла содержит «%d», эти символы будут заменены числом, увеличивающимся на единицу при каждой записи файла. Пользователь может нажать «#», чтобы прекратить запись и перейти к следующему приоритету. Если пользователь повесит трубку во время записи, все данные будут потеряны и приложение закроется.

Синтаксис

Record(filename.format,[silence,[maxduration,[options]]])

Аргументы

Документация API


Документация API

Manager API

Введение

Для работы с интерфейсом событий существует несколько вариантов взаимодействия.

/arawman => Raw HTTP Manager Event Interface with Digest authentication
/rawman => Raw HTTP Manager Event Interface
/amxml => XML Manager Event Interface with Digest authentication
/mxml => XML Manager Event Interface

Документация описывает взаимодействие с интерфейсом событий через необработанные HTTP запросы. Аналогичная документация применима и к другим вариантам.

Авторизация

GET /rawman?action=login

Параметр Тип Обязательный Описание

username

String

Да Пользователь

secret

String

Да Пароль

Пример запроса: http://<ip>:8088/rawman?action=login&username=test&secret=test

Пример ответа:

Response: Success
Message: Authentication accepted

Проверка доступности

GET /rawman?action=ping

Пример ответа:

Response: Success
Ping: Pong
Timestamp: 1711272193.709205

Запрос статуса телефонной станции

GET /rawman?rawman?action=status

Параметр Тип Обязательный Описание
actionid String Нет Идентификатор запроса

channel

String

Нет Канал

variables

String

Нет Переменные

allvariables

Boolean

Нет Все переменные

Пример ответа:

Response: Success
EventList: start
Message: Channel status will follow

Event: Status
Privilege: Call
Channel: PJSIP/user
ChannelState: 6
ChannelStateDesc: Up
CallerIDNum: 110
CallerIDName: 
ConnectedLineNum: <unknown>
ConnectedLineName: <unknown>
Language: ru
AccountCode: 
Context: outgoing
Exten: 153
Priority: 3
Uniqueid: 1711273253.11
Linkedid: 1711273253.11
Type: PJSIP
DNID: 153
EffectiveConnectedLineNum: <unknown>
EffectiveConnectedLineName: <unknown>
TimeToHangup: 0
BridgeID: 
Application: Queue
Data: queue
Nativeformats: (alaw)
Readformat: alaw
Readtrans: 
Writeformat: slin
Writetrans: (slin@8000)->(alaw@8000)
Callgroup: 0
Pickupgroup: 0
Seconds: 21

Event: StatusComplete
EventList: Complete
ListItems: 1
Items: 1

Запрос создания звонка

GET /rawman?rawman?action=originate

Параметр Тип Обязательный Описание
actionid String Нет Идентификатор запроса

channel

String

Да Канал

exten

String

Да Расширение

context

String

Да Маршрутизация

priority

Integer

Да Приоритет

application

String

Нет Приложение

data

String

Да Данные приложение

timeout

Integer

Да Таймаут

callerid

String

Нет АОН

variable

String

Нет Переменные

account




earlymedia




async

Boolean

Нет Асинхронный ввод

codecs




channelid




otherchannelid




Пример запроса: http://<ip>:8088/rawman?action=originate&channel=PJSIP/user&context=outgoing&exten=100&priority=1&async=true

Список команд

GET /rawman?action=listcommands

Пример ответа:

Response: Success
AbsoluteTimeout: Set absolute timeout.  (Priv: system,call,all)
AGI: Add an AGI command to execute by Async AGI.  (Priv: agi,all)
AOCMessage: Generate an Advice of Charge message on a channel.  (Priv: aoc,all)
Atxfer: Attended transfer.  (Priv: call,all)
BlindTransfer: Blind transfer channel(s) to the given destination  (Priv: call,all)
Bridge: Bridge two channels already in the PBX.  (Priv: call,all)
BridgeDestroy: Destroy a bridge.  (Priv: <none>)
BridgeInfo: Get information about a bridge.  (Priv: <none>)
BridgeKick: Kick a channel from a bridge.  (Priv: <none>)
BridgeList: Get a list of bridges in the system.  (Priv: <none>)
BridgeTechnologyList: List available bridging technologies and their statuses.  (Priv: <none>)
BridgeTechnologySuspend: Suspend a bridging technology.  (Priv: <none>)
BridgeTechnologyUnsuspend: Unsuspend a bridging technology.  (Priv: <none>)
CancelAtxfer: Cancel an attended transfer.  (Priv: call,all)
Challenge: Generate Challenge for MD5 Auth.  (Priv: <none>)
Command: Execute Asterisk CLI Command.  (Priv: command,all)
ConfbridgeKick: Kick a Confbridge user.  (Priv: call,all)
ConfbridgeList: List participants in a conference.  (Priv: reporting,all)
ConfbridgeListRooms: List active conferences.  (Priv: reporting,all)
ConfbridgeLock: Lock a Confbridge conference.  (Priv: call,all)
ConfbridgeMute: Mute a Confbridge user.  (Priv: call,all)
ConfbridgeSetSingleVideoSrc: Set a conference user as the single video source
  distributed toall other participants.  (Priv: call,all)
ConfbridgeStartRecord: Start recording a Confbridge conference.  (Priv: system,all)
ConfbridgeStopRecord: Stop recording a Confbridge conference.  (Priv: system,all)
ConfbridgeUnlock: Unlock a Confbridge conference.  (Priv: call,all)
ConfbridgeUnmute: Unmute a Confbridge user.  (Priv: call,all)
CoreSettings: Show PBX core settings (version etc).  (Priv: system,reporting,all)
CoreShowChannelMap: List all channels connected to the specified channel.  (Priv: system,reporting,all)
CoreShowChannels: List currently active channels.  (Priv: system,reporting,all)
CoreStatus: Show PBX core status variables.  (Priv: system,reporting,all)
CreateConfig: Creates an empty file in the configuration directory.  (Priv: config,all)
DBDel: Delete DB entry.  (Priv: system,all)
DBDelTree: Delete DB Tree.  (Priv: system,all)
DBGet: Get DB Entry.  (Priv: system,reporting,all)
DBGetTree: Get DB entries, optionally at a particular family/key  (Priv: system,reporting,all)
DBPut: Put DB entry.  (Priv: system,all)
DialplanExtensionAdd: Add an extension to the dialplan  (Priv: system,all)
DialplanExtensionRemove: Remove an extension from the dialplan  (Priv: system,all)
Events: Control Event Flow.  (Priv: <none>)
ExtensionState: Check Extension Status.  (Priv: call,reporting,all)
ExtensionStateList: List the current known extension states.  (Priv: call,reporting,all)
FAXSession: Responds with a detailed description of a single FAX session  (Priv: call,all)
FAXSessions: Lists active FAX sessions  (Priv: call,all)
FAXStats: Responds with fax statistics  (Priv: reporting,all)
Filter: Dynamically add filters for the current manager session.  (Priv: system,all)
GetConfig: Retrieve configuration.  (Priv: system,config,all)
GetConfigJSON: Retrieve configuration (JSON format).  (Priv: system,config,all)
Getvar: Gets a channel variable or function value.  (Priv: call,reporting,all)
Hangup: Hangup channel.  (Priv: system,call,all)
ListCategories: List categories in configuration file.  (Priv: config,all)
ListCommands: List available manager commands.  (Priv: <none>)
LocalOptimizeAway: Optimize away a local channel when possible.  (Priv: system,call,all)
LoggerRotate: Reload and rotate the Asterisk logger.  (Priv: system,reporting,all)
Login: Login Manager.  (Priv: <none>)
Logoff: Logoff Manager.  (Priv: <none>)
MailboxCount: Check Mailbox Message Count.  (Priv: call,reporting,all)
MailboxStatus: Check mailbox.  (Priv: call,reporting,all)
MessageSend: Send an out of call message to an endpoint.  (Priv: message,all)
MixMonitor: Record a call and mix the audio during the recording.
  Use of StopMixMonitor is required to guarantee the audio file
  is available for processing during dialplan execution.  (Priv: system,all)
MixMonitorMute: Mute / unMute a Mixmonitor recording.  (Priv: system,call,all)
ModuleCheck: Check if module is loaded.  (Priv: system,all)
ModuleLoad: Module management.  (Priv: system,all)
Originate: Originate a call.  (Priv: originate,all)
Ping: Keepalive command.  (Priv: <none>)
PJSIPHangup: Hangup an incoming PJSIP channel with a SIP response code  (Priv: system,call,all)
PJSIPQualify: Qualify a chan_pjsip endpoint.  (Priv: system,reporting,all)
PJSIPRegister: Register an outbound registration.  (Priv: system,reporting,all)
PJSIPShowAors: Lists PJSIP AORs.  (Priv: system,all)
PJSIPShowAuths: Lists PJSIP Auths.  (Priv: system,all)
PJSIPShowContacts: Lists PJSIP Contacts.  (Priv: system,all)
PJSIPShowEndpoint: Detail listing of an endpoint and its objects.  (Priv: system,all)
PJSIPShowEndpoints: Lists PJSIP endpoints.  (Priv: system,all)
PJSIPShowRegistrationInboundContactStatuses: Lists ContactStatuses
  for PJSIP inbound registrations.  (Priv: system,all)
PJSIPShowRegistrationsInbound: Lists PJSIP inbound registrations.  (Priv: system,all)
PJSIPShowRegistrationsOutbound: Lists PJSIP outbound registrations.  (Priv: system,reporting,all)
PJSIPShowResourceLists: Displays settings for configured resource lists.  (Priv: system,all)
PJSIPShowSubscriptionsInbound: Lists subscriptions.  (Priv: system,all)
PJSIPShowSubscriptionsOutbound: Lists subscriptions.  (Priv: system,all)
PJSIPUnregister: Unregister an outbound registration.  (Priv: system,reporting,all)
PresenceState: Check Presence State  (Priv: call,reporting,all)
QueueAdd: Add interface to queue.  (Priv: agent,all)
QueueChangePriorityCaller: Change priority of a caller on queue.  (Priv: <none>)
QueueLog: Adds custom entry in queue_log.  (Priv: agent,all)
QueueMemberRingInUse: Set the ringinuse value for a queue member.  (Priv: agent,all)
QueuePause: Makes a queue member temporarily unavailable.  (Priv: agent,all)
QueuePenalty: Set the penalty for a queue member.  (Priv: agent,all)
QueueReload: Reload a queue, queues, or any sub-section of a queue or queues.  (Priv: <none>)
QueueRemove: Remove interface from queue.  (Priv: agent,all)
QueueReset: Reset queue statistics.  (Priv: <none>)
QueueRule: Queue Rules.  (Priv: <none>)
QueueStatus: Show queue status.  (Priv: <none>)
QueueSummary: Show queue summary.  (Priv: <none>)
QueueWithdrawCaller: Request to withdraw a caller from the queue back to the dialplan.  (Priv: <none>)
Redirect: Redirect (transfer) a call.  (Priv: call,all)
Reload: Send a reload event.  (Priv: system,config,all)
SendText: Sends a text message to channel. A content type
  can be optionally specified. If not set it is set to an empty
  string allowing a custom handler to default it as it sees fit.  (Priv: call,all)
Setvar: Sets a channel variable or function value.  (Priv: call,all)
ShowDialPlan: Show dialplan contexts and extensions  (Priv: config,reporting,all)
Status: List channel status.  (Priv: system,call,reporting,all)
StopMixMonitor: Stop recording a call through MixMonitor,
  and free the recording's file handle.  (Priv: system,call,all)
UpdateConfig: Update basic configuration.  (Priv: config,all)
UserEvent: Send an arbitrary event.  (Priv: user,all)
WaitEvent: Wait for an event to occur.  (Priv: <none>)

Описание команд

GET /rawman?action=command&command=manager show command waitevent

Пример ответа:

Response: Success
Message: Command output follows
Output: [Syntax]
Output: Action: WaitEvent
Output: [ActionID:] <value>
Output: Timeout: <value>
Output: 
Output: [Synopsis]
Output: Wait for an event to occur. 
Output: 
Output: [Description]
Output: This action will elicit a 'Success' response. Whenever a manager event is
Output: queued. Once WaitEvent has been called on an HTTP manager session, events will
Output: be generated and queued.
Output: 
Output: [Arguments]
Output: ActionID
Output:     ActionID for this transaction. Will be returned.
Output: Timeout
Output:     Maximum time (in seconds) to wait for events, '-1' means forever.
Output: 
Output: [See Also]
Output: Not available
Output: 
Output: [Privilege]
Output: <none>
Output: 
Output: [List Responses]
Output: None
Output: 
Output: [Final Response]
Output: None
Output: 
Output: 
Документация API

Evolvex API

Введение

Программный интерфейс разработанный компанией Evolvex. Позволяет взаимодействовать с телефонной станцией через HTTP запросы. Позволяет расширить функциональность стандартного Manager API.

Проверка доступа

Проверка доступа

GET /api/index/check

Параметр Тип Обязательный Описание
api_key String Да API Ключ
context String Нет Маршрутизация
uniqueid String Нет Уникальный идентификатор звонка

Ответ в Json:

{
  "data": {
    "api_user": {
      "uuid": "5485137a-3c6d-454e-9801-d3b875f7a5e0",
      "name": "API",
      "description": "",
      "enable": "yes",
      "api_key": "84f8fc34-82ad-46b0-b5f3-3cfd0462beeb",
      "group_uuid": "4c343af6-4a91-469a-a717-f682e52c830f"
    },
    "access": {
      "uuid": "0eb1bc58-b259-4c88-be02-a059d50cecc3",
      "name": "incoming",
      "description": "Входящая маршрутизация",
      "group_uuid": "4c343af6-4a91-469a-a717-f682e52c830f"
    },
    "file": true
  }

Получение файла mp3

GET /api/index/get_file_mp3

Параметр Тип Обязательный Описание
api_key String Да API Ключ
uniqueid String Нет Уникальный идентификатор звонка

Ответ:

Потоковое аудио

Получение файла wav

GET /api/index/get_file_wav

Параметр Тип Обязательный Описание
api_key String Да API Ключ
uniqueid String Нет Уникальный идентификатор звонка

Ответ:

Потоковое аудио

Получение статуса звонка

GET /api/index/status

Параметр Тип Обязательный Описание
api_key String Да API Ключ
calleridnum String Нет АОН
connectedlinenum String Нет Соединенная линия
context String Нет Маршрутизация
exten String Нет Расширение

Ответ в Json:

{
  "data": [
    {
      "Event": "Status",
      "Privilege": "Call",
      "Channel": "PJSIP/user-00000011",
      "ChannelState": "5",
      "ChannelStateDesc": "Ringing",
      "CallerIDNum": "109",
      "CallerIDName": "",
      "ConnectedLineNum": "110",
      "ConnectedLineName": "",
      "Language": "ru",
      "AccountCode": "",
      "Context": "outgoing",
      "Exten": "109",
      "Priority": "1",
      "Uniqueid": "1711279935.61",
      "Linkedid": "1711279935.60",
      "Type": "PJSIP",
      "DNID": "",
      "EffectiveConnectedLineNum": "110",
      "EffectiveConnectedLineName": "",
      "TimeToHangup": "0",
      "BridgeID": "",
      "Application": "AppDial",
      "Data": "(Outgoing Line)",
      "Nativeformats": "(alaw|ulaw)",
      "Readformat": "alaw",
      "Readtrans": "",
      "Writeformat": "alaw",
      "Writetrans": "",
      "Callgroup": "0",
      "Pickupgroup": "0",
      "Seconds": "5",
      "Variable": "DIALEDPEERNUMBER=user/sip:user@1.1.1.1:5937",
      "DIALEDPEERNUMBER": "user/sip:company@1.1.1.1:5937",
      "ActionID": "66000f44594c1"
    },
    {
      "Event": "Status",
      "Privilege": "Call",
      "Channel": "PJSIP/user",
      "ChannelState": "4",
      "ChannelStateDesc": "Ring",
      "CallerIDNum": "110",
      "CallerIDName": "",
      "ConnectedLineNum": "109",
      "ConnectedLineName": "",
      "Language": "ru",
      "AccountCode": "",
      "Context": "outgoing",
      "Exten": "109",
      "Priority": "7",
      "Uniqueid": "1711279935.60",
      "Linkedid": "1711279935.60",
      "Type": "PJSIP",
      "DNID": "109",
      "EffectiveConnectedLineNum": "109",
      "EffectiveConnectedLineName": "",
      "TimeToHangup": "0",
      "BridgeID": "",
      "Application": "Dial",
      "Data": "PJSIP/user/sip:user@1.1.1.1:5937,60,tT",
      "Nativeformats": "(alaw|ulaw)",
      "Readformat": "alaw",
      "Readtrans": "",
      "Writeformat": "alaw",
      "Writetrans": "",
      "Callgroup": "0",
      "Pickupgroup": "0",
      "Seconds": "5",
      "Variable": "SIPDOMAIN=pbx1.ru",
      "RINGTIME_MS": "298",
      "RINGTIME": "0",
      "PROGRESSTIME_MS": "",
      "PROGRESSTIME": "",
      "DIALEDTIME_MS": "",
      "DIALEDTIME": "",
      "ANSWEREDTIME_MS": "",
      "ANSWEREDTIME": "",
      "DIALEDPEERNAME": "",
      "DIALEDPEERNUMBER": "",
      "DIALSTATUS": "",
      "MIXMONITOR_FILENAME": "/var/spool/asterisk/monitor/1711279935.60.wav",
      "SIPDOMAIN": "pbx1.ru",
      "ActionID": "66000f44594c1"
    }

Создание звонка

GET /api/index/originate

Параметр Тип Обязательный Описание
api_key String Да API Ключ
channel String Да Канал
exten String Да Расширение
context String Да Маршрутизация
priority Integer Да Приоритет
callerid String Нет АОН
variable String Нет Переменные
async Boolean Нет Асинхронный ввод

variable - позволяет передать несколько переменных через запятую. Например variable=file=123,idcall=456

Загрузка файла

POST /api/index/uploads

Параметр Тип Обязательный Описание
api_key String Да API Ключ
file File Да Файл

Пример загрузки файла:

$cFile = curl_file_create("/home/user/1.wav");

$post = array('file'=> $cFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http:/1/92.168.0.2/pbx/api/index/uploads?api_key=11111111-2222-3333-4444-555555555555");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);

История версий

Введение

Система использует семантическое версионирование.

Версия 8.3.4 от 04.08.2024

Версия 8.3.3 от 02.08.2024

Версия 8.3.2 от 01.08.2024

Версия 8.3.1 от 01.08.2024

Версия 8.2.10 от 12.07.2024

Версия 8.2.9 от 20.05.2024

Версия 8.2.8 от 08.04.2024

Версия 8.2.7 от 02.04.2024

Версия 8.2.6 от 27.03.2024

Версия 8.2.5 от 26.03.2024

Версия 8.2.4 от 25.03.2024

Версия 8.2.3 от 25.03.2024

Версия 8.2.2 от 23.03.2024

Версия 8.2.1 от 23.03.2024

Версия 8.2.0 от 23.03.2024