Полнофункциональный 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Создайте файл конфигурации config.js:
module.exports = {
domain: 'your-domain.amocrm.ru',
accessToken: 'your-access-token',
scopeId: 'your-scope-id',
channelSecret: 'your-channel-secret',
debug: true
};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);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
Если у вас есть вопросы или предложения:
- Создайте Issue в репозитории
- Изучите примеры для решения типичных задач
- Обратитесь к документации
ISC License - см. файл LICENSE для подробностей.
Создано с ❤️ для упрощения работы с amoCRM API
