Работа с API сервиса ecss-clerk (секретарь):
В приложении реализовано RestAPI.
Документацию по работе с API можно найти по адресу: http://<IP_HOST>:<CLERK_PORT>/swagger/index.html, где:
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000).
Получение токена доступа
Для работы с api необходимо создать токен доступа на сервисе keycloak и добавить его в заголовок запросов access_token.
Для создания токена доступа создайте следующий скрипт, где вместо 'localhost:8085' укажите IP-адрес хоста с приложением и порт сервиса keycloak. Если меняли пароль администратора web-интерфейса admin, введите его вместо пароля по умолчанию — 'password':
$ sudo nano get_access_token.sh #!/bin/bash curl -d 'client_id=clerk-client' -d client_secret='Q4Cbf6NzPni9n4wprlgGuUPOyKIamWZ0' \ -d 'username=admin' -d 'password=password' -d 'grant_type=password' \ 'http://localhost:8085/realms/clerk/protocol/openid-connect/token' | \ jq
Таблица aliases
Описание: таблица предназначена для добавления сокращений или жесткой привязки совсем других слов к именам (firstname), фамилиям (secondname), отчествам (thirdname).
Связка alias => full_names должна быть уникальной, при попытке добавления дублирующейся записи будет возвращена ошибка.
Пример: на предприятии плохо распознается связка имени и фамилии «игорь николаев», результатом распознавания часто является «игорь николай». Для решения этой проблемы нужно добавить привязку к фамилии в таблицу вида «николай» -> «николаев».
Получить все псевдонимы (alias):
Path: /aliases
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/aliases' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "Aliases": [ { "alias": "ануся", "full_names": { "анна": {} }, "tag": "firstname" }, { "alias": "вова", "full_names": { "владимир": {} }, "tag": "firstname" }, ...
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Добавление псевдонима:
Path: /aliases
Request-type: POST
Content-type: application/json
Требуемые поля в json: alias, full_names, tag
Пример:
Запрос: curl -X 'POST' \ 'http://<IP_HOST>:<CLERK_PORT>/aliases' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "aliases": [ { "alias": "игорян", "full_names": { "игорь": {} }, "tag": "firstname" } ] Ответ: { "Status": "ok" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Удаление псевдонима:
Path: /aliases
Request-type: DELETE
Content-type: application/json
Требуемые поля в json: alias
Пример:
Запрос: curl -X 'DELETE' \ 'http://<IP_HOST>:<CLERK_PORT>/aliases' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "alias": "игорян" }' Ответ: { "Status": "ok" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Таблица history
Описание: таблица предназначена для просмотра/удаления истории вызовов, а также просмотра всей статистики.
Получить историю вызовов:
Path: /history
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/history' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "History": [ { "CallRef": "1460562852", "ReqSource": "ivr", "DetectionAttr": "fio", "Source": "100", "Number": "102", "Files": { "2023-10-05_08-01-33-21225_asr_100-999.wav": "терентьева полина" }, "Status": "good", "Date": "2023-10-05T08:01:35.613Z", "ClerkNum": "999", "Additional": { "sample_rate": 48000, "source": "msr" } } ] }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Удалить вызов из истории:
Path: /history
Request-type: DELETE
Content-type: application/json
Требуемые поля в json: callRef (id вызова)
Пример:
Запрос: curl -X 'DELETE' \ 'http://<IP_HOST>:<CLERK_PORT>/history' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "callRef": "1053020459" }' Ответ: { "Status": "ok" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Получить историю определенного вызова:
Path: /history/{call_ref} (id вызова)
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/history/1053020459' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "CallRef": "1053020459", "ReqSource": "ivr", "DetectionAttr": "fio", "Source": "100", "Number": "110", "Files": { "2023-10-06_03-37-31-338988_asr_100-999.wav": "степанова мария" }, "Status": "good", "Date": "2023-10-06T03:37:32.975Z", "ClerkNum": "999", "Additional": { "sample_rate": 48000, "source": "msr" } }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Получить статистику вызовов:
Path: /stats
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/stats' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "Stats": [ { "Source": "ivr", "RequestCount": 2, "Correct": 2, "Failed": 0 } ] }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Таблица phonebook
Описание: таблица предназначена для получения информации по адресной книге.
Получить телефонную книгу:
Path: /pb
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/pb' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "Contacts": [ { "UID": "02598495150212722288423330", "FirstName": "алиса", "SecondName": "вешнякова", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "100", "Hash": 1065922175 }, { "UID": "004662883495622783462351", "FirstName": "александр", "SecondName": "акимов", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "101", "Hash": 1973066537 }, { "UID": "76011072078104322", "FirstName": "полина", "SecondName": "терентьева", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "102", "Hash": 3842283868 } ...
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Получить телефонную книгу адаптируемую для приложения:
Path: /pb_compile
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/pb_compile' \ -H 'accept: application/json' Ответ: { "Contacts": [ { "UID": "02598495150212722288423330", "SecondName": "вешнякова", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "100", "Hash": 1065922175, "FirstName": [ "алиса", "аля" ] }, { "UID": "004662883495622783462351", "SecondName": "акимов", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "101", "Hash": 1973066537, "FirstName": [ "александр", "саша", "санюра", "санюха", "алексаха", "сашура", "сашуля", "сашуня", "шура", "санюша", "сашута", "сашуха", "шуруня", "александрушка", "алексаша", "лексаша", "алексаня", "саня" ] }, { "UID": "76011072078104322", "SecondName": "терентьева", "ThirdName": "", "Department": "", "Group": "", "SubGroup": "", "Number": "102", "Hash": 3842283868, "FirstName": [ "полина", "аполлинария", "полинка", "полюся", "поляша", "поля", "лина", "полюша", "полюха", "полюня", "пелагея" ] } ...
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000).
Таблица search
Описание: таблица предназначена для проверки получения ответа от приложения по переданной строке.
Запрос на получение результата по переданной строке
Path: /search
Request-type: POST
Content-type: application/json
X-call-ref: (выдуманный id вызова)
Требуемые поля в json: text
Пример:
Запрос: curl -X 'POST' \ 'http://<IP_HOST>:<CLERK_PORT>/search' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'x-call-ref: 100' \ -H 'Content-Type: application/json' \ -d '{ "text": "терентьева полина" }' Ответ: { "Num": "102", "Answer": "" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Таблица words
Описание: таблица предназначена для получения слов из словаря, добавления/удаления слов из словаря.
Получение слов из словаря
Path: /words
Request-type: GET
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<CLERK_PORT>/words' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' Ответ: { "Words": [ { "Word": "виташа", "Tag": "firstname" }, { "Word": "авдей", "Tag": "firstname" }, { "Word": "гермоген", "Tag": "firstname" }, { "Word": "эльвира", "Tag": "firstname" }, { "Word": "беня", "Tag": "firstname" }, { "Word": "маринка", "Tag": "firstname" } ...
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Добавление слов в словарь
Path: /words
Request-type: POST
Content-type: application/json
Требуемые поля в json: words
Пример:
Запрос: curl -X 'POST' \ 'http://<IP_HOST>:<CLERK_PORT>/words' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "words": [ { "tag": "firstname", "word": "святослав" } ] }' Ответ: { "Status": "ok" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Удаление слова из словаря
Path: /words
Request-type: DELETE
Content-type: application/json
Требуемые поля в json: word
Пример:
Запрос: curl -X 'DELETE' \ 'http://<IP_HOST>:<CLERK_PORT>/words' \ -H 'accept: application/json' \ -H 'access_token: <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "word": "святослав" }' Ответ: { "Status": "ok" }
- <IP_HOST> — адрес хоста;
- <CLERK_PORT> — порт сервиса clerk (по умолчанию: 8000);
- <ACCESS_TOKEN> — токен доступа.
Работа с API сервиса ecss-tts (синтез речи):
В приложении реализовано RestAPI.
Документацию по работе с API можно найти по адресу: http://<IP_HOST>:<TTS_PORT>/docs где:
- <IP_HOST> — адрес хоста;
- <TTS_PORT> — порт сервиса clerk (по умолчанию: 7890).
Таблица default
Описание: основная таблица для работы с синтезом речи.
Получить параметры речи
Path: /
Request-type: GET
Требуемые поля в json: text и voice
Пример:
Запрос: curl -X 'GET' \ 'http://<IP_HOST>:<TTS_PORT>/?text=<TEXT>&voice=<VOICE>'' \ -H 'accept: audio/x-pcm' Ответ: данные со следующими параметрами audio/x-pcm;bit=16;rate=22050
- <IP_HOST> — адрес хоста;
- <TTS_PORT> — порт сервиса clerk (по умолчанию: 7890);
- <TEXT> — текст, который нужно озвучить, в кодировке UTF-8, для управления произношением следует использовать специальную разметку;
- <VOICE> — голос на выбор, доступны: "irina", "natasha", "elena", "dmitrii", "pavel".
Элементы TTS-разметки
Спецсимвол | Описание | Применение |
---|---|---|
+ | корректировка ударения | Спецсимвол ставится перед ударным гласным звуком |