Python API for Amocrm
Project description
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 взаимодействия, в связи с чем текущая реализация содержит следующие ограничения
В личном кабинете необходимо создать интеграцию
Рефреш токен одноразовый и обновляется при каждом получении аксесс токена
Ecли запросы в amoCRM происходят реже чем время жизни рефреш токена то вам не подойдет такой варант интеграции
Токены нужно хранить, для этого есть 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5b1ef61f1d4235eac07fb4f02792c0f03f4a1edd80888cda16f9b966bf5a61f |
|
MD5 | faf3129965df2cac43849fca7eefe8e7 |
|
BLAKE2b-256 | 8df0e90b3828628ee47399b41bb967850f372c6f1071ccfb22cc551c9224b6dc |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | bede2e1b51dbcd5043509f8930bb72ba50fe070283754777089abf8c0c7766a6 |
|
MD5 | cd830c20565ee4c2b5a67b8b58f3150c |
|
BLAKE2b-256 | f2d1858e7d8a50e343d1025f31eec929f1b0bd1b8a8a17906ec5d43f3cdb5063 |