Skip to main content

Python API for Amocrm

Project description

https://travis-ci.org/Krukov/amocrm_api.svg?branch=master https://img.shields.io/coveralls/Krukov/amocrm_api.svg

Python AmoCRM API v2 (http://www.amocrm.ru/) (human interface for easy using)

Installation

pip install amocrm_api

Usage

Авторизация

Авторизация - с Июня 2020 amoCRM форсировала смену авторизации с токена на OAuth

И без поддержки server to server взаимодействия, в связи с чем текущая реализация содержит следующие ограничения

  1. В личном кабинете необходимо создать интеграцию

  2. Рефреш токен одноразовый и обновляется при каждом получении аксесс токена

  3. Ecли запросы в amoCRM происходят реже чем время жизни рефреш токена то вам не подойдет такой варант интеграции

  4. Токены нужно хранить, для этого есть api и существует 3 типа хранилища (можно реализовать свой):

  • MemoryTokensStorage - хранит токены в памяти (если вы перезапускаете приложение то придется снова создавать refresh_token)

  • FileStorage - сохраняет токены в файле

  • RedisTokensStorage - сохраняет токены в редисе (pip install redis) для new-age приложений которые работают в нескольких экземплярах

Example:

from amocrm.v2 import tokens

tokens.default_token_manager(
    client_id="xxx-xxx-xxxx-xxxx-xxxxxxx",
    client_secret="xxxx",
    subdomain="subdomain",
    redirect_url="https://xxxx/xx",
    storage=tokens.FileTokensStorage(),  # by default FileTokensStorage
)
tokens.default_token_manager.init(code="..very long code...", skip_error=True)
  • Контакт - Contact

  • Компания - Company

  • Теги - Tags

  • Сделка - Lead

  • Задача - Task

  • Примечание - Note

  • Событие - Event

  • Воронки и Статусы - Pipeline, Status

Работа с сущностями

У каждой сущности есть менеджер (аттрибут objects), который имеет следующие методы

<Entity>.objects.get(object_id=1, query="test")  # получение обьекта
<Entity>.objects.all()  # получение всех сущностей
<Entity>.objects.filter(**kwargs)  # получение списка сущностей с фильтром

<Entity>.objects.create(**kwargs)  # создание сущности (нет явной сигнатуры поэтому лучше использовать метод create самой сущности)
<Entity>.objects.update(**kwargs)  # обносление сущности (нет явной сигнатуры поэтому лучше использовать метод update самой сущности)

В свою очередь сама сущность имеет несколько методов для более простого создания и обновления

<EntityInstance>.create()
<EntityInstance>.update()
<EntityInstance>.save()  # создаст или обновит в зависимости от того как обьект был инициализирован

Исключение - создание звонка происходит через упрошенную сущность

from amocrm.v2 import Call, CallDirection, CallStatus

Call().create(CallDirection.OUTBOUNT, phone="....", source="", duration=timedelta(minutes=10), status=CallStatus.CALL_LATER, created_by=manager)

Рассмотрим полный процесс работы на примере контакта

from amocrm.v2 import Contact, Company

contact = Contact.objects.get(query="Тест")
print(contact.first_name)
print(contact.company.name)
print(contact.created_at)

contact.last_name = "Новое"
contact.tags.append("new")
contact.notes.objects.create(text="Примечание")

contact.save()

contact.company = Company(name="Amocrm")  # создаст и сразу прилинкует компанию
print(contact.company.id)

len(list(contact.customers)) # lazy list
contact.customers.append(Customer(name="Volta"))

Кастомные поля

Одна из удобных возможностей amoCRM - кастомные поля

Example:

from amocrm.v2 import Lead as _Lead, custom_field

class Lead(_Lead):
    utm = custom_field.UrlCustomField("UTM метка")
    delivery_type = custom_field.SelectCustomField("Способ доставки")
    address = custom_field.TextCustomField("Адрес")

Однако мапинг всех кастомных полей дело утоминетльное, поэтому для генерации файла с готовым мапингом есть команда:

export AMOCRM_CLIENT_ID=xxx
export AMOCRM_SECRET=xxx
export AMOCRM_SUBDOMAIN=xxx
export AMOCRM_REDIRECT_URL=xxx
export AMOCRM_CODE=xxx # optional
pyamogen > models.py

Для ее работы необходимо установить пакет python-slugify (https://github.com/un33k/python-slugify)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amocrm_api-2.6.1.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

amocrm_api-2.6.1-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file amocrm_api-2.6.1.tar.gz.

File metadata

  • Download URL: amocrm_api-2.6.1.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for amocrm_api-2.6.1.tar.gz
Algorithm Hash digest
SHA256 a5b1ef61f1d4235eac07fb4f02792c0f03f4a1edd80888cda16f9b966bf5a61f
MD5 faf3129965df2cac43849fca7eefe8e7
BLAKE2b-256 8df0e90b3828628ee47399b41bb967850f372c6f1071ccfb22cc551c9224b6dc

See more details on using hashes here.

File details

Details for the file amocrm_api-2.6.1-py3-none-any.whl.

File metadata

  • Download URL: amocrm_api-2.6.1-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for amocrm_api-2.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bede2e1b51dbcd5043509f8930bb72ba50fe070283754777089abf8c0c7766a6
MD5 cd830c20565ee4c2b5a67b8b58f3150c
BLAKE2b-256 f2d1858e7d8a50e343d1025f31eec929f1b0bd1b8a8a17906ec5d43f3cdb5063

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page