Skip to main content

AmoCRM python API. V2

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)

Metadata

Release files for amocrm-api 2.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for amocrm-api 2.6.1
File Size Uploaded
amocrm_api-2.6.1.tar.gz 23.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for amocrm-api 2.6.1
File Interpreter ABI Platform
amocrm_api-2.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 51.4 kB

Release files / amocrm_api-2.6.1.tar.gz

Download URL amocrm_api-2.6.1.tar.gz
Size 23.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a5b1ef61f1d4235eac07fb4f02792c0f03f4a1edd80888cda16f9b966bf5a61f
BLAKE2b-256 checksum
How to use checksums
8df0e90b3828628ee47399b41bb967850f372c6f1071ccfb22cc551c9224b6dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.17

Release files / amocrm_api-2.6.1-py3-none-any.whl

Download URL amocrm_api-2.6.1-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bede2e1b51dbcd5043509f8930bb72ba50fe070283754777089abf8c0c7766a6
BLAKE2b-256 checksum
How to use checksums
f2d1858e7d8a50e343d1025f31eec929f1b0bd1b8a8a17906ec5d43f3cdb5063
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.17

Release history Release notifications | RSS feed

This release

2.6.1 This release

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

0.8.3

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.3.0

1 release file

0.2.1

2 release files

0.2.0

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page