Skip to content

mobilon-dev/amotop

Repository files navigation

@mobilon-dev/amotop

npm version License: ISC

Полнофункциональный TypeScript клиент для работы с amoCRM API, включающий поддержку основного API, Chat API, File API и OAuth 2.0 аутентификации.

📚 Документация

🎥 Видеоуроки

✨ Особенности

  • 🚀 Простота использования - Интуитивно понятный API с подробным логированием
  • 🔧 TypeScript поддержка - Полная типизация для лучшего DX
  • 📊 Подробное логирование - Все запросы и ответы логируются для отладки
  • 💬 Chat API интеграция - Работа с чатами amoCRM
  • 📁 File API поддержка - Загрузка и управление файлами
  • 🔐 OAuth 2.0 - Безопасная аутентификация
  • 📝 Webhook поддержка - Работа с вебхуками amoCRM

🛠 Установка

npm install @mobilon-dev/amotop

🚀 Быстрый старт

1. Настройка конфигурации

Создайте файл конфигурации config.js:

module.exports = {
  domain: 'your-domain.amocrm.ru',
  accessToken: 'your-access-token',
  scopeId: 'your-scope-id',
  channelSecret: 'your-channel-secret',
  debug: true
};

2. Базовое использование

const { AmoApiClient, AmoJoScopeClient } = require('@mobilon-dev/amotop');

const config = require('./config');

// Инициализация клиентов
const amoApiClient = new AmoApiClient(config.domain, config.accessToken, { debug: config.debug });
const amoJoScopeClient = new AmoJoScopeClient({
  scopeId: config.scopeId, 
  channelSecret: config.channelSecret, 
  debug: config.debug
});

// Получение сделок
const leads = await amoApiClient.getLeads({ limit: 20 });

// Отправка сообщения в чат
const message = {
  text: 'Привет! Это тестовое сообщение.',
  source: 'bot'
};
const response = await amoJoScopeClient.sendMessage(message);

🏗 Архитектура

Архитектура проекта

Основные компоненты

Компонент Назначение Конфигурация
AmoService Обмен токенов OAuth 2.0 domain
AmoApiClient Основной API amoCRM domain, accessToken
AmoFileClient File API amoCRM accessToken
AmoJoChannelClient Управление каналами Chat API channelId, channelSecret
AmoJoScopeClient Работа с подключениями чатов scopeId, channelSecret

📋 Примеры использования

Работа со сделками

// Добавление сделки
const lead = {
  name: 'Продать слона',
  price: 1000,
  ...amoApiClient.getPipelineLeadPayload(7183562, 60002878)
};
const newLead = await amoApiClient.addLead(lead);

// Получение сделок с фильтрацией
const leads = await amoApiClient.getLeads({
  limit: 50,
  filter: {
    responsible_user_id: [12345]
  }
});

Работа с контактами

// Добавление контакта
const contact = {
  name: 'Иван Иванов',
  phone: '+79001234567',
  email: 'ivan@example.com'
};
const newContact = await amoApiClient.addContact(contact);

// Получение всех контактов
const contacts = await amoApiClient.getAllContacts();

Работа с чатами

// Отправка текстового сообщения
await amoJoScopeClient.sendTextMessage({
  text: 'Привет! Чем могу помочь?',
  source: 'bot'
});

// Отправка изображения
await amoJoScopeClient.sendImageMessage({
  image: 'https://example.com/image.jpg',
  caption: 'Описание изображения',
  source: 'bot'
});

Работа с файлами

const { AmoFileClient } = require('@mobilon-dev/amotop');

const fileClient = new AmoFileClient(accessToken, { debug: true });

// Загрузка файла
const uploadResult = await fileClient.uploadFile({
  file: './document.pdf',
  name: 'document.pdf'
});

// Привязка файла к сделке
await amoApiClient.attachFileToLead(leadId, uploadResult.id);

🔧 Настройка OAuth 2.0

const { AmoService } = require('@mobilon-dev/amotop');

const amoService = new AmoService('your-domain.amocrm.ru');

// Получение URL для авторизации
const authUrl = amoService.getAuthUrl({
  clientId: 'your-client-id',
  redirectUri: 'your-redirect-uri',
  state: 'random-state'
});

// Обмен кода на токен
const tokens = await amoService.exchangeCode({
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
  code: 'authorization-code',
  redirectUri: 'your-redirect-uri'
});

📊 Логирование

Библиотека автоматически логирует все запросы и ответы при включенном режиме debug:

[AmoApiClient][Request] GET https://domain.amocrm.ru/api/v4/leads?page=1&limit=20
[AmoApiClient][Response] GET https://domain.amocrm.ru/api/v4/leads?page=1&limit=20 200:OK

🔗 Полезные ссылки

🤝 Поддержка

Если у вас есть вопросы или предложения:

  1. Создайте Issue в репозитории
  2. Изучите примеры для решения типичных задач
  3. Обратитесь к документации

📄 Лицензия

ISC License - см. файл LICENSE для подробностей.


Создано с ❤️ для упрощения работы с amoCRM API

About

@mobilon-dev/amotop - еще один amoCRM API клиент для node.js

Topics

Resources

License

Stars

Watchers

Forks