Контакты
Контакты в API Radist.Online: поиск по имени и телефону, создание и изменение карточки клиента, теги, заметки, чаты контакта и связанные сделки CRM.
Общее
Swagger: https://api.radist.online/v2/docs#/Contacts
Необходимые права доступа (scopes) для работы с API: messaging
Контакт — карточка клиента в компании: имя, телефоны, email, теги, заметки и привязанные чаты. У одного контакта может быть несколько чатов в разных мессенджерах.
Контакты появляются двумя способами: автоматически — когда создаётся чат (правила привязки описаны в разделе Чаты), и вручную — методом создания контакта.
Удалить контакт через API нельзя.
Список контактов
ContactsListContacts (GET /companies/{company_id}/contacts/)
Параметры запроса:
offset,limit— постраничный вывод,limitот 1 до 100 (по умолчанию 100).order_by— сортировка:id:asc(по умолчанию),id:desc,name:asc,name:desc,created_at:asc,created_at:desc. Сортировка по имени регистронезависимая.tags— вернуть только контакты, у которых есть хотя бы один из перечисленных тегов (до 32 идентификаторов).with_groups— включать ли контакты групповых чатов. По умолчаниюfalse, такие контакты скрыты.query— нечёткий поиск по имени, email и телефонам контакта. Ищет по отдельным словам, поэтому находит контакт и по части имени. Телефон приводится к цифрам, так что+7 900 123-45-67,89001234567и1234567найдут один и тот же номер. Взаимоисключающий сphone.phone— поиск по точному номеру в формате E.164, например+18001234567. Взаимоисключающий сquery.
В ответе count — сколько контактов вернулось в этом запросе, total_count — сколько их всего по заданным фильтрам.
Пример поиска контакта
| |
Карточка контакта
ContactsGetContact (GET /companies/{company_id}/contacts/{contact_id})
Возвращает один контакт в том же формате, что и элемент списка: с телефонами, email, тегами и чатами. Если контакта нет в компании, метод вернёт 404 с ошибкой 1000 (CONTACT_NOT_FOUND).
Создание контакта
ContactsCreateContact (POST /companies/{company_id}/contacts/)
Обязательно только имя (name, до 256 символов). Телефоны, email, теги и заметки можно передать сразу.
phones[].type—work(по умолчанию),mobileилиother. Номер приводится к формату E.164.emails[].type—work(по умолчанию),personalилиother.tags— идентификаторы существующих тегов, см. Теги. Если тега с таким id в компании нет, метод вернёт400с ошибкой 1002 (CONTACT_TAG_NOT_EXISTS).notes[].type— сейчас поддерживается толькоtext, текст до 8192 символов.
Телефон и email уникальны в пределах компании: если контакт с таким номером или адресом уже есть, метод вернёт 409 с ошибкой 1001 (CONTACT_PHONE_EMAIL_CONFLICT). Чтобы не плодить дубликаты, перед созданием ищите контакт по phone в списке контактов.
Создать контакт
| |
Изменение контакта
ContactsUpdateContact (PATCH /companies/{company_id}/contacts/{contact_id})
PATCH, списки phones, emails и tags заменяются целиком: что не передали — то удалится. У каждого из них значение по умолчанию — пустой список, поэтому запрос вида {"name": "Новое имя"} не просто переименует контакт, а сотрёт у него все телефоны, email и теги. Передавайте вместе с изменением полный список того, что должно остаться, а для одних только тегов используйте отдельный метод ниже.Поле name — единственное необязательное в прямом смысле: если его не передать, имя не изменится.
Переименовать контакт, сохранив телефоны и теги
| |
Теги контакта
ContactsUpdateContactTags (PUT /companies/{company_id}/contacts/{contact_id}/tags/)
Меняет только теги, не трогая остальную карточку. Тело запроса — массив идентификаторов тегов, а не объект. Список заменяется целиком: теги, которых нет в массиве, с контакта снимаются.
Сами теги создаются отдельно, см. Теги.
Проставить контакту теги
| |
Заметки
Заметка — произвольный текст в карточке контакта: до 8192 символов, тип пока только text. Метод создания и изменения запоминает сотрудника, который это сделал, в полях created_by и updated_by.
- ContactsGetNotes (
GET /companies/{company_id}/contacts/{contact_id}/notes/) — список заметок контакта, свежие изменения выше. - ContactsGetNote (
GET /companies/{company_id}/contacts/{contact_id}/notes/{note_id}) — одна заметка. - ContactsCreateNote (
POST /companies/{company_id}/contacts/{contact_id}/notes/) — создать. - ContactsUpdateNote (
PATCH /companies/{company_id}/contacts/{contact_id}/notes/{note_id}) — изменить текст. - ContactsDeleteNote (
DELETE /companies/{company_id}/contacts/{contact_id}/notes/{note_id}) — удалить, в ответ приходит204 No Content.
Если заметки с таким id у контакта нет, методы вернут 404 с ошибкой 2000 (NOTE_NOT_FOUND).
Добавить заметку
| |
Чаты контакта
ContactsGetContactChatsList (GET /companies/{company_id}/contacts/{contact_id}/chats/)
Все чаты, привязанные к контакту, во всех мессенджерах. В каждом чате приходят chat_id (наш идентификатор, с ним работают методы чатов) и source_chat_id (идентификатор на стороне мессенджера, он же приходит в вебхуках в поле message.chat_id).
Профили в мессенджерах
ContactsGetSocialProfiles (GET /companies/{company_id}/contacts/{contact_id}/social_profiles/)
Профили клиента в мессенджерах, где он не идентифицируется номером телефона: telegram, max, vk, avito. Пригодится, чтобы показать ссылку на профиль или username рядом с карточкой.
Пример ответа
| |
Связанные сущности CRM
ContactsGetContactLinkedEntities (GET /companies/{company_id}/contacts/{contact_id}/linked_entities/)
Контакты и сделки в CRM, связанные с этим контактом через интеграцию. linked_entity_type — external_contact (контакт в CRM) или external_lead (сделка), external_id — идентификатор на стороне CRM, is_closed — закрыта ли сделка, url — ссылка на карточку в CRM.
Пример ответа
| |