Программное создание сотрудников
Пример использования REST API для генерации сотрудников
В релизе 2023.2 реализовано API для быстрого создания большого количества сотрудников, в процессе тестирования мы описали алгоритм генерации нового сотрудников в ChatGPT и провели нагрузочное тестирование по созданию 700 произвольных учетных записей на разных языках. На загрузку ушло около 1 минуты, тест прошел успешно.
Для выполнения этой задачи был написан запрос к ChatGPT следущего содержания.
Мы разрабатываем сервер телефонии, и нам нужно протестировать функцию
программного создания учетных записей сотрудников.
Для получения структуры данных необходимо выполнить следующий GET запрос с пустым ID
http://127.0.0.1:8081/pbxcore/api/extensions/getRecord?id=
В ответ мы получим JSON примерно такого содержания:
{"jsonapi":{"version":"1.0"},
"result":true,
"data":
{
"type":"SIP",
"show_in_phonebook":"1",
"is_general_user_number":"1",
"public_access":"0",
"number":"275",
"user_id":"",
"user_avatar":"",
"user_username":"",
"user_email":"",
"mobile_uniqid":"EXTERNAL-7870338E",
"mobile_number":"",
"mobile_dialstring":"",
"sip_uniqid":"SIP-PHONE-5A230111",
"sip_secret":"Nk9oOFI2ZXdDMEU9",
"sip_type":"peer",
"sip_qualify":"1",
"sip_qualifyfreq":60,
"sip_enableRecording":"1",
"sip_dtmfmode":"auto",
"sip_transport":" ",
"sip_networkfilterid":"none",
"sip_manualattributes":"",
"fwd_ringlength":45,
"fwd_forwarding":"",
"fwd_forwardingonbusy":"",
"fwd_forwardingonunavailable":""
},
"messages":[],
"function":"getRecord",
"processor":"MikoPBX\\PBXCoreREST\\Lib\\Extensions\\GetRecord::main",
"pid":42448,
"meta":{
"timestamp":"2023-09-06T08:51:51+03:00",
"hash":"a16f973985cb3d0cbe75abb2c10a7c39b2203a87"
}
}
Если параметр result в ответе будет равен true, то возьмем данные для создания нового пользователя
из параметра data и выполним POST запрос на адрес http://127.0.0.1:8081/pbxcore/api/extensions/saveRecord,
используя полученный после модификации массив полей формы отправив его в формате x-www-form-urlencoded.
Скрипт должен быть написан на Python без использования NodeJS и позволять создать 100 различных сотрудников.
В поле user_username вписываем имя и фамилию произвольного человека, чтобы использовались национальные алфавиты.
В поле user_email произвольный адрес электронной почты.
В поле mobile_number произвольные мобильные номера телефонов, только цифры, без дублей.
В поле fwd_forwarding, fwd_forwardingonbusy заполнить значениями mobile_number.
При создании сотрудника, вывести user_username, user_email и number в консоль и сообщить о результате.
Если в результате запроса к saveRecord или getRecord мы получили result равный false,
то также в консоль вывести параметр messages из полученного ответа.
Если в результате ответа мы получили ошибку другого типа, или ответ невозможно разобрать,
то вывести в консоль полный текст полученный от API сервера.В результате был сгенерирован Python скрипт, который позволил выполнить этот тест.
Для запуска подобного скрипта, сохраним его в папке /tmp внутри MikoPBX. Т.к. скрипт имеет несколько зависимостей, добавим их через установщик пакетов pip3 и запустим скрипт для генерации.
В результате работы скрипта мы увидим вывод в консоль списка создаваемых сотрудников, а в веб интерфейсе появятся новые учетные записи.


Важно отметить, т.к. система read-only, то установку Python библиотек необходимо выполнять посое каждой перезагрузки, а папка /tmp будет очищена. Разработку и доработку скрипта необходимо вести во внешней системе.
При выполнении REST API запросов из внешних адресов, необоходимо выполнить авторизацию административным логином и паролем или создать пользователя с правами на указанные действия в модуле управления правами сотрудников и авторизовываться им.
При выполнении запросов, как в этом примере, с адреса 127.0.0.1 авторизация не требуется.
Last updated
Was this helpful?

