GithubHelp home page GithubHelp logo

amocrm-connector's Introduction

Test

Node.js AmoCRM api connector

Изначально библиотека создавалась для внутреннего использования. Периодически, с внесением изменений в amocrm api, в интеграции появляются ошибки. Цель данного проекта помочь создать надежный, протестированный инструмент для работы с amocrm. 👌 Поддерживать его актуальным с помощью автотестов и сообщества. Автоматические тесты запускаются каждый день с использованием github actions.

Описание

Основная идея. Взаимодействие с api происходит с помощью двух объектов:

  • Integration - объект создается на весь срок жизни приложения. Отвечает за методы интеграции в целом, а также обработку запросов со стороны amocrm.
  • Client - объект для взаимодействия с конкретной установкой интеграции для аккаунта. Например, для http сервера объект создается на каждый входящий запрос.

Api чатов

По аналогии с основным api, api чатов разделено на 2 части:

  • Channel - отвечает за обработку вебхуков, а также установку чата для аккаунта.
  • Chat - экземпляр чата, установленный для аккаунта.

Начало работы

Установка

yarn add amocrm-connector

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

import { Integration, Client, Channel, Chat, MessageType } from 'amocrm-connector'
import token from './token.json'

;(async () => {
    const integration = new Integration({
        integrationId: 'integration id',
        secretKey: 'secret key',
        redirectUri: 'redirect uri'
    })

    const client = new Client({
        integration,
        subdomain: 'your_subdomain',
        token
    })

    const channel = new Channel({
        chatId: 'chat id',
        chatSecret: 'chat secret',
        title: 'channel title'
    })

    const chat = await channel.connect(client)

    const result = await chat.addMessage({
            date: new Date(),
            // id беседы из вашей системы
            conversationId: 'conversation-id',
            sender: {
                id: 'sender-id',
                name: 'Имя клиента',
                profile: {
                    phone: '0123456789'
                }
            },
            id: 'message-id',
            message: {
                type: MessageType.Text,
                text: 'Тест сообщения'
            }
        }
    )
})()

Другие примеры смотрите в папке examples

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

Integration

Объект является экземпляром EventEmitter, события описаны здесь

Методы

Client

Объект является экземпляром EventEmitter, события описаны здесь

Методы

Подсистемы

Аккаунт
Методы
Звонки
Методы

Channel

Объект является экземпляром EventEmitter, события описаны здесь

Методы

Chat

Методы

Авторизация

Подробно про AmoCRM реализацию OAuth2 авторизации в официальной документации Также можете посмотреть видео от создателей другой библиотеки https://github.com/UsefulWeb/AmoCRM.

Коротко, шаги:

  1. Регистрация вашей интеграции
  2. Переход пользователя по ссылке выдачи доступа пользователем вашему приложению. Ссылку получить можно методом integration.getOAuthLink
  3. Обработка запроса на redirect uri, для этого должен быть запущен ваш сервер. Необходимо вызвать (пример для express) integration.processOAuthRedirect(req.query).
  4. integration отправит в событие setup объект client. Процедура авторизации завершена (токен уже получен) и можно пользоваться интеграцией.

Ошибки и пожелания

Если в процессе использования вы обнаружили ошибку, расскажите о ней, откройте issue с подробным описанием. Спасибо за помощь в тестировании! 👍 Если у вас есть пожелания, также открывайте issue! 👀

Планы

  • Покрыть все методы api
  • Реализовать унифицированный механизм работы с сущностями (Leads, Contacts, Pipelines, Companies, Catalogs, ...)
    • create(data: DTOWithId | DTOWithId[])
    • find(type: typeof DTOWithId, findOptions)
    • findOne(type: typeof DTOWithId, findOptionsOrId)
    • update(data: DTOWithId | DTOWithId[])
    • delete(data: DTOWithId | DTOWithId[])
  • Валидация DTO

Разработка

Команды

  • yarn build сборка проекта
  • yarn serve запуск сервера для обработки запросов от amocrm. Необходима настройка окружения.
  • yarn tunnel создает туннель с использованием утилиты localtunnel. Необходима настройка окружения.
  • yarn cypress запуск cypress тестов, используется для проверки работы OAuth и автоматического получения токена. Необходимо:
    • Настроить окружение. Токен сохраняется в testing/token.json. Про настройку окружения ниже.
    • Запустить сервер для обработки запросов от amocrm.
    • Создать туннель с публичного адреса на ваш локальный сервер.
  • yarn cypress:open запуск cypress тестов в интерактивном режиме. Необходима настройка окружения.
  • yarn jest запуск jest тестов. Для работы необходимо настроить окружение, а также токен в testing/token.json. Поэтому полезно сначала запустить cypress тест. [Пока тестов нет]
  • yarn test запуск cypress и jest тестов

Настройка окружения

Необходимо создать файл .evn.test с переменными окружения в корне проекта. Для удобства можно воспользоваться шаблоном .env.test.example (здесь также описано для чего нужны переменные)

cp .env.test.example .env.test

Если у вас есть вопросы касательно разработки - пишите мне в телеграм @lybrus. 👈

Любая помощь в разработке и тестировании данного проекта приветствуется! 👍

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.