An open API service indexing awesome lists of open source software.

https://github.com/mobilon-dev/amotop

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

amo amocrm npm

Last synced: about 2 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# @mobilon-dev/amotop

[![npm version](https://badge.fury.io/js/%40mobilon-dev%2Famotop.svg)](https://badge.fury.io/js/%40mobilon-dev%2Famotop)
[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC)

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

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

- [📖 Полная документация](https://mobilon-dev.github.io/amotop/)
- [💡 Примеры использования](samples/index.md)
- [🔗 Репозиторий](https://github.com/mobilon-dev/amotop)

## 🎥 Видеоуроки

- [🎬 Знакомство с @mobilon-dev/amotop](https://youtu.be/zRlO7e41bwg)
- [🔐 amoCRM OAuth 2.0](https://youtu.be/CxQcB5AsyHI)
- [💬 amoCRM Chat API](https://youtu.be/f31UVtn7EJI)
- [📁 amoCRM File API](https://youtu.be/3DLbkBt7kHw)

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

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

## 🛠 Установка

```bash
npm install @mobilon-dev/amotop
```

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

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

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

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

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

```javascript
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);
```

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

![Архитектура проекта](images/scheme.jpg)

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

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

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

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

```javascript
// Добавление сделки
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]
}
});
```

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

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

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

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

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

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

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

```javascript
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

```javascript
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
```

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

- [📖 amoCRM API документация](https://www.amocrm.ru/developers/content/crm_platform/api-reference)
- [💬 Chat API документация](https://www.amocrm.ru/developers/content/chats/chat-api-reference)
- [📁 Files API документация](https://www.amocrm.ru/developers/content/files/files-capabilities)

## 🤝 Поддержка

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

1. Создайте [Issue](https://github.com/mobilon-dev/amotop/issues) в репозитории
2. Изучите [примеры](samples/index.md) для решения типичных задач
3. Обратитесь к [документации](https://mobilon-dev.github.io/amotop/)

## 📄 Лицензия

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

---

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