npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

amocrm-connector

v0.4.11

Published

AmoCRM api connector for Node.js

Downloads

116

Readme

Test

Node.js AmoCRM api connector

Изначально библиотека создавалась для внутреннего использования. Периодически, с внесением изменений в amocrm api, в интеграции появляются ошибки. Цель данного проекта помочь создать надежный, протестированный инструмент для работы с amocrm. :ok_hand: Поддерживать его актуальным с помощью автотестов и сообщества. Автоматические тесты запускаются каждый день с использованием 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 с подробным описанием. Спасибо за помощь в тестировании! :thumbsup: Если у вас есть пожелания, также открывайте issue! :eyes:

Планы

  • Покрыть все методы 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. :point_left:

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