pachca-forms
Original:🇺🇸 English
Translated
Интерактивные формы с полями ввода и кнопками для ботов. Используй когда нужно: показать форму, обработать submit формы, валидировать поля формы, создать модальное окно, опрос сотрудников. НЕ используй для: обычных кнопок в сообщениях (→ pachca-messages), настройки бота (→ pachca-bots).
6installs
Sourcepachca/openapi
Added on
NPX Install
npx skill4agent add pachca/openapi pachca-formsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →pachca-forms
Base URL:
Авторизация:
Токен: только бот (Автоматизации → Интеграции → API). Пользовательский токен не подойдёт — формы требуют исходящий вебхук.
https://api.pachca.com/api/shared/v1Authorization: Bearer <ACCESS_TOKEN>Когда использовать
- показать форму
- интерактивная форма
- модальное окно
- modal
- submit формы
- обработать отправку формы
- валидация формы
- view_submission
- опрос
- заявка через форму
Когда НЕ использовать
- получить профиль, мой профиль, установить статус → pachca-profile
- найти сотрудника, создать пользователя, список сотрудников → pachca-users
- создать канал, создать беседу, создать чат → pachca-chats
- отправить сообщение, ответить в тред, прикрепить файл → pachca-messages
- настроить бота, вебхук, webhook → pachca-bots
- создать задачу, список задач, напоминание → pachca-tasks
- аудит, журнал событий, безопасность → pachca-security
Пошаговые сценарии
Показать интерактивную форму пользователю
- Заранее подготовь объект формы: с
view,title(типы:blocks,input,select,radio,checkbox,date,time,file_input,header,plain_text,markdown), опциональноdivider(идентификатор формы) иcallback_id(контекст, например id сообщения)private_metadata - Отправь сообщение с кнопкой (POST /messages с , в
buttonsкнопки передай идентификатор формы)data - При нажатии кнопки — получи вебхук-событие с
trigger_id - Немедленно отправь POST /views/open с и готовым объектом формы
trigger_id - Пользователь заполняет форму → при отправке получи вебхук — обработай по сценарию «Обработать отправку формы»
bash
curl "https://api.pachca.com/api/shared/v1/views/open" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"modal","trigger_id":"abc123","view":{"title":"Заявка на отпуск","callback_id":"vacation_form","private_metadata":"{\"msg_id\":154332686}","blocks":[{"type":"input","name":"date_start","label":"Дата начала"},{"type":"input","name":"date_end","label":"Дата окончания"},{"type":"select","name":"reason","label":"Причина","options":[{"text":"Отпуск","value":"vacation"},{"text":"Больничный","value":"sick"}]}]}}'живёт 3 секунды — за это время нужно успеть отправить POST /views/open. Формируй объект формы заранее, а не после получения события. Формы работают только от бота.trigger_id
Обработать отправку формы (view_submission)
- Получи вебхук с ,
"type": "view"— содержит"event": "submit",callback_id,user_idиprivate_metadata(значения полей, ключи совпадают с полемdataкаждого блока)name - Извлеки значения из : например, для блока с
dataзначение в"name": "comment"data.comment - Если форма содержит — скачай файлы по
file_inputнемедленно: ссылки истекают через 1 часdata.field_name[].url - Если данные валидны → ответь HTTP 200 (пустое тело) — форма закроется у пользователя
- Если есть ошибки → ответь HTTP 400 с — пользователь увидит ошибки в форме и сможет исправить и отправить повторно
{"errors": {"field_name": "текст ошибки"}}
Ответ должен быть дан в течение 3 секунд — иначе пользователь увидит ошибку отправки, но все значения сохранятся и он повторит попытку.— идентифицирует какая форма отправлена (если ботов несколько).callback_id— контекст, переданный при открытии (до 3000 символов).private_metadata
Опрос сотрудников через форму
- Отправь сообщение с кнопкой «Пройти опрос» в канал или ЛС: POST /messages с в кнопке
"data": "survey_start" - При нажатии кнопки получи вебхук с и
trigger_idнажавшегоuser_id - Немедленно отправь POST /views/open с формой (поля: ,
input,selectи т.д.)radio - При отправке формы получи вебхук с — значения полей в
"event": "submit"data - Обработай ответы: сохрани в базу или отправь итоговым сообщением в канал
- Ответь HTTP 200 — форма закроется
Каждый пользователь должен нажать кнопку сам — у каждого свой. Нельзя открыть форму принудительно.trigger_id
Форма заявки/запроса
- Размести в канале сообщение с кнопкой «Создать заявку» ()
"data": "new_request" - При нажатии открой форму с полями: тема, описание, приоритет ()
select - При submit-вебхуке: создай задачу (POST /tasks) или отправь уведомление ответственному (POST /messages с )
"entity_type": "user" - Отправь подтверждение автору: POST /messages с ,
"entity_type": "user"из вебхука"entity_id": user_id - Ответь HTTP 200 — форма закроется
Обработка ошибок
| Код | Причина | Что делать |
|---|---|---|
| 422 | Неверные параметры | Проверь обязательные поля, типы данных, допустимые значения enum |
| 429 | Rate limit | Подожди и повтори. Лимит: ~50 req/sec, сообщения ~4 req/sec |
| 403 | Нет доступа | Недостаточно скоупов ( |
| 404 | Не найдено | Неверный id. Проверь что сущность существует |
| 401 | Не авторизован | Проверь токен в заголовке Authorization |
| 410 | trigger_id истёк или не найден | trigger_id действует 3 секунды. Получи новый через нажатие кнопки (вебхук) |
Доступные операции
Открытие представления
POST /views/openскоуп:views:write
json
{
"type": "modal",
"trigger_id": "",
"view": {
"title": "",
"blocks": []
}
}Ограничения и gotchas
- : допустимые значения —
type(Модальное окно)modal - : максимум 3000 символов
private_metadata - : максимум 255 символов
callback_id - : максимум 24 символов
view.title - : максимум 24 символов
view.close_text - : максимум 24 символов
view.submit_text - Пагинация: cursor-based (limit + cursor), НЕ page-based
Подробнее
см. references/endpoints.md