Package Exports
- amocrm-v4-js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (amocrm-v4-js) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
AmoCRM
Javascript библиотека для работы с AmoCRM
Подключение к CRM
const AmoCRM = require( 'amocrm-js' );
const crm = new AmoCRM({
// логин пользователя в портале, где адрес портала domain.amocrm.ru
domain: 'domain', // может быть указан полный домен вида domain.amocrm.ru, domain.amocrm.com
auth: {
login: 'mylogin',
hash: 'mytesthash', // API-ключ доступа
}
});
// Вход в портал
crm.connect().then(() => {
console.log( `Вход в портал осуществлён` );
})
.catch( e => {
console.log( 'Ошибка входа', e );
});
Выход из портала
Метод disconnect() позволяет выйти из портала. Он выключает таймер проверки времени истечения сессии.
crm.disconnect();
Свободный запрос к CRM
// Получить данные по аккаунту (GET-запрос)
crm.request
.get( '/api/v2/account' )
.then( data => {
console.log( 'Полученные данные', data );
})
.catch( e => {
console.log( 'Произошла ошибка', e );
})
// Создать новый контакт (POST-запрос)
crm.request
.post( '/api/v2/contacts', {
add: [
{
name: "Walter White",
request_id: 143,
// другие поля ...
}
]
})
.then( data => {
console.log( 'Полученные данные', data );
})
.catch( e => {
console.log( 'Произошла ошибка создания контакта', e );
})
Фабрики
В настоящий момент доступны следующие фабрики:
crm.Lead // манипуляции со сделками
crm.Contact // манипуляции с контактами
Каждая из фабрик имеет методы для множественных операций со сделками:
// Поиск сделок по критерию, возвращает [ Lead, Lead, ... ]
crm.Lead.find( criteria );
// Добавление сделок
crm.Lead.insert([
{
name: "Walter White",
request_id: 143,
// другие поля ...
}
]);
// Обновление сделок
crm.Lead.update([
{
id: 1234
name: "Walter White",
request_id: 143,
// другие поля ...
}
]);
// Возвращает Lead
crm.Lead.findById( id );
Сделки
// новая сделка
const lead = new crm.Lead;
lead.linked_company_id = 1245;
lead.updated_at = 12345678;
lead.price = 10000;
lead.save(); // вернёт Promise
// альтернативный вариант 1
const lead = new crm.Lead({
linked_company_id: 1245,
updated_at: 12345678,
price: 10000
});
lead.save();
// альтернативный вариант 2
const lead = crm.Lead.of({
linked_company_id: 1245,
updated_at: 12345678,
price: 10000
});
lead.save();
// Обновление сделки
lead.name = "Заявка для Ивана";
lead.save();
// Поиск сделок
crm.Lead.find({
status: 1 // найти сделки с нужным статусом
responsible_user_id: 34 // и определённым ответственным человеком
})
.then( leads => {
console.log( "Найденное", leads );
})
// Взять данные о сделке с сервера
crm.Lead.findById( 123 )
.then( lead => console.log( lead ));
Удаление сделок
Так как в официальном API данная возможность не документирована, лавка может в обозримом будущем прикрыться. Тем не менее, есть возможность удалять сделки.
// список идентификаторов сделок
crm.Lead.remove([ 12345, 568944 ])
// удаление отедльной сделки
crm.Lead.findById( 123 )
.then( lead => lead.remove());
Переподключение
Переподключение к порталу в случае истечения сессии (15 минут бездействия или истечение cookie-файла в течение 2 лет) происходит автоматически.
Работа с событиями
В настоящий момент доступны следующие события:
- connection:beforeReconnect
- connection:beforeConnect
- connection:checkReconnect
- connection:authError
- connection:connected
- connection:disconnected
- connection:error
Добавление обработчика:
crm.on( 'connection:error', () => console.log( 'Ошибка соединения' ));
Удаление обработчика:
const handler = () => console.log( 'Ошибка соединения' );
crm.on( 'connection:error', handler );
// удалить конкретный обработчик
crm.off( 'connection:error', handler );
// удалить все обработчики конкретного события
crm.off( 'connection:error' );
// удалить все обработчики всех событий
crm.off();