Прикрепляем документы к контактам по API в VtigerCRM.

Прикрепляем документы к контактам по API в VtigerCRM.

Система VtigerCRM предоставляет отличный инструмент, позволяющий выполнять любые операции с модулями - создание, редактирование, просмотр, удаление.

Представьте ситуацию - у вас есть веб-сервис, в котором пользователи прикрепляют сканы документов. И вы хотите сделать так, чтобы эти документы отправлялись по API в VtigerCRM и прикреплялись, например, к карточке контакта.

Чтобы сделать это вручную, вам надо перейти в карту контакта, нажать на вкладку документы и в ней добавить новый документ. Как это выглядит в системе, вы можете посмотреть выше на скриншоте. Но если у вас стоит свой собственный сервис, куда пользователи уже загрузили документы, то вам нет необходимости дополнительно передавать весь файл. Достаточно передать ссылку на него на внешнем сервисе. Поэтому обычно удобнее добавить ссылку на файл. К счастью, у Vtiger есть подобный функционал.

Итак, мы знаем как добавлять ссылку на файл через интерфейс системы. Теперь давайте попробуем сделать это из API.

Для этого вам надо отправить POST-запрос на адрес Vtiger /webserbive.php в виде формы со следующими полями:

  • operation: create
  • sessionName: ключ сессии для авторизации
  • elementType: Documents
  • element: текст в формате json, например

{

  "notes_title": "External Five PDF",

  "filename": "https:\/\/itvolga.com\/storage\/settings\/October2018\/ITy6ZA0VlyRWZsYOGNnZ.png",

  "assigned_user_id": "19x1",

  "notecontent": "",

  "filetype": "",

  "filesize": "0",

  "filelocationtype": "E",

  "fileversion": "",

  "filestatus": "1",

  "filedownloadcount": "",

  "folderid": "22x1",

  "modifiedby": "19x1",

  "created_user_id": "19x1",

  "starred": "0",

  "tags": "",

  "relations": "12x100"

}

 

В примере выше вы видете поле relations, в котором мы говорим системе, что документ должен быть привязан к контакту с id 100.

Если вы отправите подобный запрос в Vtiger, то у вас успешно будет создан документ со ссылкой на файл. Но если вы перейдёте в карту контакта, то нужного документа там не будет. Здесь мы наблюдаем проблему, что при создании документа не срабатывает создание связи. Давайте попробуем решить эту задачу.

Для этого, во-первых, создайте новую служебную функцию в файле include/Webservices/Utils.php

 

function vtws_getEntityId($entityName) {

    global $adb;

    $wsrs=$adb->pquery('select id from vtiger_ws_entity where name=?', array($entityName));

    if ($wsrs && $adb->num_rows($wsrs)==1) {

        $wsid = $adb->query_result($wsrs, 0, 0);

    } else {

        $wsid = 0;

    }

    return $wsid;

}

 

Затем перейдите в файл include/Webservices/SetRelation.php, найдите в нём функцию vtws_internal_setrelation (строчка 57) и в конце этой функции, перед строчкой 

 

relateEntities($focus, $moduleName, $elementId, $withModuleName, $withElementId);

 

Добавьте следующий блок кода:

 

if ($moduleName === 'Documents' && $withModuleName === 'Contacts') {

    $focus = CRMEntity::getInstance($withModuleName);

    $moduleName = $withModuleName;

    $tmpElementId = $elementId;

    $elementId = $withElementId;

    $withElementId = $tmpElementId;

    $withModuleName = 'Documents';

        }

 

После этих операций при очередной отправке запроса на создание внешнего документа он будет не только создан в модуле "Документы", но и успешно привязан к контакту.

Если у вас остались вопросы по доработке системы, обращайтесь, я вам с удовольствием помогу.

Популярное

Самые популярные посты

Как быть максимально продуктивным на удалённой работе?
Business

Как быть максимально продуктивным на удалённой работе?

Я запустил собственный бизнес и намеренно сделал всё возможное, чтобы работать из любой точки мира. Иногда я сижу с своём кабинете с большим 27-дюймовым монитором в своей квартире в г. Чебоксары. Иногда я нахожусь в офисе или в каком-нибудь кафе в другом городе.

Привет! Меня зовут Сергей Емельянов и я трудоголик
Business PHP

Привет! Меня зовут Сергей Емельянов и я трудоголик

Я программист. В душе я предприниматель. Я начал зарабатывать деньги с 11 лет, в суровые 90-е годы, сдавая стеклотару в местный магазин и обменивая её на сладости. Я зарабатывал столько, что хватало на разные вкусняшки.

Акция! Профессиональный разработчик CRM за 2000 руб. в час

Выделю время под ваш проект. Знания технологий Vtiger CRM, SuiteCRM, Laravel, Vue.js, Golang, React.js. Предлагаю варианты сотрудничества, которые помогут вам воспользоваться преимуществами внешнего опыта, оптимизировать затраты и снизить риски. Полная прозрачность всех этапов работы и учёт временных затрат. Оплачивайте только рабочие часы разработки после приемки задачи. Экономьте на платежах по его содержанию разработчика в штате. Возможно заключение договора по ИП. С чего начать, чтобы нанять профессионального разработчика на full-time? Просто заполните форму!

Telegram
@sergeyem
Telephone
+4915211100235