## Форма задачи для сообщения

`POST /v1/chats/messages/:messageId/task-form`

Готовит данные формы создания задачи из сообщения чата, а саму задачу не создаёт: форму заполняет и сохраняет пользователь в Битрикс24.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|----------|
| `messageId` (path) | number | да | ID сообщения, положительное целое — поле `id` сообщения из [ленты](/docs/chats/messages/list) или [загрузки чата](/docs/chats/messages/load). Чат определяется по сообщению |

Тела и параметров запроса нет: любое поле тела или параметр отклоняется с `400 INVALID_PARAMS`.

## Примеры

### curl — личный ключ

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/chats/messages/1002/task-form" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth-приложение

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/chats/messages/1002/task-form" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — личный ключ

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/messages/1002/task-form', {
  method: 'POST',
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
console.log('Цитата:', data.params.description)
console.log('Файлы:', data.params.ufTaskWebdavFilesData?.map((f) => f.name))
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/messages/1002/task-form', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Форма:', data.link)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data` | object | Данные формы |
| `data.link` | string | Относительная ссылка на форму создания задачи в Битрикс24: чтобы открыть форму, добавьте к ней адрес Битрикс24 |
| `data.params` | object | Поля формы, состав зависит от чата — см. абзац после таблицы |
| `data.params.responsibleId` | number | Ответственный — вызывающий пользователь |
| `data.params.imChatId` | number | ID чата сообщения |
| `data.params.auditors` | string | Наблюдатели — ID участников чата через запятую, кроме вызывающего, не больше 50. У чата группы или проекта наблюдателей нет |
| `data.params.groupId` | number \| null | ID группы или проекта — у чата группы или проекта |
| `data.params.imMessageId` | number | ID сообщения |
| `data.params.ufTaskWebdavFiles` | string[] | ID копий файлов на Диске в формате `n<id>` — есть, только если у сообщения есть файлы |
| `data.params.ufTaskWebdavFilesSign` | string | Подпись Битрикс24 над списком копий — форма передаёт её обратно при сохранении задачи |
| `data.params.ufTaskWebdavFilesData[]` | object[] | Копии файлов |
| `data.params.ufTaskWebdavFilesData[].id` | string | ID копии в формате `n<id>`, как в `ufTaskWebdavFiles` |
| `data.params.ufTaskWebdavFilesData[].objectId` | number | ID копии на Диске |
| `data.params.ufTaskWebdavFilesData[].name` | string | Имя копии |
| `data.params.ufTaskWebdavFilesData[].type` | string | Тип файла |
| `data.params.ufTaskWebdavFilesData[].url` | string | Ссылка на скачивание копии |
| `data.params.ufTaskWebdavFilesData[].previewUrl` | string | Ссылка на превью. Пустая строка, если превью нет |
| `data.params.ufTaskWebdavFilesData[].height`, `data.params.ufTaskWebdavFilesData[].width` | number | Высота и ширина изображения в пикселях. `0` у файлов без размеров |
| `data.params.isTasksV2` | boolean | `true` — в Битрикс24 включены задачи нового вида. Тогда в ответе есть поля ниже |
| `data.params.entityId` | number | ID чата |
| `data.params.subEntityId` | number | ID сообщения |
| `data.params.taSec`, `data.params.taEl` | string | Метки источника для аналитики Битрикс24 |
| `data.params.description` | string | Цитата сообщения с BB-кодами: название чата, автор, текст |

Состав `params` зависит от чата и настроек Битрикс24: у чатов открытых линий есть привязка к CRM, у задач прежнего вида нет полей `isTasksV2` и ниже.

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

```json
{
  "success": true,
  "data": {
    "link": "/company/personal/user/1/tasks/task/edit/0/?ta_sec=chat&ta_el=chat_context_menu",
    "params": {
      "responsibleId": 1,
      "imChatId": 42,
      "auditors": "4",
      "imMessageId": 1002,
      "subEntityId": 1002,
      "isTasksV2": true,
      "entityId": 42,
      "taSec": "chat",
      "taEl": "chat_context_menu",
      "groupId": null,
      "description": "[QUOTE][B]Чат:[/B] [URL=/online/?IM_DIALOG=chat42&IM_MESSAGE=1002]Проект[/URL]\n[B]Мария Иванова[/B]\nОтчёт во вложении[Файл: report.txt]\n[/QUOTE]",
      "ufTaskWebdavFiles": ["n6773"],
      "ufTaskWebdavFilesSign": "<signature>",
      "ufTaskWebdavFilesData": [
        {
          "id": "n6773",
          "objectId": 6773,
          "name": "report (1).txt",
          "type": "txt",
          "url": "https://example.bitrix24.ru/bitrix/services/main/ajax.php?action=disk.api.file.download&SITE_ID=s1&humanRE=1&fileId=6773&exact=N&fileName=report%20%281%29.txt",
          "height": 0,
          "width": 0,
          "previewUrl": ""
        }
      ]
    }
  }
}
```

## Пример ответа при ошибке

400 — `messageId` не положительное целое:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "messageId must be a positive integer."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `messageId` не положительное целое, передано поле тела или параметр запроса |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов Битрикс24 |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ работает только на чтение |
| 404 | `ENTITY_NOT_FOUND` | Битрикс24 вернул «не найдено», код портала — в `error.b24Code` |
| 422 | `BITRIX_ERROR` | Битрикс24 вернул ошибку, код портала — в `error.b24Code`. `TASK_ACCESS_ERROR` — нет доступа к сообщению или его чату, `TASKS_NOT_INSTALLED` — модуль задач не установлен |
| 502 | `BITRIX_UNAVAILABLE` | Битрикс24 недоступен или вернул ошибку сервера |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

- Если у сообщения есть файлы, каждый вызов создаёт их новые копии в папке «Загруженные файлы» на Диске вызывающего. Копии, которые не попали в задачу, удаляются по расписанию.
- Операция может сделать вызывающего участником чата, если чат разрешает автовступление, как коллаб или чат комментариев, — так же, как открытие чата в Битрикс24.

## Смотрите также

- [Форма задачи](/docs/chats/service/task-form)
- [Форма потока](/docs/chats/service/flow-form)
- [Сообщения вокруг сообщения](/docs/chats/messages/context)
- [Служебные методы](/docs/chats/service)
