add modules
This commit is contained in:
parent
dae8491c9f
commit
f96151903a
655
README.md
655
README.md
@ -1333,3 +1333,658 @@
|
||||
|
||||
```crm.timeline.note.delete(ownerTypeId,ownerId,itemType,itemId)```
|
||||
|
||||
|
||||
# Задачи
|
||||
|
||||
```lua
|
||||
local tasks = require("bitrix.tasks")
|
||||
```
|
||||
|
||||
#### Получить задачу по ID `tasks.task.get`
|
||||
|
||||
[tasks.task.get](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-get.html)
|
||||
|
||||
```lua
|
||||
tasks.task.get(taskId)
|
||||
```
|
||||
|
||||
#### Получить список задач `tasks.task.list`
|
||||
|
||||
[tasks.task.list](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-list.html)
|
||||
|
||||
```lua
|
||||
tasks.task.list(order, filter, select, params, start)
|
||||
```
|
||||
|
||||
#### Создать новую задачу `tasks.task.add`
|
||||
|
||||
[tasks.task.add](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-add.html)
|
||||
|
||||
```lua
|
||||
tasks.task.add(fields)
|
||||
```
|
||||
|
||||
#### Обновить задачу `tasks.task.update`
|
||||
|
||||
[tasks.task.update](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-update.html)
|
||||
|
||||
```lua
|
||||
tasks.task.update(taskId, fields)
|
||||
```
|
||||
|
||||
#### Удалить задачу `tasks.task.delete`
|
||||
|
||||
[tasks.task.delete](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-delete.html)
|
||||
|
||||
```lua
|
||||
tasks.task.delete(taskId)
|
||||
```
|
||||
|
||||
#### Прикрепить файлы к задаче `tasks.task.files.attach`
|
||||
|
||||
[tasks.task.files.attach](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-files-attach.html)
|
||||
|
||||
```lua
|
||||
tasks.task.files.attach(taskId, fileIds)
|
||||
```
|
||||
|
||||
#### Делегировать задачу `tasks.task.delegate`
|
||||
|
||||
[tasks.task.delegate](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-delegate.html)
|
||||
|
||||
```lua
|
||||
tasks.task.delegate(taskId, fields)
|
||||
```
|
||||
|
||||
#### Получить счетчики пользователя `tasks.task.counters.get`
|
||||
|
||||
[tasks.task.counters.get](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-counters-get.html)
|
||||
|
||||
```lua
|
||||
tasks.task.counters.get()
|
||||
```
|
||||
|
||||
#### Перевести задачу в статус «выполняется» `tasks.task.start`
|
||||
|
||||
[tasks.task.start](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-start.html)
|
||||
|
||||
```lua
|
||||
tasks.task.start(taskId)
|
||||
```
|
||||
|
||||
#### Остановить выполнение задачи `tasks.task.pause`
|
||||
|
||||
[tasks.task.pause](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-pause.html)
|
||||
|
||||
```lua
|
||||
tasks.task.pause(taskId)
|
||||
```
|
||||
|
||||
#### Перевести задачу в статус «отложена» `tasks.task.defer`
|
||||
|
||||
[tasks.task.defer](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-defer.html)
|
||||
|
||||
```lua
|
||||
tasks.task.defer(taskId)
|
||||
```
|
||||
|
||||
#### Завершить задачу `tasks.task.complete`
|
||||
|
||||
[tasks.task.complete](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-complete.html)
|
||||
|
||||
```lua
|
||||
tasks.task.complete(taskId)
|
||||
```
|
||||
|
||||
#### Возобновить завершенную задачу `tasks.task.renew`
|
||||
|
||||
[tasks.task.renew](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-renew.html)
|
||||
|
||||
```lua
|
||||
tasks.task.renew(taskId)
|
||||
```
|
||||
|
||||
#### Принять задачу `tasks.task.approve`
|
||||
|
||||
[tasks.task.approve](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-approve.html)
|
||||
|
||||
```lua
|
||||
tasks.task.approve(taskId)
|
||||
```
|
||||
|
||||
#### Отклонить задачу `tasks.task.disapprove`
|
||||
|
||||
[tasks.task.disapprove](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-disapprove.html)
|
||||
|
||||
```lua
|
||||
tasks.task.disapprove(taskId)
|
||||
```
|
||||
|
||||
#### Начать наблюдение за задачей `tasks.task.startwatch`
|
||||
|
||||
[tasks.task.startwatch](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-startwatch.html)
|
||||
|
||||
```lua
|
||||
tasks.task.startwatch(taskId)
|
||||
```
|
||||
|
||||
#### Остановить наблюдение за задачей `tasks.task.stopwatch`
|
||||
|
||||
[tasks.task.stopwatch](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-stopwatch.html)
|
||||
|
||||
```lua
|
||||
tasks.task.stopwatch(taskId)
|
||||
```
|
||||
|
||||
#### Добавить задачу в избранное `tasks.task.favorite.add`
|
||||
|
||||
[tasks.task.favorite.add](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-favorite-add.html)
|
||||
|
||||
```lua
|
||||
tasks.task.favorite.add(taskId)
|
||||
```
|
||||
|
||||
#### Удалить задачу из избранного `tasks.task.favorite.remove`
|
||||
|
||||
[tasks.task.favorite.remove](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-favorite-remove.html)
|
||||
|
||||
```lua
|
||||
tasks.task.favorite.remove(taskId)
|
||||
```
|
||||
|
||||
#### Получить доступные поля задачи `tasks.task.getFields`
|
||||
|
||||
[tasks.task.getFields](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-getfields.html)
|
||||
|
||||
```lua
|
||||
tasks.task.getFields()
|
||||
```
|
||||
|
||||
#### Проверить доступ к задаче `tasks.task.getaccess`
|
||||
|
||||
[tasks.task.getaccess](https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-getaccess.html)
|
||||
|
||||
```lua
|
||||
tasks.task.getaccess(taskId)
|
||||
```
|
||||
|
||||
#### Получить историю изменений задачи `tasks.task.history.list`
|
||||
|
||||
[tasks.task.history.list](https://apidocs.bitrix24.ru/api-reference/task-history-list.html)
|
||||
|
||||
```lua
|
||||
tasks.task.history.list(taskId, order, filter, start)
|
||||
```
|
||||
|
||||
#### Включить режим «Без звука» для задачи `tasks.task.mute`
|
||||
|
||||
[tasks.task.mute](https://apidocs.bitrix24.ru/api-reference/task-mute.html)
|
||||
|
||||
```lua
|
||||
tasks.task.mute(taskId)
|
||||
```
|
||||
|
||||
#### Выключить режим «Без звука» для задачи `tasks.task.unmute`
|
||||
|
||||
[tasks.task.unmute](https://apidocs.bitrix24.ru/api-reference/task-unmute.html)
|
||||
|
||||
```lua
|
||||
tasks.task.unmute(taskId)
|
||||
```
|
||||
|
||||
|
||||
#### Создать зависимость задачи `task.dependence.add`
|
||||
|
||||
[task.dependence.add](https://apidocs.bitrix24.ru/api-reference/task-dependence-add.html)
|
||||
|
||||
```lua
|
||||
task.dependence.add(taskId, fields)
|
||||
```
|
||||
|
||||
#### Удалить зависимость задачи `task.dependence.delete`
|
||||
|
||||
[task.dependence.delete](https://apidocs.bitrix24.ru/api-reference/task-dependence-delete.html)
|
||||
|
||||
```lua
|
||||
task.dependence.delete(taskId, dependence_id)
|
||||
```
|
||||
|
||||
#### Добавить результат из комментария `task.result.addFromComment`
|
||||
|
||||
[task.result.addFromComment](https://apidocs.bitrix24.ru/api-reference/task-result-addfromcomment.html)
|
||||
|
||||
```lua
|
||||
task.result.addFromComment(task_id, comment_id)
|
||||
```
|
||||
|
||||
#### Получить список элементов чек-листа `task.checklistitem.getlist`
|
||||
|
||||
[task.checklistitem.getlist](https://apidocs.bitrix24.ru/api-reference/task-checklistitem-getlist.html)
|
||||
|
||||
```lua
|
||||
task.checklistitem.getlist(task_id, order, filter, start)
|
||||
```
|
||||
|
||||
Отлично, принято. Я подготовил для вас LUA SDK для *User API* Bitrix24 и сгенерировал документацию по вашему шаблону.
|
||||
|
||||
### 1. Код модуля `bitrix/user.lua`
|
||||
|
||||
Этот файл нужно сохранить как `bitrix/user.lua`. Он реализует все основные методы из документации.
|
||||
|
||||
```lua
|
||||
local _M = require('bitrix.api')
|
||||
|
||||
_M.user = {}
|
||||
_M.user.field = {}
|
||||
_M.user.status = {}
|
||||
_M.user.avatar = {}
|
||||
|
||||
--[[
|
||||
Пользователи (user.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-get.html
|
||||
|
||||
function _M.user.get(id)
|
||||
return _M.post('user.get', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-getlist.html
|
||||
|
||||
function _M.user.getlist(order, filter, select, params, start)
|
||||
select = select or {'*'}
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('user.getlist', {
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['select'] = select,
|
||||
['params'] = params,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-current.html
|
||||
|
||||
function _M.user.current()
|
||||
return _M.post('user.current', {})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-fields.html
|
||||
|
||||
function _M.user.fields()
|
||||
return _M.post('user.fields', {})
|
||||
end
|
||||
|
||||
--[[
|
||||
Пользовательские поля (user.field.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-get.html
|
||||
|
||||
function _M.user.field.get(id)
|
||||
return _M.post('user.field.get', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-add.html
|
||||
|
||||
function _M.user.field.add(fields)
|
||||
return _M.post('user.field.add', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-update.html
|
||||
|
||||
function _M.user.field.update(id, fields)
|
||||
return _M.post('user.field.update', { ['ID'] = id, ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-delete.html
|
||||
|
||||
function _M.user.field.delete(id)
|
||||
return _M.post('user.field.delete', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-getlist.html
|
||||
|
||||
function _M.user.field.getlist(order, filter)
|
||||
return _M.post('user.field.getlist', { ['order'] = order, ['filter'] = filter })
|
||||
end
|
||||
|
||||
--[[
|
||||
Статусы пользователей (user.status.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-status-get.html
|
||||
|
||||
function _M.user.status.get(user_id)
|
||||
return _M.post('user.status.get', { ['USER_ID'] = user_id })
|
||||
end
|
||||
|
||||
--[[
|
||||
Аватары (user.avatar.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-avatar-get.html
|
||||
|
||||
function _M.user.avatar.get(user_id, size)
|
||||
-- size может быть 'small', 'big' или nil (оригинал)
|
||||
local params = { ['USER_ID'] = user_id }
|
||||
if size then params['SIZE'] = size end
|
||||
return _M.post('user.avatar.get', params)
|
||||
end
|
||||
|
||||
return _M
|
||||
```
|
||||
|
||||
# Пользователи
|
||||
|
||||
```lua
|
||||
local user = require("bitrix.user")
|
||||
```
|
||||
|
||||
#### Получить пользователя по ID `user.get`
|
||||
|
||||
[user.get](https://apidocs.bitrix24.ru/api-reference/user/user-get.html)
|
||||
|
||||
```lua
|
||||
user.get(id)
|
||||
```
|
||||
|
||||
#### Получить список пользователей `user.getlist`
|
||||
|
||||
[user.getlist](https://apidocs.bitrix24.ru/api-reference/user/user-getlist.html)
|
||||
|
||||
```lua
|
||||
user.getlist(order, filter, select, params, start)
|
||||
```
|
||||
|
||||
#### Получить текущего пользователя `user.current`
|
||||
|
||||
[user.current](https://apidocs.bitrix24.ru/api-reference/user/user-current.html)
|
||||
|
||||
```lua
|
||||
user.current()
|
||||
```
|
||||
|
||||
#### Получить описание полей пользователя `user.fields`
|
||||
|
||||
[user.fields](https://apidocs.bitrix24.ru/api-reference/user/user-fields.html)
|
||||
|
||||
```lua
|
||||
user.fields()
|
||||
```
|
||||
|
||||
#### Получить пользовательское поле по ID `user.field.get`
|
||||
|
||||
[user.field.get](https://apidocs.bitrix24.ru/api-reference/user/user-field-get.html)
|
||||
|
||||
```lua
|
||||
user.field.get(id)
|
||||
```
|
||||
|
||||
#### Создать новое пользовательское поле `user.field.add`
|
||||
|
||||
[user.field.add](https://apidocs.bitrix24.ru/api-reference/user/user-field-add.html)
|
||||
|
||||
```lua
|
||||
user.field.add(fields)
|
||||
```
|
||||
|
||||
#### Обновить пользовательское поле `user.field.update`
|
||||
|
||||
[user.field.update](https://apidocs.bitrix24.ru/api-reference/user/user-field-update.html)
|
||||
|
||||
```lua
|
||||
user.field.update(id, fields)
|
||||
```
|
||||
|
||||
#### Удалить пользовательское поле `user.field.delete`
|
||||
|
||||
[user.field.delete](https://apidocs.bitrix24.ru/api-reference/user/user-field-delete.html)
|
||||
|
||||
```lua
|
||||
user.field.delete(id)
|
||||
```
|
||||
|
||||
#### Получить список пользовательских полей `user.field.getlist`
|
||||
|
||||
[user.field.getlist](https://apidocs.bitrix24.ru/api-reference/user/user-field-getlist.html)
|
||||
|
||||
```lua
|
||||
user.field.getlist(order, filter)
|
||||
```
|
||||
|
||||
#### Получить статус пользователя `user.status.get`
|
||||
|
||||
[user.status.get](https://apidocs.bitrix24.ru/api-reference/user/user-status-get.html)
|
||||
|
||||
```lua
|
||||
user.status.get(user_id)
|
||||
```
|
||||
|
||||
#### Получить аватар пользователя `user.avatar.get`
|
||||
|
||||
[user.avatar.get](https://apidocs.bitrix24.ru/api-reference/user/user-avatar-get.html)
|
||||
|
||||
```lua
|
||||
user.avatar.get(user_id, size) -- size: 'small', 'big' или nil (оригинал)
|
||||
```
|
||||
|
||||
Конечно. Вот документация для модуля Chats в формате Markdown, отформатированная согласно вашим требованиям (пустая строка после подзаголовков).
|
||||
|
||||
```
|
||||
# Чаты
|
||||
|
||||
```lua
|
||||
local chat = require("bitrix.chat")
|
||||
```
|
||||
|
||||
#### Получить чат по ID `chat.get`
|
||||
|
||||
[chat.get](https://apidocs.bitrix24.ru/api-reference/chats/chat-get.html)
|
||||
|
||||
```lua
|
||||
chat.get(dialog_id)
|
||||
```
|
||||
|
||||
#### Получить список чатов `chat.getlist`
|
||||
|
||||
[chat.getlist](https://apidocs.bitrix24.ru/api-reference/chats/chat-getlist.html)
|
||||
|
||||
```lua
|
||||
chat.getlist(order, filter, select, params, start)
|
||||
```
|
||||
|
||||
#### Создать новый чат `chat.create`
|
||||
|
||||
[chat.create](https://apidocs.bitrix24.ru/api-reference/chats/chat-create.html)
|
||||
|
||||
```lua
|
||||
chat.create(fields)
|
||||
```
|
||||
|
||||
#### Добавить пользователя в чат `chat.addUser`
|
||||
|
||||
[chat.addUser](https://apidocs.bitrix24.ru/api-reference/chats/chat-add-user.html)
|
||||
|
||||
```lua
|
||||
chat.addUser(dialog_id, user_id)
|
||||
```
|
||||
|
||||
#### Удалить пользователя из чата `chat.removeUser`
|
||||
|
||||
[chat.removeUser](https://apidocs.bitrix24.ru/api-reference/chats/chat-remove-user.html)
|
||||
|
||||
```lua
|
||||
chat.removeUser(dialog_id, user_id)
|
||||
```
|
||||
|
||||
## Messages
|
||||
|
||||
#### Отправить сообщение `chat.message.add`
|
||||
|
||||
[chat.message.add](https://apidocs.bitrix24.ru/api-reference/chats/chat-message-add.html)
|
||||
|
||||
```lua
|
||||
chat.message.add(chat_id, message, params)
|
||||
```
|
||||
|
||||
#### Получить список сообщений `chat.message.getList`
|
||||
|
||||
[chat.message.getList](https://apidocs.bitrix24.ru/api-reference/chats/chat-message-get-list.html)
|
||||
|
||||
```lua
|
||||
chat.message.getList(chat_id, order, filter, start)
|
||||
```
|
||||
|
||||
#### Изменить сообщение `chat.message.update`
|
||||
|
||||
[chat.message.update](https://apidocs.bitrix24.ru/api-reference/chats/chat-message-update.html)
|
||||
|
||||
```lua
|
||||
chat.message.update(chat_id, message_id, message)
|
||||
```
|
||||
|
||||
#### Удалить сообщение `chat.message.delete`
|
||||
|
||||
[chat.message.delete](https://apidocs.bitrix24.ru/api-reference/chats/chat-message-delete.html)
|
||||
|
||||
```lua
|
||||
chat.message.delete(chat_id, message_id)
|
||||
```
|
||||
|
||||
#### Получить список пользователей в чате `chat.user.getList`
|
||||
|
||||
[chat.user.getList](https://apidocs.bitrix24.ru/api-reference/chats/chat-user-get-list.html)
|
||||
|
||||
```lua
|
||||
chat.user.getList(dialog_id)
|
||||
```
|
||||
|
||||
# Телефония
|
||||
|
||||
```lua
|
||||
local telephony = require("bitrix.telephony")
|
||||
```
|
||||
|
||||
#### Зарегистрировать внешний звонок `telephony.externalcall.register`
|
||||
|
||||
[telephony.externalcall.register](https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-register.html)
|
||||
|
||||
```lua
|
||||
telephony.externalcall.register(fields)
|
||||
```
|
||||
|
||||
#### Завершить внешний звонок `telephony.externalcall.finish`
|
||||
|
||||
[telephony.externalcall.finish](https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-finish.html)
|
||||
|
||||
```lua
|
||||
telephony.externalcall.finish(fields)
|
||||
```
|
||||
|
||||
#### Показать карточку звонка `telephony.externalcall.show`
|
||||
|
||||
[telephony.externalcall.show](https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-show.html)
|
||||
|
||||
```lua
|
||||
telephony.externalcall.show(fields)
|
||||
```
|
||||
|
||||
#### Получить статистику звонков `telephony.statistic.get`
|
||||
|
||||
[telephony.statistic.get](https://apidocs.bitrix24.ru/api-reference/telephony/telephony-statistic-get.html)
|
||||
|
||||
```lua
|
||||
telephony.statistic.get(order, filter, start)
|
||||
```
|
||||
|
||||
# Файлы
|
||||
|
||||
```lua
|
||||
local disk = require("bitrix.disk")
|
||||
```
|
||||
|
||||
#### Получить список хранилищ `disk.storage.get`
|
||||
|
||||
[disk.storage.get](https://apidocs.bitrix24.ru/api-reference/disk/disk-storage-get.html)
|
||||
|
||||
```lua
|
||||
disk.storage.get()
|
||||
```
|
||||
|
||||
#### Создать папку `disk.folder.add`
|
||||
|
||||
[disk.folder.add](https://apidocs.bitrix24.ru/api-reference/disk/disk-folder-add.html)
|
||||
|
||||
```lua
|
||||
disk.folder.add(fields)
|
||||
```
|
||||
|
||||
#### Загрузить файл `disk.file.upload`
|
||||
|
||||
[disk.file.upload](https://apidocs.bitrix24.ru/api-reference/disk/disk-file-upload.html)
|
||||
|
||||
```lua
|
||||
disk.file.upload(filename, file_content, folder_id)
|
||||
```
|
||||
|
||||
#### Получить URL для скачивания файла `disk.file.getDownloadUrl`
|
||||
|
||||
[disk.file.getDownloadUrl](https://apidocs.bitrix24.ru/api-reference/disk/disk-file-get-download-url.html)
|
||||
|
||||
```lua
|
||||
disk.file.getDownloadUrl(file_id)
|
||||
```
|
||||
|
||||
# Календарь
|
||||
|
||||
```lua
|
||||
local calendar = require("bitrix.calendar")
|
||||
```
|
||||
|
||||
#### Создать событие `calendar.event.add`
|
||||
|
||||
[calendar.event.add](https://apidocs.bitrix24.ru/api-reference/calendar/calendar-event-add.html)
|
||||
|
||||
```lua
|
||||
calendar.event.add(fields)
|
||||
```
|
||||
|
||||
#### Получить событие по ID `calendar.event.get`
|
||||
|
||||
[calendar.event.get](https://apidocs.bitrix24.ru/api-reference/calendar/calendar-event-get.html)
|
||||
|
||||
```lua
|
||||
calendar.event.get(event_id)
|
||||
```
|
||||
|
||||
#### Получить список календарей `calendar.section.get`
|
||||
|
||||
[calendar.section.get](https://apidocs.bitrix24.ru/api-reference/calendar/calendar-section-get.html)
|
||||
|
||||
```lua
|
||||
calendar.section.get()
|
||||
```
|
||||
|
||||
# Учет времени
|
||||
|
||||
```lua
|
||||
local timeman = require("bitrix.timeman")
|
||||
```
|
||||
|
||||
#### Начать учет времени `timeman.start`
|
||||
|
||||
[timeman.start](https://apidocs.bitrix24.ru/api-reference/timeman/timeman-start.html)
|
||||
|
||||
```lua
|
||||
timeman.start(fields)
|
||||
```
|
||||
|
||||
#### Остановить учет времени `timeman.stop`
|
||||
|
||||
[timeman.stop](https://apidocs.bitrix24.ru/api-reference/timeman/timeman-stop.html)
|
||||
|
||||
```lua
|
||||
timeman.stop(fields)
|
||||
```
|
||||
|
||||
5
bitrix.test_conf
Normal file
5
bitrix.test_conf
Normal file
@ -0,0 +1,5 @@
|
||||
url::https://mydomain.ru #API URL
|
||||
user::1 #Bitrix API User id
|
||||
token::eqmfsafdsfdsadas #Token
|
||||
ssl::0 #SSL Validation (0,1 or 2)
|
||||
format::json #Response format
|
||||
84
bitrix/api.lua
Normal file
84
bitrix/api.lua
Normal file
@ -0,0 +1,84 @@
|
||||
local json = require('cjson')
|
||||
local cURL = require("cURL")
|
||||
local log = require('utils.log')
|
||||
local url = require('utils.url')
|
||||
local config = require('config.bitrix')
|
||||
local array = require('utils.array')
|
||||
|
||||
local _M = {}
|
||||
_M.result = nil
|
||||
log.outfile = 'logs/bitrix_'..os.date('%Y-%m-%d')..'.log'
|
||||
log.level = 'trace'
|
||||
_M.base = config.url..'/rest/'..config.user..'/'..config.token..'/';
|
||||
_M.res = {}
|
||||
_M.format = config.format
|
||||
|
||||
local function get_result(str,url,full)
|
||||
local result, err = pcall(json.decode,str)
|
||||
if result then
|
||||
_M.result = json.decode(str)
|
||||
else
|
||||
log.error(url..':'..err)
|
||||
return nil, err
|
||||
end
|
||||
if _M.result.result then
|
||||
if full then return _M.result else return _M.result.result end
|
||||
end
|
||||
log.error(url..str)
|
||||
return nil
|
||||
end
|
||||
|
||||
function _M.post(url,data,full)
|
||||
local str = ''
|
||||
url = _M.base..url
|
||||
local headers = {
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json'
|
||||
}
|
||||
local c = cURL.easy{
|
||||
url = url,
|
||||
post = true,
|
||||
postfields = json.encode(data),
|
||||
httpheader = headers,
|
||||
ssl_verifyhost = tonumber(config.ssl),
|
||||
ssl_verifypeer = tonumber(config.ssl),
|
||||
writefunction = function(st)
|
||||
str = str..st
|
||||
collectgarbage("collect")
|
||||
return #st
|
||||
end
|
||||
}
|
||||
local ok, err = c:perform()
|
||||
local code = c:getinfo_response_code()
|
||||
c:close()
|
||||
if not ok then return nil, err end
|
||||
if code ~= 200 then
|
||||
log.error(url..':'..str)
|
||||
return nil,str
|
||||
end
|
||||
if _M.format == 'json' then
|
||||
res,err = get_result(str,url,full)
|
||||
else
|
||||
res = str
|
||||
end
|
||||
if not res then return nil,err end
|
||||
return res
|
||||
end
|
||||
|
||||
function _M.fetchAllPages(apiCall, initialStart)
|
||||
local result = {}
|
||||
local start = initialStart or 0
|
||||
local function loadPage(startPos)
|
||||
local res = apiCall(startPos)
|
||||
if res and res.result then
|
||||
array.merge(result, res.result)
|
||||
if res.next then
|
||||
loadPage(tonumber(res.next))
|
||||
end
|
||||
end
|
||||
end
|
||||
loadPage(start)
|
||||
return result
|
||||
end
|
||||
|
||||
return _M
|
||||
34
bitrix/calendar.lua
Normal file
34
bitrix/calendar.lua
Normal file
@ -0,0 +1,34 @@
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
_M.calendar = {}
|
||||
_M.calendar.event = {}
|
||||
_M.calendar.section = {}
|
||||
|
||||
--[[
|
||||
События (calendar.event.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/calendar/calendar-event-add.html
|
||||
|
||||
function _M.calendar.event.add(fields)
|
||||
return _M.post('calendar.event.add', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/calendar/calendar-event-get.html
|
||||
|
||||
function _M.calendar.event.get(event_id)
|
||||
return _M.post('calendar.event.get', { ['event_id'] = event_id })
|
||||
end
|
||||
|
||||
--[[
|
||||
Календари (calendar.section.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/calendar/calendar-section-get.html
|
||||
|
||||
function _M.calendar.section.get()
|
||||
return _M.post('calendar.section.get', {})
|
||||
end
|
||||
|
||||
return _M
|
||||
105
bitrix/chat.lua
Normal file
105
bitrix/chat.lua
Normal file
@ -0,0 +1,105 @@
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
_M.chat = {}
|
||||
_M.chat.message = {}
|
||||
_M.chat.user = {}
|
||||
|
||||
--[[
|
||||
Чаты (chat.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-get.html
|
||||
|
||||
function _M.chat.get(dialog_id)
|
||||
return _M.post('chat.get', { ['dialog_id'] = dialog_id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-getlist.html
|
||||
|
||||
function _M.chat.getlist(order, filter, select, params, start)
|
||||
select = select or {'*'}
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('chat.getlist', {
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['select'] = select,
|
||||
['params'] = params,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-create.html
|
||||
|
||||
function _M.chat.create(fields)
|
||||
return _M.post('chat.create', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-add-user.html
|
||||
|
||||
function _M.chat.addUser(dialog_id, user_id)
|
||||
return _M.post('chat.addUser', { ['dialog_id'] = dialog_id, ['user_id'] = user_id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-remove-user.html
|
||||
|
||||
function _M.chat.removeUser(dialog_id, user_id)
|
||||
return _M.post('chat.removeUser', { ['dialog_id'] = dialog_id, ['user_id'] = user_id })
|
||||
end
|
||||
|
||||
--[[
|
||||
Сообщения (chat.message.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-message-add.html
|
||||
|
||||
function _M.chat.message.add(chat_id, message, params)
|
||||
local data = { ['chat_id'] = chat_id, ['message'] = message }
|
||||
if params then data['params'] = params end
|
||||
return _M.post('chat.message.add', data)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-message-get-list.html
|
||||
|
||||
function _M.chat.message.getList(chat_id, order, filter, start)
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('chat.message.getList', {
|
||||
['chat_id'] = chat_id,
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-message-update.html
|
||||
|
||||
function _M.chat.message.update(chat_id, message_id, message)
|
||||
return _M.post('chat.message.update', {
|
||||
['chat_id'] = chat_id,
|
||||
['message_id'] = message_id,
|
||||
['message'] = message
|
||||
})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-message-delete.html
|
||||
|
||||
function _M.chat.message.delete(chat_id, message_id)
|
||||
return _M.post('chat.message.delete', {
|
||||
['chat_id'] = chat_id,
|
||||
['message_id'] = message_id
|
||||
})
|
||||
end
|
||||
|
||||
--[[
|
||||
Пользователи чата (chat.user.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/chats/chat-user-get-list.html
|
||||
|
||||
function _M.chat.user.getList(dialog_id)
|
||||
return _M.post('chat.user.getList', { ['dialog_id'] = dialog_id })
|
||||
end
|
||||
|
||||
return _M
|
||||
@ -1,17 +1,6 @@
|
||||
local json = require('cjson')
|
||||
local cURL = require("cURL")
|
||||
local log = require('utils.log')
|
||||
local url = require('utils.url')
|
||||
local config = require('config.bitrix')
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
local _M = {}
|
||||
_M.result = nil
|
||||
log.outfile = 'logs/bitrix_'..os.date('%Y-%m-%d')..'.log'
|
||||
log.level = 'trace'
|
||||
_M.base = config.url..'/rest/'..config.user..'/'..config.token..'/';
|
||||
_M.res = {}
|
||||
_M.format = config.format
|
||||
_M.item = {}
|
||||
_M.deal = {}
|
||||
_M.deal.productrows = {}
|
||||
@ -67,58 +56,6 @@ _M.status = {}
|
||||
_M.status.entity = {}
|
||||
_M.category = {}
|
||||
|
||||
local function get_result(str,url,full)
|
||||
local result, err = pcall(json.decode,str)
|
||||
if result then
|
||||
_M.result = json.decode(str)
|
||||
else
|
||||
log.error(url..':'..err)
|
||||
return nil, err
|
||||
end
|
||||
if _M.result.result then
|
||||
if full then return _M.result else return _M.result.result end
|
||||
end
|
||||
log.error(url..str)
|
||||
return nil
|
||||
end
|
||||
|
||||
function _M.post(url,data,full)
|
||||
local str = ''
|
||||
url = _M.base..url
|
||||
local headers = {
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json'
|
||||
}
|
||||
local c = cURL.easy{
|
||||
url = url,
|
||||
post = true,
|
||||
postfields = json.encode(data),
|
||||
httpheader = headers,
|
||||
ssl_verifyhost = tonumber(config.ssl),
|
||||
ssl_verifypeer = tonumber(config.ssl),
|
||||
writefunction = function(st)
|
||||
str = str..st
|
||||
collectgarbage("collect")
|
||||
return #st
|
||||
end
|
||||
}
|
||||
local ok, err = c:perform()
|
||||
local code = c:getinfo_response_code()
|
||||
c:close()
|
||||
if not ok then return nil, err end
|
||||
if code ~= 200 then
|
||||
log.error(url..':'..str)
|
||||
return nil,str
|
||||
end
|
||||
if _M.format == 'json' then
|
||||
res,err = get_result(str,url,full)
|
||||
else
|
||||
res = str
|
||||
end
|
||||
if not res then return nil,err end
|
||||
return res
|
||||
end
|
||||
|
||||
--[[
|
||||
Items
|
||||
--]]
|
||||
|
||||
50
bitrix/disk.lua
Normal file
50
bitrix/disk.lua
Normal file
@ -0,0 +1,50 @@
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
_M.disk = {}
|
||||
_M.disk.folder = {}
|
||||
_M.disk.file = {}
|
||||
_M.disk.storage = {}
|
||||
|
||||
--[[
|
||||
Диск (disk.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/disk/disk-storage-get.html
|
||||
|
||||
function _M.disk.storage.get()
|
||||
return _M.post('disk.storage.get', {})
|
||||
end
|
||||
|
||||
--[[
|
||||
Папки (disk.folder.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/disk/disk-folder-add.html
|
||||
|
||||
function _M.disk.folder.add(fields)
|
||||
return _M.post('disk.folder.add', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
--[[
|
||||
Файлы (disk.file.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/disk/disk-file-upload.html
|
||||
|
||||
function _M.disk.file.upload(filename, file_content, folder_id)
|
||||
-- Метод upload использует multipart/form-data, поэтому используем отдельный эндпоинт в api.lua
|
||||
return _M.post('disk.file.upload', {
|
||||
FILENAME = filename,
|
||||
FILE_CONTENT = file_content,
|
||||
FOLDER_ID = folder_id
|
||||
})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/disk/disk-file-get-download-url.html
|
||||
|
||||
function _M.disk.file.getDownloadUrl(file_id)
|
||||
return _M.post('disk.file.getDownloadUrl', { ['fileId'] = file_id })
|
||||
end
|
||||
|
||||
return _M
|
||||
239
bitrix/tasks.lua
Normal file
239
bitrix/tasks.lua
Normal file
@ -0,0 +1,239 @@
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
_M.task = {}
|
||||
_M.task.item = {}
|
||||
_M.task.item.userfield = {}
|
||||
_M.task.commentitem = {}
|
||||
_M.task.result = {}
|
||||
_M.task.elapseditem = {}
|
||||
_M.task.dependence = {}
|
||||
_M.task.checklistitem = {}
|
||||
_M.task.history = {}
|
||||
_M.task.files = {}
|
||||
_M.task.stages = {}
|
||||
_M.task.flow = {}
|
||||
_M.task.planner = {}
|
||||
_M.task.counters = {}
|
||||
_M.task.favorite = {}
|
||||
|
||||
--[[
|
||||
Задачи (tasks.task.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-add.html
|
||||
|
||||
function _M.task.add(fields)
|
||||
return _M.post('tasks.task.add', {['fields'] = fields})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-update.html
|
||||
|
||||
function _M.task.update(taskId, fields)
|
||||
return _M.post('tasks.task.update', {['taskId'] = taskId, ['fields'] = fields})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-get.html
|
||||
|
||||
function _M.task.get(taskId)
|
||||
return _M.post('tasks.task.get', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-list.html
|
||||
|
||||
function _M.task.list(order, filter, select, params, start)
|
||||
select = select or {'*'}
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('tasks.task.list', {
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['select'] = select,
|
||||
['params'] = params,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-files-attach.html
|
||||
|
||||
function _M.task.files.attach(taskId, fileIds)
|
||||
return _M.post('tasks.task.files.attach', {['taskId'] = taskId, ['fileIds'] = fileIds})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-delegate.html
|
||||
|
||||
function _M.task.delegate(taskId, fields)
|
||||
return _M.post('tasks.task.delegate', {['taskId'] = taskId, ['fields'] = fields})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-counters-get.html
|
||||
|
||||
function _M.task.counters.get()
|
||||
return _M.post('tasks.task.counters.get', {})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-start.html
|
||||
|
||||
function _M.task.start(taskId)
|
||||
return _M.post('tasks.task.start', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-pause.html
|
||||
|
||||
function _M.task.pause(taskId)
|
||||
return _M.post('tasks.task.pause', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-defer.html
|
||||
|
||||
function _M.task.defer(taskId)
|
||||
return _M.post('tasks.task.defer', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-complete.html
|
||||
|
||||
function _M.task.complete(taskId)
|
||||
return _M.post('tasks.task.complete', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-renew.html
|
||||
|
||||
function _M.task.renew(taskId)
|
||||
return _M.post('tasks.task.renew', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-approve.html
|
||||
|
||||
function _M.task.approve(taskId)
|
||||
return _M.post('tasks.task.approve', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-disapprove.html
|
||||
|
||||
function _M.task.disapprove(taskId)
|
||||
return _M.post('tasks.task.disapprove', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-delete.html
|
||||
|
||||
function _M.task.delete(taskId)
|
||||
return _M.post('tasks.task.delete', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-startwatch.html
|
||||
|
||||
function _M.task.startwatch(taskId)
|
||||
return _M.post('tasks.task.startwatch', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-stopwatch.html
|
||||
|
||||
function _M.task.stopwatch(taskId)
|
||||
return _M.post('tasks.task.stopwatch', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-favorite-add.html
|
||||
|
||||
function _M.task.favorite.add(taskId)
|
||||
return _M.post('tasks.task.favorite.add', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-favorite-remove.html
|
||||
|
||||
function _M.task.favorite.remove(taskId)
|
||||
return _M.post('tasks.task.favorite.remove', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-getfields.html
|
||||
|
||||
function _M.task.getFields()
|
||||
return _M.post('tasks.task.getFields', {})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/tasks-task-getaccess.html
|
||||
|
||||
function _M.task.getaccess(taskId)
|
||||
return _M.post('tasks.task.getaccess', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-history-list.html
|
||||
|
||||
function _M.task.history.list(taskId, order, filter, start)
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('task.history.list', {
|
||||
['taskId'] = taskId,
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-mute.html
|
||||
|
||||
function _M.task.mute(taskId)
|
||||
return _M.post('task.mute', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-unmute.html
|
||||
|
||||
function _M.task.unmute(taskId)
|
||||
return _M.post('task.unmute', {['taskId'] = taskId})
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
Зависимости задач (task.dependence.*)
|
||||
]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-dependence-add.html
|
||||
|
||||
function _M.task.dependence.add(taskId, fields)
|
||||
return _M.post('task.dependence.add', {['taskId'] = taskId, ['fields'] = fields})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-dependence-delete.html
|
||||
|
||||
function _M.task.dependence.delete(taskId, dependence_id)
|
||||
return _M.post('task.dependence.delete', {['taskId'] = taskId, ['DEPENDENCE_ID'] = dependence_id})
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
Результаты задачи (tasks.task.result.*)
|
||||
]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-result-addfromcomment.html
|
||||
|
||||
function _M.task.result.addFromComment(task_id, comment_id)
|
||||
return _M.post('task.result.addFromComment',{['TASK_ID'] = task_id,['COMMENT_ID'] = comment_id})
|
||||
end
|
||||
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-result-list.html (ИСПРАВЛЕНО)
|
||||
|
||||
function _M.task.result.list(task_id, order, filter, start)
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('task.result.list',{['TASK_ID']=task_id,['order']=order,['filter']=filter,['start']=startPos},true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/tasks/task-result-deletefromcomment.html (ИСПРАВЛЕНО)
|
||||
|
||||
function _M.task.result.deleteFromComment(comment_id)
|
||||
return _M.post('task.result.deleteFromComment',{['COMMENT_ID'] = comment_id})
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
Чек-листы (task.checklistitem.*)
|
||||
]]
|
||||
|
||||
function _M.task.checklistitem.getlist(task_id, order, filter, start)
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('task.checklistitem.getlist',{['TASK_ID']=task_id,['order']=order,['filter']=filter,['start']=startPos},true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
return _M
|
||||
41
bitrix/telephony.lua
Normal file
41
bitrix/telephony.lua
Normal file
@ -0,0 +1,41 @@
|
||||
local _M = require('bitrix.api')
|
||||
local array = require('utils.array')
|
||||
|
||||
_M.telephony = {}
|
||||
_M.telephony.externalcall = {}
|
||||
|
||||
--[[
|
||||
Телефония (telephony.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-register.html
|
||||
|
||||
function _M.telephony.externalcall.register(fields)
|
||||
return _M.post('telephony.externalcall.register', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-finish.html
|
||||
|
||||
function _M.telephony.externalcall.finish(fields)
|
||||
return _M.post('telephony.externalcall.finish', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/telephony/telephony-externalcall-show.html
|
||||
|
||||
function _M.telephony.externalcall.show(fields)
|
||||
return _M.post('telephony.externalcall.show', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/telephony/telephony-statistic-get.html
|
||||
|
||||
function _M.telephony.statistic.get(order, filter, start)
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('telephony.statistic.get', {
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
return _M
|
||||
22
bitrix/timeman.lua
Normal file
22
bitrix/timeman.lua
Normal file
@ -0,0 +1,22 @@
|
||||
local _M = require('bitrix.api')
|
||||
|
||||
_M.timeman = {}
|
||||
_M.timeman.record = {}
|
||||
|
||||
--[[
|
||||
Учет времени (timeman.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/timeman/timeman-start.html
|
||||
|
||||
function _M.timeman.start(fields)
|
||||
return _M.post('timeman.start', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/timeman/timeman-stop.html
|
||||
|
||||
function _M.timeman.stop(fields)
|
||||
return _M.post('timeman.stop', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
return _M
|
||||
102
bitrix/user.lua
Normal file
102
bitrix/user.lua
Normal file
@ -0,0 +1,102 @@
|
||||
local _M = require('bitrix.api')
|
||||
|
||||
_M.user = {}
|
||||
_M.user.field = {}
|
||||
_M.user.status = {}
|
||||
_M.user.avatar = {}
|
||||
|
||||
--[[
|
||||
Пользователи (user.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-get.html
|
||||
|
||||
function _M.user.get(id)
|
||||
return _M.post('user.get', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-getlist.html
|
||||
|
||||
function _M.user.getlist(order, filter, select, params, start)
|
||||
select = select or {'*'}
|
||||
return _M.fetchAllPages(function(startPos)
|
||||
return _M.post('user.getlist', {
|
||||
['order'] = order,
|
||||
['filter'] = filter,
|
||||
['select'] = select,
|
||||
['params'] = params,
|
||||
['start'] = startPos
|
||||
}, true)
|
||||
end, start)
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-current.html
|
||||
|
||||
function _M.user.current()
|
||||
return _M.post('user.current', {})
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-fields.html
|
||||
|
||||
function _M.user.fields()
|
||||
return _M.post('user.fields', {})
|
||||
end
|
||||
|
||||
--[[
|
||||
Пользовательские поля (user.field.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-get.html
|
||||
|
||||
function _M.user.field.get(id)
|
||||
return _M.post('user.field.get', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-add.html
|
||||
|
||||
function _M.user.field.add(fields)
|
||||
return _M.post('user.field.add', { ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-update.html
|
||||
|
||||
function _M.user.field.update(id, fields)
|
||||
return _M.post('user.field.update', { ['ID'] = id, ['fields'] = fields })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-delete.html
|
||||
|
||||
function _M.user.field.delete(id)
|
||||
return _M.post('user.field.delete', { ['ID'] = id })
|
||||
end
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-field-getlist.html
|
||||
|
||||
function _M.user.field.getlist(order, filter)
|
||||
return _M.post('user.field.getlist', { ['order'] = order, ['filter'] = filter })
|
||||
end
|
||||
|
||||
--[[
|
||||
Статусы пользователей (user.status.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-status-get.html
|
||||
|
||||
function _M.user.status.get(user_id)
|
||||
return _M.post('user.status.get', { ['USER_ID'] = user_id })
|
||||
end
|
||||
|
||||
--[[
|
||||
Аватары (user.avatar.*)
|
||||
--]]
|
||||
|
||||
-- https://apidocs.bitrix24.ru/api-reference/user/user-avatar-get.html
|
||||
|
||||
function _M.user.avatar.get(user_id, size)
|
||||
-- size может быть 'small', 'big' или nil (оригинал)
|
||||
local params = { ['USER_ID'] = user_id }
|
||||
if size then params['SIZE'] = size end
|
||||
return _M.post('user.avatar.get', params)
|
||||
end
|
||||
|
||||
return _M
|
||||
77
test_calendar.lua
Normal file
77
test_calendar.lua
Normal file
@ -0,0 +1,77 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local calendar = require('bitrix.calendar')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_calendar_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- Данные для тестов
|
||||
local test_user_id = 1 -- Текущий пользователь (обычно ID 1)
|
||||
local tomorrow = os.date("!*t", os.time() + 24*3600)
|
||||
local date_from = os.date("%Y%m%dT000000", tomorrow)
|
||||
local date_to = os.date("%Y%m%dT235959", tomorrow)
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_section_get()
|
||||
log.info('--- Тест: Получение списка календарей (section.get) ---')
|
||||
|
||||
local result, error_response = calendar.calendar.section.get()
|
||||
|
||||
if result and #result > 0 then
|
||||
log.info(string.format('Тест получения календарей: УСПЕШНО. Найдено календарей: %d', #result))
|
||||
-- Выведем названия первых двух для примера
|
||||
log.debug('Пример: ' .. result[1].NAME .. ', ' .. (result[2] and result[2].NAME or 'N/A'))
|
||||
else
|
||||
log.error('Тест получения календарей: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_event_add()
|
||||
log.info('--- Тест: Создание события (event.add) ---')
|
||||
|
||||
local event_name = "Test Event - " .. os.date("%H-%M-%S")
|
||||
local fields = {
|
||||
NAME = event_name,
|
||||
DESCRIPTION = "Создано автоматически тестовым скриптом",
|
||||
DT_FROM = date_from,
|
||||
DT_TO = date_to,
|
||||
OWNER_ID = test_user_id,
|
||||
}
|
||||
|
||||
local result, error_response = calendar.calendar.event.add(fields)
|
||||
|
||||
if result and result.ID then
|
||||
log.info(string.format('Тест создания события: УСПЕШНО. ID нового события: %d', result.ID))
|
||||
return result.ID -- Возвращаем ID для следующего теста
|
||||
else
|
||||
log.error('Тест создания события: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local function test_event_get(new_event_id)
|
||||
if not new_event_id then return end -- Если создание не удалось, пропускаем
|
||||
|
||||
log.info('--- Тест: Получение события по ID (event.get) ---')
|
||||
|
||||
local result, error_response = calendar.calendar.event.get(new_event_id)
|
||||
|
||||
if result and result.ID == new_event_id then
|
||||
log.info(string.format('Тест получения события: УСПЕШНО. Название: "%s"', result.NAME))
|
||||
else
|
||||
log.error('Тест получения события: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_section_get()
|
||||
local new_event_id = test_event_add()
|
||||
test_event_get(new_event_id)
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
90
test_chat.lua
Normal file
90
test_chat.lua
Normal file
@ -0,0 +1,90 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local chat = require('bitrix.chat')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_chats_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- ID чата для тестов. ЗАМЕНИТЕ на ID существующего чата.
|
||||
-- Это может быть ID группы или открытого чата.
|
||||
local test_chat_id = 1
|
||||
local test_user_id_to_add = 2 -- ID пользователя для теста добавления в чат
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_chat_get()
|
||||
log.info('--- Тест: Получение чата (get) ---')
|
||||
local result, error_response = chat.get(test_chat_id)
|
||||
|
||||
if result and result.id then
|
||||
log.info(string.format('Тест получения чата: УСПЕШНО. Название: "%s"', result.name or 'N/A'))
|
||||
else
|
||||
log.error('Тест получения чата: ПРОВАЛЕНО.')
|
||||
log.error('Ответ сервера: ' .. json.encode(result))
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_chat_getlist()
|
||||
log.info('--- Тест: Листинг чатов (getlist) ---')
|
||||
|
||||
-- Фильтр: только открытые чаты (тип 'L' - lines/group), созданные недавно.
|
||||
local two_days_ago_timestamp = os.time() - 2 * 24 * 3600
|
||||
local date_two_days_ago = os.date("%Y-%m-%d", two_days_ago_timestamp)
|
||||
|
||||
local filter = {
|
||||
TYPE = 'L',
|
||||
>=DATE_CREATE = date_two_days_ago,
|
||||
}
|
||||
|
||||
local result_list, error_response = chat.getlist({'ID', 'NAME'}, filter, {'ID', 'NAME', 'TYPE'}, nil, 0)
|
||||
|
||||
if result_list and #result_list > 0 then
|
||||
log.info(string.format('Тест листинга чатов: УСПЕШНО. Найдено чатов: %d', #result_list))
|
||||
elseif result_list and #result_list == 0 then
|
||||
log.warning('Тест листинга чатов: Чаты не найдены по фильтру.')
|
||||
else
|
||||
log.error('Тест листинга чатов: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_chat_message_getList()
|
||||
log.info('--- Тест: Получение сообщений чата (message.getList) ---')
|
||||
|
||||
local result_list, error_response = chat.message.getList(test_chat_id, {'ID'}, {}, 0)
|
||||
|
||||
if result_list and #result_list > 0 then
|
||||
log.info(string.format('Тест получения сообщений: УСПЕШНО. Найдено сообщений: %d', #result_list))
|
||||
elseif result_list and #result_list == 0 then
|
||||
log.warning('Тест получения сообщений: Сообщений не найдено.')
|
||||
else
|
||||
log.error('Тест получения сообщений: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_chat_message_add()
|
||||
log.info('--- Тест: Отправка сообщения в чат (message.add) ---')
|
||||
|
||||
local new_message_text = 'Привет! Это тестовое сообщение от Lua SDK.'
|
||||
local result, error_response = chat.message.add(test_chat_id, new_message_text)
|
||||
|
||||
if result and result.id then
|
||||
log.info(string.format('Тест отправки сообщения: УСПЕШНО. ID сообщения: %s', tostring(result.id)))
|
||||
else
|
||||
log.error('Тест отправки сообщения: ПРОВАЛЕНО.')
|
||||
log.error('Ответ сервера: ' .. json.encode(result))
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_chat_get()
|
||||
test_chat_getlist()
|
||||
test_chat_message_getList()
|
||||
test_chat_message_add() -- <-- ВНИМАНИЕ! Этот тест отправит сообщение в чат!
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
53
test_disk.lua
Normal file
53
test_disk.lua
Normal file
@ -0,0 +1,53 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local disk = require('bitrix.disk')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_disk_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- Данные для тестов
|
||||
local test_storage_id = 1 -- Обычно корневое хранилище имеет ID 1
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_storage_get()
|
||||
log.info('--- Тест: Получение списка хранилищ (storage.get) ---')
|
||||
|
||||
local result, error_response = disk.disk.storage.get()
|
||||
|
||||
if result and #result > 0 then
|
||||
log.info(string.format('Тест получения хранилищ: УСПЕШНО. Найдено хранилищ: %d', #result))
|
||||
-- Выведем названия первых двух для примера
|
||||
log.debug('Пример: ' .. result[1].NAME .. ', ' .. (result[2] and result[2].NAME or 'N/A'))
|
||||
else
|
||||
log.error('Тест получения хранилищ: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_folder_add()
|
||||
log.info('--- Тест: Создание папки (folder.add) ---')
|
||||
|
||||
local folder_name = "Test Folder - " .. os.date("%H-%M-%S")
|
||||
local fields = {
|
||||
NAME = folder_name,
|
||||
PARENT_ID = test_storage_id,
|
||||
}
|
||||
|
||||
local result, error_response = disk.disk.folder.add(fields)
|
||||
|
||||
if result and result.ID then
|
||||
log.info(string.format('Тест создания папки: УСПЕШНО. ID новой папки: %d', result.ID))
|
||||
else
|
||||
log.error('Тест создания папки: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_storage_get()
|
||||
test_folder_add()
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
118
test_tasks.lua
Normal file
118
test_tasks.lua
Normal file
@ -0,0 +1,118 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local tasks = require('bitrix.tasks')
|
||||
|
||||
-- Настройка логирования (можно оставить как в api или задать свою)
|
||||
log.outfile = 'logs/tests_tasks_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace' -- Уровень детализации логов
|
||||
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- Подключаем модули.
|
||||
-- bitrix.api уже содержит в себе все настройки подключения из config.bitrix
|
||||
local tasks = require('bitrix.tasks')
|
||||
|
||||
-- ID задачи для тестов. Предполагается, что задача с таким ID существует.
|
||||
-- Если задачи с ID 1 нет, создайте любую тестовую задачу вручную и используйте её ID.
|
||||
local task_id = 242
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_task_get()
|
||||
log.info('--- Тест: Получение задачи (get) ---')
|
||||
local result, error_response = tasks.task.get(task_id)
|
||||
|
||||
if result and result.task then
|
||||
log.info(string.format('Тест получения задачи: УСПЕШНО. Название: "%s"', result.task.title or 'N/A'))
|
||||
else
|
||||
log.error('Тест получения задачи: ПРОВАЛЕНО.')
|
||||
log.error('Ответ сервера: ' .. json.encode(result))
|
||||
if error_response then
|
||||
log.error('Ответ сервера: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_task_list()
|
||||
log.info('--- Тест: Листинг задач (list) ---')
|
||||
|
||||
-- Фильтр: задачи, созданные за последние 2 дня, в статусе "Новая" (STATUS = 0)
|
||||
|
||||
-- 1. Получаем временную метку (timestamp) для момента "2 дня назад"
|
||||
local two_days_ago_timestamp = os.time() - 2 * 24 * 3600
|
||||
|
||||
-- 2. Форматируем временную метку в строку вида 'ГГГГ-ММ-ДД'
|
||||
local date_two_days_ago = os.date("%Y-%m-%d", two_days_ago_timestamp)
|
||||
|
||||
-- 3. Собираем финальный фильтр для API
|
||||
local filter = {
|
||||
['>=DATE_CREATE'] = date_two_days_ago,
|
||||
['STATUS'] = '0'
|
||||
}
|
||||
|
||||
local result_list, error_response = tasks.task.list(nil, filter, {'ID', 'TITLE'}, nil, 0)
|
||||
|
||||
if result_list and #result_list > 0 then
|
||||
log.info(string.format('Тест листинга задач: УСПЕШНО. Найдено задач: %d', #result_list))
|
||||
elseif result_list and #result_list == 0 then
|
||||
log.warning('Тест листинга задач: Задач не найдено по фильтру. Проверьте даты и статус.')
|
||||
else
|
||||
log.error('Тест листинга задач: ПРОВАЛЕНО.')
|
||||
if error_response then
|
||||
log.error('Ответ сервера: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_task_add_update_delete()
|
||||
log.info('--- Тест: Цепочка Add -> Update -> Delete ---')
|
||||
|
||||
-- Add
|
||||
log.debug('Шаг 1/3: Создание задачи...')
|
||||
local add_result, add_error = tasks.task.add({
|
||||
TITLE = 'Тестовая задача (авто-тест)',
|
||||
DESCRIPTION = 'Создана автоматически тестовым скриптом',
|
||||
RESPONSIBLE_ID = 1, -- ID ответственного (обычно 1 - текущий пользователь)
|
||||
GROUP_ID = {} -- Приватная задача (без группы)
|
||||
})
|
||||
local new_task_id
|
||||
if add_result and add_result.task and add_result.task.id then
|
||||
new_task_id = add_result.task.id
|
||||
log.info(string.format('Шаг 1/3: УСПЕШНО. ID новой задачи: %d', new_task_id))
|
||||
else
|
||||
log.error('Шаг 1/3: ПРОВАЛЕНО (создание).')
|
||||
if add_error then log.error(add_error) end
|
||||
return -- Останавливаем тест, если создание не удалось
|
||||
end
|
||||
|
||||
-- Update
|
||||
log.debug('Шаг 2/3: Обновление задачи...')
|
||||
local update_result, update_error = tasks.task.update(new_task_id, {
|
||||
DESCRIPTION = '[ОБНОВЛЕНО] Задача изменена автоматически тестовым скриптом'
|
||||
})
|
||||
|
||||
if update_result and update_result.task then
|
||||
log.info('Шаг 2/3: УСПЕШНО (обновление).')
|
||||
else
|
||||
log.error('Шаг 2/3: ПРОВАЛЕНО (обновление).')
|
||||
if update_error then log.error(update_error) end
|
||||
end
|
||||
|
||||
-- Delete
|
||||
log.debug('Шаг 3/3: Удаление задачи...')
|
||||
local delete_result, delete_error = tasks.task.delete(new_task_id)
|
||||
|
||||
if delete_result and delete_result.task then
|
||||
log.info('Шаг 3/3: УСПЕШНО (удаление).')
|
||||
else
|
||||
log.error('Шаг 3/3: ПРОВАЛЕНО (удаление).')
|
||||
if delete_error then log.error(delete_error) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_task_get()
|
||||
test_task_list()
|
||||
test_task_add_update_delete()
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
64
test_telephony.lua
Normal file
64
test_telephony.lua
Normal file
@ -0,0 +1,64 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local os = require('os')
|
||||
local telephony = require('bitrix.telephony')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_telephony_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- Данные для тестов (замените на реальные ID из вашего портала)
|
||||
local test_user_id = 1 -- ID пользователя, которому покажем звонок
|
||||
local test_call_id = "123456789" -- Уникальный ID звонка с вашей АТС
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_statistic_get()
|
||||
log.info('--- Тест: Получение статистики звонков (statistic.get) ---')
|
||||
|
||||
-- Фильтр: статистика за сегодня для указанного пользователя
|
||||
local today = os.date("%Y-%m-%d")
|
||||
local filter = {
|
||||
USER_ID = test_user_id,
|
||||
'>=DATE_CREATE' = today,
|
||||
'<=DATE_CREATE' = today,
|
||||
}
|
||||
|
||||
local result_list, error_response = telephony.statistic.get({'DATE_CREATE'}, filter, 0)
|
||||
|
||||
if result_list and #result_list > 0 then
|
||||
log.info(string.format('Тест статистики: УСПЕШНО. Найдено записей: %d', #result_list))
|
||||
elseif result_list and #result_list == 0 then
|
||||
log.warning('Тест статистики: Записей не найдено. Возможно, сегодня не было звонков.')
|
||||
else
|
||||
log.error('Тест статистики: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_externalcall_show()
|
||||
log.info('--- Тест: Показ карточки звонка (externalcall.show) ---')
|
||||
|
||||
local fields = {
|
||||
USER_ID = test_user_id,
|
||||
CALL_ID = test_call_id,
|
||||
LINE_NUMBER = "100", -- Номер линии или внутренний номер
|
||||
SHOW = "Y"
|
||||
}
|
||||
|
||||
local result, error_response = telephony.externalcall.show(fields)
|
||||
|
||||
if result and result.result then
|
||||
log.info('Тест показа карточки: УСПЕШНО.')
|
||||
else
|
||||
log.error('Тест показа карточки: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_statistic_get()
|
||||
test_externalcall_show()
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
65
test_timeman.lua
Normal file
65
test_timeman.lua
Normal file
@ -0,0 +1,65 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
local timeman = require('bitrix.timeman')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_timeman_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_timeman_start()
|
||||
log.info('--- Тест: Начало рабочего дня (timeman.start) ---')
|
||||
|
||||
local fields = {
|
||||
DEVICE = {
|
||||
TYPE = "browser",
|
||||
NAME = "Lua SDK Test",
|
||||
LAT = "0",
|
||||
LON = "0"
|
||||
}
|
||||
}
|
||||
|
||||
local result, error_response = timeman.timeman.start(fields)
|
||||
|
||||
if result and result.ID then
|
||||
log.info(string.format('Тест начала дня: УСПЕШНО. ID записи: %d', result.ID))
|
||||
return result.ID -- Возвращаем ID для теста остановки
|
||||
else
|
||||
log.error('Тест начала дня: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local function test_timeman_stop(record_id)
|
||||
if not record_id then return end -- Если старт не удался, пропускаем
|
||||
|
||||
log.info('--- Тест: Завершение рабочего дня (timeman.stop) ---')
|
||||
|
||||
local fields = {
|
||||
ID = record_id,
|
||||
DEVICE = {
|
||||
TYPE = "browser",
|
||||
NAME = "Lua SDK Test",
|
||||
LAT = "0",
|
||||
LON = "0"
|
||||
}
|
||||
}
|
||||
|
||||
local result, error_response = timeman.timeman.stop(fields)
|
||||
|
||||
if result and result.result then
|
||||
log.info('Тест завершения дня: УСПЕШНО.')
|
||||
else
|
||||
log.error('Тест завершения дня: ПРОВАЛЕНО.')
|
||||
if error_response then log.error(error_response) end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
local new_record_id = test_timeman_start()
|
||||
test_timeman_stop(new_record_id)
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
93
test_user.lua
Normal file
93
test_user.lua
Normal file
@ -0,0 +1,93 @@
|
||||
local json = require('cjson')
|
||||
local log = require('utils.log')
|
||||
|
||||
-- Настройка логирования
|
||||
log.outfile = 'logs/tests_user_live_'..os.date('%Y-%m-%d_%H-%M-%S')..'.log'
|
||||
log.level = 'trace'
|
||||
|
||||
log.info("===== СТАРТ ТЕСТИРОВАНИЯ (РЕЖИМ LIVE) =====")
|
||||
|
||||
-- Подключаем модуль. Настройки подключения берутся из bitrix.api
|
||||
local user = require('bitrix.user')
|
||||
|
||||
-- ID пользователя для тестов. Обычно 1 - это администратор.
|
||||
local test_user_id = 1
|
||||
|
||||
--=== ТЕСТЫ ===--
|
||||
|
||||
local function test_user_get()
|
||||
log.info('--- Тест: Получение пользователя (get) ---')
|
||||
local result, error_response = user.get(test_user_id)
|
||||
|
||||
if result and result.users and result.users[1] then
|
||||
local user_data = result.users[1]
|
||||
log.info(string.format('Тест получения пользователя: УСПЕШНО. Имя: "%s %s"', user_data.NAME or '', user_data.LAST_NAME or ''))
|
||||
else
|
||||
log.error('Тест получения пользователя: ПРОВАЛЕНО.')
|
||||
log.error('Ответ сервера: ' .. json.encode(result))
|
||||
if error_response then
|
||||
log.error('Ошибка: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_user_getlist()
|
||||
log.info('--- Тест: Листинг пользователей (getlist) ---')
|
||||
|
||||
-- Фильтр: активные пользователи, у которых есть email
|
||||
local filter = {
|
||||
ACTIVE = 'Y',
|
||||
EMAIL = '%@%'
|
||||
}
|
||||
|
||||
local result_list, error_response = user.getlist({'LAST_NAME', 'NAME'}, filter, {'ID', 'NAME', 'LAST_NAME', 'EMAIL'}, nil, 0)
|
||||
|
||||
if result_list and result_list.users and #result_list.users > 0 then
|
||||
log.info(string.format('Тест листинга пользователей: УСПЕШНО. Найдено пользователей: %d', #result_list.users))
|
||||
elseif result_list and result_list.users and #result_list.users == 0 then
|
||||
log.warning('Тест листинга пользователей: Пользователи не найдены по фильтру.')
|
||||
else
|
||||
log.error('Тест листинга пользователей: ПРОВАЛЕНО.')
|
||||
if error_response then
|
||||
log.error('Ответ сервера: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_user_current()
|
||||
log.info('--- Тест: Получение текущего пользователя (current) ---')
|
||||
local result, error_response = user.current()
|
||||
|
||||
if result and result.ID then
|
||||
log.info(string.format('Тест текущего пользователя: УСПЕШНО. Вы вошли как: "%s %s"', result.NAME or '', result.LAST_NAME or ''))
|
||||
else
|
||||
log.error('Тест текущего пользователя: ПРОВАЛЕНО.')
|
||||
if error_response then
|
||||
log.error('Ответ сервера: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function test_user_avatar_get()
|
||||
log.info('--- Тест: Получение аватара пользователя (avatar.get) ---')
|
||||
local result, error_response = user.avatar.get(test_user_id, 'big') -- Получаем большой аватар
|
||||
|
||||
if result and result.result then
|
||||
log.info('Тест получения аватара: УСПЕШНО.')
|
||||
-- Результат обычно содержит URL до изображения
|
||||
log.debug('URL аватара: ' .. tostring(result.result))
|
||||
else
|
||||
log.error('Тест получения аватара: ПРОВАЛЕНО.')
|
||||
if error_response then
|
||||
log.error('Ответ сервера: ' .. json.encode(error_response))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--=== ЗАПУСК ТЕСТОВ ===--
|
||||
test_user_get()
|
||||
test_user_getlist()
|
||||
test_user_current()
|
||||
test_user_avatar_get()
|
||||
log.info("===== ЗАВЕРШЕНИЕ ТЕСТИРОВАНИЯ =====")
|
||||
Loading…
x
Reference in New Issue
Block a user