Сейчас мы вас приятно удивим 🙂
Мы заметили, что в последнее время наши пользователи всё чаще пытаются извлечь из комментария задачи различные данные. И когда они понимают, что это сделать непросто, а порой невозможно, очень расстраиваются. Например, быстро получить курс валют для расчетов с контрагентами, статус почтового отправления клиента или счет на оплату из платежного сервиса.
Дело в том, что до сегодняшнего дня поступающая в ПланФикс информация из других сервисов и систем приходила одним общим блоком, который можно было увидеть в комментарии к задаче. По факту ПланФикс не умел понимать эти данные, выделять из них нужную информацию, чтобы использовать её при дальнейших расчетах.
Опытные пользователи ПланФикса решали такую задачку с помощью сторонних сервисов: Integromat, ApiX-Drive, Zapier. Это временное, но не универсальное решение. В итоге мы решили сделать ПланФикс более дружелюбным по отношению к другими системам и сервисам.
Новые элементы интерфейса
Мы внесли капельку изменений: добавили новые элементы интерфейса в настройки автоматических сценариев. Теперь обо всём по порядку.
Послать HTTP-запрос
Теперь в ПланФиксе можно отправлять не только POST, но и GET-запросы. Поэтому мы переименовали действие, отвечающее за отправку запросов. Теперь в выпадающем списке его можно найти по названию «Послать HTTP-запрос»:
Блок авторизации
Добавили к настройке запросов блок с авторизацией. Он часто необходим для работы с API платежных систем. Чуть позже на примере покажу, как это работает. Мы расположили блок авторизации вот тут:
Разобрать полученный ответ
Пожалуй, это самая долгожданная доработка. Теперь с её помощью ПланФикс понимает, какую информацию ему присылают сторонние сервисы:
Если перейти в настройки, вы увидите уже привычный интерфейс, который работает по тому же принципу, как при разборе почты:
Примеры GET и POST запросов
Ниже приведу несколько примеров, которые продемонстрируют работу нового функционала.
GET-запрос: получение курса валют
Теперь получить информацию о курсе валют прямо в ПланФикс стало значительно проще. Рассмотрим настройки на примере ЦБ РФ. Будем использовать XML-данные, которые Центробанк отдаёт по ссылке:
http://www.cbr.ru/scripts/XML_daily.asp
Настраиваем кнопку:
Разбираем ответ от банка:
Обратите внимание, разбор ответа происходит так:
- В инфоблоки кладем нужные данные из ответа банка.
- Затем в текущую задачу добавляем комментарий с нужной информацией. Делаем это в качестве контрольной меры. Можно и не добавлять.
- На последнем шаге данные из инфоблока дублируем в соответствующие поля задачи, чтобы можно было их использовать в дальнейших расчетах.
После клика по кнопке в задаче видим следующее:
POST-запрос: трекинг посылок
Благодаря разбору ответов на HTTP-запросы, теперь можно отслеживать посылки в транспортных компаниях. Например, давайте получим статус посылки от украинской компании «Новая Почта».
Для этого добавим в задачу два поля типа строка — «ТТН» и «Номер телефона». Далее, используя API «Новой Почты» настраиваем кнопку:
{
"modelName": "TrackingDocument",
"calledMethod": "getStatusDocuments",
"methodProperties": {
"Documents": [
{
"DocumentNumber": "{{Задача.ТТН}}",
"Phone":"{{Задача.Номер телефона}}"
}
]
}
}
Разбор ответа выглядит так:
В итоге в задаче видим дату и статус отправления:
Сложные примеры: предварительная аутентификация и авторизация
Теперь разберем примеры с предварительной аутентификацией. Они достаточно сложные в понимании, но мы уверены, вы во всём сможете разобраться.
POST-запрос в СДЭК: получаем информацию о номере заказа через аутентификацию по токену
Например, чтобы работать с API транспортной компании СДЭК, в начале необходимо получить токен и добавить его в заголовок к основному запросу.
Схема работы такая:
Отправка предварительного POST-запроса - Получение токена в ответ - Добавление токена в заголовок основного запроса - Отправка основного запроса.
Вот как это можно настроить в ПланФиксе.
Шаг № 1 — Отправляем предварительный запрос в СДЭК, проходим аутентификацию:
Шаг № 2 — разбираем ответ на предварительный запрос — получаем токен. И тут же отправляем в СДЭК основной запрос для получения информации о номере заказа:
Обратите внимание, полученный токен добавлен в заголовок основного запроса.
Шаг № 3 – разбираем полученную информацию от СДЭК о номере заказа и добавляем её в нужное поле:
POST-запрос в ЮКассу: автоматическое получение ссылки на оплату через базовую авторизацию
Для общения ПланФикса и ЮКассы будем использовать базовую авторизацию, иначе нельзя. Пример, который настроим, позволит автоматически формировать ссылку на оплату и отправлять её клиенту.
Шаг № 1 — формируем запрос с платежной информацией для ЮКассы и проходим базовую авторизацию:
{
"amount": {
"value": "{{Задача.Возможная сумма сделки}}",
"currency": "RUB"
},
"payment_method_data": {
"type": "bank_card"
},
"confirmation": {
"type": "redirect",
"return_url": "https://mysite.ru/after_payment"
},
"capture": true,
"description": "Заказ в Рога и Копыта"
}
Шаг № 2 — разбираем полученный ответ и добавляем ссылку на оплату в задачу:
Что теперь
Теперь вам будет гораздо проще получать информацию в ПланФикс из других систем: курсы валют, статусы почтовых отправлений, ссылки на оплату. Уверен, примеры выше — это всего лишь мизерная часть необъятных возможностей, которые открылись перед вами с появлением разбора ответов на HTTP-запросы.
Кстати, мы ждём от вас историй о том, как вы будете использовать новую возможность в своей работе. Поделитесь опытом, нам очень интересно 🙂
Не забывайте о наших социальных сетях: ВКонтакте, Telegram и ВК Видео. Там появляются новости о доработках и новинках. Подпишитесь, чтобы ничего не пропустить.
Волшебно!
Особенно, когда знаешь сложности всего этого добра в части программирования.
А подскажите, регулярные выражения, как в email-парсинге нам подвезут сюда?
И сможем ли мы когда-нибудь писать некий цикл запросов, чтобы в одном заходе получать не одну запись, а несколько списком, и уже дальше разбирать это все объекты, создавать их и прокидывать в разные места?
Степан, регулярка там есть, посмотрите внимательно 🙂
По второму вашему вопросу нужны подробности: какие записи, какие объекты?
А вообще, это сценарий по одной задаче, поэтому не совсем понятен кейс, для которого надо получать сразу “пачку” данных.
Сейчас можно, как и в почте, получить данные и сделать из этого аналитики – https://i.imgur.com/OCdElIA.png
Увидел регулярки, спасибо!
Ну вот пример:
Обращаюсь к API банка и он дает мне список платежей за период.
Мне надо теперь этот список разобрать, но я могу только создать аналитики, а мне, по сути, надо прокинуть значения в разные задачи.
Я бы сделал инфоблок по ИНН
Потом цикл по этому списку:
{{системные.аккаунт}}
for i,y in INN, SUMM:
i
id поля задачи
y
Тоесть, проверил бы данные на условия и отправил бы некий запрос дальше, скажем, к API-Планфикс, чтобы у меня получился XML- кусок с нужными мне структурами по количеству, и оно бы улетело куда мне надо.
Эх, весь код обрезало. Вот скрин:
https://yadi.sk/d/Vx9t02iQdfmgsw
Пока кажется, что написать код для вашей задачи – это более простое решение, чем пытаться наладить всё через разбор ответов на http-запросы.
Обсудим ваш кейс в команде.
Долгожданно!)
А можно ли сделать не только разборы POST запросов, но и обычных комментариев? Например, в сценарии с триггером “Добавлен комментарий…”
Владимир, а покажите нам пример комментария, который вы хотите разбирать?
Как он появляется у вас в системе?
Ну у меня есть микро-кейс например, https://blog.planfix.ru/sobiraem-utm-dannye-klienta-vnutri-ego-kartochki-v-planfikse/ вот тут публиковал, но хочется избежать запира (глючит больно с парсингом).
Мы прокидываем через deeplink телеграмма utm-метки, которые приходят в описание задачи: http://joxi.ru/nAyJp1lCagnDLr
Вот их бы уметь разбирать (это правда не комментарий, а описание)
Если кому то нужна помощь в настройке таких запросов под свои задачи. Обращайтесь к нам – https://crm2b.pro/
На совсем понятно, как реализовать обычный вариант:
1. Авторизация по логин-паролю на странице типа example.com/login.php
2. Получении данных с другой (внутренней) страницы сайта типа example.com/page.php с полученной авторизацией
Что надо получить в первом шаге и послать во втором шаге?
На первом шаге делайте авторизацию, как в примере ЮКассы, а дальше по примеру СДЭК.
Еще хотелось бы явно указывать тип запроса GET,PUT,POST , для некоторых api это очень важно и например изменить элемент без PUT никак не получится (
Ну и если при отправке запроса будет подсветка синтаксиса json вместо html редактора, это было бы круто.
Артём, в каком API вы планируете использовать PUT?
Эту фичу планируется реализовать?
Access denied. Your browser does not support JavaScript! JavaScript is required for this site to work.
Какую? )
Сайт не хочет отдавать контент, пишет Access denied. Your browser does not support JavaScript! JavaScript is required for this site to work.
Напишите в службу поддержки, пожалуйста. Расскажите подробно, что не работает и приложите скриншоты.
Ребята, поясните момент по Шаг № 1 — Отправляем предварительный запрос в СДЭК, проходим аутентификацию:
В примере URL оканчивается ?parameters
GET ?api=&version=&method=
Когда я устанавливаю
URl=?api=&version=&method=
Получаю верный ответ 200
В случае
URl= и задаю параметры
{“success”:false,”error”:{“code”:101}}
URl=? и задаю параметры
{“success”:false,”error”:{“code”:101}}
URl=?parameters и задаю параметры
{“success”:false,”error”:{“code”:101}}
Как должен заканчиваться URL чтобы параметры заработали?
Ребята, поясните момент по Шаг № 1 — Отправляем предварительный запрос в СДЭК, проходим аутентификацию:
В примере URL оканчивается ?parameters
GET “CGI_PATH?api=API_NAME&version=VERSION&method=METHOD”
Когда я устанавливаю
URl=”CGI_PATH?api=API_NAME&version=VERSION&method=METHOD”
Получаю верный ответ 200
В случае
URl=”CGI_PATH” и задаю параметры
{«success»:false,»error»:{«code»:101}}
URl=”CGI_PATH?” и задаю параметры
{«success»:false,»error»:{«code»:101}}
URl=”CGI_PATH?parameters” и задаю параметры
{«success»:false,»error»:{«code»:101}}
Как должен заканчиваться URL чтобы параметры заработали?
UPD: при отправке вырезались переменные, изменил.
Владимир, напишите нам в службу поддержки, пожалуйста. Опишите подробно всё и приложите скриншоты настроек. Попросите коллег подключить меня к задаче.
Обратил внимание, что если при разборе инфоблока выбрать действие “добавить комментарий” то ответ сценария постится от имени инициатора отправки пост-запроса (у меня по кнопке), а комментарий после разбора инфоблока от имени администратора аккаунта.
а курс валют можно в справочник запихнуть ?
Можно, только пока не ясно зачем?
Мы так и сделали, чтобы была история курсов валют – нам часто при расчете сделок и проектов нужен курс на конкретную дату.
У нас есть справочник с курсами валют и есть входящий вебхук, который позволяет стороннему коду (реализовали через интегромат) спросить у Планфикса, есть ли уже в системе курс на указанную дату, и, в случае отрицательного ответа, взять его у ЦБ и записать в справочник, после чего уведомить финансиста и бухгалтера о поступлении нового курса.
Наверное элегантнее было бы как-то запрашивать курс автоматически через сервис ЦБ, возможно с этим замечательным новым функционалом мы потом как-нибудь именно так все и настроим 🙂 В любом случае очень крутое нововведение, большое спасибо вам, уважаемые разработчики!!
Отличный труд! Спасибо!
Спасибо, Александр 🙂
Добрый день! Я так понимаю, что данный сценарий с HTTP-запросом возможно использовать и для получения данных из самого Планфикса, допустим из фильтров задач или отчётов? Если это так, подскажите как это реализовать.
Да, вы правильно поняли. С помощью HTTP-запроса можно “вытащить” данные из ПланФикса и “положить” их в другую программу или сервис. Как это реализовать – зависит от того, что именно вы хотите сделать.
Вот как раз и “положить” хотелось бы обратно в Планфикс. Например, собрать по фильтру задач данные о количестве задач по условиям: процесс, шаблон и статус. И далее, “положить” данные о количестве в пользовательское поле задачи, тоже, в Планфиксе. Тут конечно напрашивается сразу вопрос: почему бы не реализовать дополнительные переменные типа {{…}} для похожих ситуаций, которые могли бы работать с Планировщиками, Отчетами и Фильтрами?
Сергей, к сожалению, такие подсчеты автоматически делать нельзя.
Артём спасибо, я так понимаю, что это техническое ограничение, и поэтому для этого есть отчёты)