Krukov / amocrm_api

Python amocrm API wrapper
MIT License
103 stars 55 forks source link

Создание сделки с контактом #104

Closed Weagook closed 1 year ago

Weagook commented 1 year ago

Как создать сделку и уже привязать ему номер телефона ?

new_lead = Lead.objects.create(name='Тестовая сделка от интеграции 2', pipeline_id=7375950, contacts='+77074444')

Не работает

new_lead.contacts = '+77074444' new_lead.save()

Тоже не работает

Или же нужно создавать объект класса Contact, а потом таким образом его привязывать ? Желательно пример небольшого кода.

Krukov commented 1 year ago

Или же нужно создавать объект класса Contact, а потом таким образом его привязывать ?

Да все так и есть - вот код из проекта одного

def create_lead_from_callback(
    name, email, phone, message, utm, admin_url, language="ru"
):
    responsible_user = get_manager(language)
    contact = Contact(
        name=name,
        email=email,
        phone=phone,
        responsible_user=responsible_user,
    )
    contact.save()

    lead = Lead(
        name=f"Форма обратной связи ({language})",
        status=_get_initial_status(),
        responsible_user=responsible_user,
    )
    lead.tags.add("api")
    lead.save()
    lead.contacts.add(contact)
    lead.notes(text=f"{message} \n В Админке: {admin_url} ").save()
    return lead 
Weagook commented 1 year ago

Или же нужно создавать объект класса Contact, а потом таким образом его привязывать ?

Да все так и есть - вот код из проекта одного

def create_lead_from_callback(
    name, email, phone, message, utm, admin_url, language="ru"
):
    responsible_user = get_manager(language)
    contact = Contact(
        name=name,
        email=email,
        phone=phone,
        responsible_user=responsible_user,
    )
    contact.save()

    lead = Lead(
        name=f"Форма обратной связи ({language})",
        status=_get_initial_status(),
        responsible_user=responsible_user,
    )
    lead.tags.add("api")
    lead.save()
    lead.contacts.add(contact)
    lead.notes(text=f"{message} \n В Админке: {admin_url} ").save()
    return lead 

При попытке создать контакт


def create_contact():
    contact = Contact(
        name = 'Тестовый контакт',
        phone = '+77777777777'
    )
    contact.save()
    return contact```

#Выдает ошибку `AttributeError: type object 'Contact' has no attribute 'phone'`

#Также попробовал с кастомными полями.

class Contact(_Contact):
    phone = custom_field.TextCustomField("Рабочий телефон")

def create_contact():
    contact = Contact(
        name = 'Тестовый контакт',
        phone = '+77777777777'
    )
    contact.save()
    return contact

# Выдает ошибку `amocrm.v2.exceptions.ValidationError: {'validation-errors': [{'request_id': '0', 'errors': [{'code': '36b4f074-7403-11ea-af30-00163e2085ae', 'path': 'custom_fields_values.0', 'detail': 'You should use "field_id" or "field_code" to identify custom field.'}]}], 
#'title': 'Bad Request', 'type': 'https://httpstatus.es/400', 'status': 400, 'detail': 'Request validation failed'}`
Krukov commented 1 year ago

А такое ( таким названием "Рабочий телефон" ) кастомное поле создано в амосрм?

можно еще попробовать вот так

class Contact(_Contact):
    phone = custom_field.ContactPhoneField("Рабочий телефон")
Weagook commented 1 year ago

Огромное спасибо. Проблема решена )