amoCRM
OPORA поддерживает amoCRM двумя способами:
- Long-lived access token (v1 shipped, описан ниже) — подходит для single-account workflow’ов, когда у вас один amoCRM-аккаунт и интеграция создаётся вручную в его админке.
- OAuth2 app-installation (отложено) — для marketplace- distributed integrations, когда приложение ставят из каталога сторонние клиенты. Добавим по demand’у.
За ~15 минут вы:
- Создадите внешнюю интеграцию в amoCRM и получите long-lived token
- Сохраните его в OPORA как secret
- Настроите входящий webhook для реактивной workflow’ы (новый лид → AI-classify → обновить deal)
1. Создайте интеграцию в amoCRM
Section titled “1. Создайте интеграцию в amoCRM”- Откройте ваш аккаунт:
https://<your-company>.amocrm.ru - Админ-панель → «Интеграции» → «Создать интеграцию»
- Режим: «Внешняя интеграция»
- Заполните поля:
- Название:
OPORA(или любое, только для вас) - Описание: опционально
- Redirect URI: если будущий OAuth2 — понадобится, сейчас
можете оставить пустым или написать
https://app.opora.example/auth/oauth/complete
- Название:
- Права доступа: отметьте
crm(обязательно для lead / contact / company / task операций) - Сохранить
2. Получите long-lived token
Section titled “2. Получите long-lived token”В открывшейся карточке интеграции:
- Вкладка «Ключи и доступы»
- Нажмите «Долгоживущий токен» (generate)
- Укажите срок действия (рекомендуем год) + scope (
crm) - Скопируйте
access_token— он понадобится в OPORA
3. Сохраните credentials в OPORA
Section titled “3. Сохраните credentials в OPORA”Settings → Secrets → + New secret:
- Name:
amocrm-token-main(любое имя, только для UI) - Value: вставьте access_token целиком
Создайте второй secret с поддоменом:
- Name:
amocrm-subdomain - Value: ваш поддомен без
.amocrm.ru(напримерacmeизhttps://acme.amocrm.ru)
OPORA будет использовать этот поддомен как base-URL для всех API-вызовов.
4. Наймите агента
Section titled “4. Наймите агента”Из шаблона
Section titled “Из шаблона”В workspace dashboard’е — «Hire from template»:
- «amoCRM lead qualifier» — incoming webhook с формы сайта → AI
classifies (hot/warm/cold) →
amocrm.lead.createс UTM-полями + assigned responsible user по round-robin’у - «amoCRM deal progression bot» — cron-trigger раз в день →
amocrm.crm.listпо pipeline’у → AI-summary застрявших сделок → Telegram-отчёт менеджеру - «amoCRM task completer» — incoming event
task.completed→amocrm.task.updateсis_completed:true+result.textиз LLM-summary последних событий
Wizard спросит какие secrets использовать (созданные в § 3) и запустит агента. После — он виден в разделе Agents, KPI начинают собираться как только пойдут runs.
Пустой агент + workflow в редакторе
Section titled “Пустой агент + workflow в редакторе”Если шаблон не подходит:
- Dashboard → «Start from blank» (в hero-CTA) или
/agents→ New agent → Skip template - Имя агента + goal (human-readable)
- В editor’е перетащите ноды:
amocrm.webhook.trigger— incoming events от amoCRMai.classify— классификация payload’аamocrm.lead.create— создание лида
- На ноде-триггере и ноде-выходе укажите secrets (
amocrm-token-mainamocrm-subdomain).
- Save + Publish → агент активен
5. Webhook setup (для incoming events)
Section titled “5. Webhook setup (для incoming events)”OPORA webhook-URL для агента формируется автоматически после Publish. Зарегистрируйте его в amoCRM:
- Админ-панель amoCRM → «Интеграции» → ваша OPORA-интеграция
- Вкладка «Webhooks» → «Добавить webhook»
- URL:
https://app.opora.example/webhook/<uuid>(OPORA покажет в настройках trigger-ноды) - Events: выберите нужные (чаще всего
Добавить лид,Добавить контакт,Изменить сделку) - Сохранить
amoCRM шлёт query-token в URL’е для валидации — OPORA проверяет совпадение на каждый incoming request.
6. Триггер workflow’а вручную
Section titled “6. Триггер workflow’а вручную”Для smoke-теста без amoCRM-события:
curl -X POST https://app.opora.example/webhook/<uuid>?token=<webhook-token> \ -H "Content-Type: application/json" \ -d '{"leads":{"add":[{"id":12345,"name":"Тест","created_at":"2026-04-24T10:00:00Z"}]}}'Через секунду run появится в Runs с полной трассой.
Ноды amoCRM, доступные сейчас
Section titled “Ноды amoCRM, доступные сейчас”| Нода | Что делает |
|---|---|
amocrm.webhook.trigger | Incoming events с query-token валидацией |
amocrm.lead.{create,get,update} | Сделки |
amocrm.contact.{create,get,update} | Контакты |
amocrm.company.{create,get,update} | Компании |
amocrm.task.{create,update} | Задачи (update покрывает completion через is_completed:true + result.text) |
amocrm.crm.list | List с filter / select / order / paging + включение tasks entity через with=tasks |
amocrm.pipelines.list | Метаданные для lookup pipeline_id / status_id |
Не реализовано (по demand’у добавим): OAuth2 app-installation, notes, calls, files, custom-fields metadata endpoints.
Примеры workflow’ов
Section titled “Примеры workflow’ов”Welcome-bot: incoming lead → приветственное сообщение
Section titled “Welcome-bot: incoming lead → приветственное сообщение”amocrm.webhook.trigger (event: leads.add) ↓ai.extract (template: "{\"phone\": ..., \"name\": ...}") ↓telegram.message.send (chat_id = <manager>, text = "Новый лид: {{extract.name}}") ↓amocrm.lead.update (id = {{trigger.leads.add.0.id}}, tags += "welcomed")Refund coordinator
Section titled “Refund coordinator”yookassa.webhook.trigger (event: refund.succeeded) ↓amocrm.crm.list (entity=leads, filter={custom_fields_values: [{field_id: 123, value: {{trigger.refund.metadata.order_id}}}]}) ↓approval.request (title = "Refund для сделки {{list.results.0.name}}", assigned_to: "owner") ↓ (on approved)amocrm.lead.update (id = {{list.results.0.id}}, status_id = <refunded>)amocrm.task.create (entity_id = {{list.results.0.id}}, text = "Оформить возврат в 1С")Troubleshooting
Section titled “Troubleshooting”401 при вызове amoCRM API
Section titled “401 при вызове amoCRM API”- Token expired. В amoCRM: «Интеграции» → ваша интеграция → «Ключи и
доступы» → регенерировать
access_token→ обновите secret в OPORA. - Или: scope без
crm— пересоздайте token с правильным скоупом.
Webhook не срабатывает
Section titled “Webhook не срабатывает”- Проверьте в amoCRM что webhook действительно включён (галочка «Активен»).
- URL в amoCRM должен содержать
?token=<...>— та же строка, что в настройках trigger-ноды OPORA. docker compose logs api | grep webhookна VM’е покажет incoming payload’ы — если amoCRM не доходит до нас, проблема на amoCRM-стороне (проверьте их Webhooks → History).
«Entity already exists» при создании
Section titled “«Entity already exists» при создании”amoCRM не даёт создать дубликат по email / phone. Используйте
amocrm.crm.list с фильтром сначала, потом .update если нашли.
Связанное
Section titled “Связанное”- Bitrix24 — альтернатива amoCRM с похожей структурой workflow’ов
- API reference — если нужно дёргать OPORA извне
- Concepts → Agents & Processes — как устроен template-resolver и workflow-runtime