Ольга Тимошенко: А мы активно продолжаем публиковать заметки от наших партнеров. В рубрике «Рассказ от первого лица» наш партнер Дмитрий Маслов расскажет о том, как в ПланФиксе организовать парсер комментариев для работы с внештатными сотрудниками в Telegram. Слово Дмитрию.
Дмитрий Маслов: Всем привет! Меня зовут Дмитрий. Я партнер Planfix, участник команды «Новая Бизнес Среда» и руководитель студии «78works».
Ранее вы могли ознакомиться с моим видео, в котором демонстрируется работа парсера комментариев. Напомню: принцип работы основан на анализе поступающих из внешней системы сообщений (в нашем примере это Telegram) на содержание в них определенного ключа из набора, который формируется динамически. После сверки этих ключей система принимает решение пропускать ли его в задачу или нет.
Сегодня я расскажу как это работает.
Основные модули
Сначала перечислим основные модули решения:
1. Аналитика «Анализ комментария» — формируется автоматически и добавляется в задачу. Отвечает за анализ поступающих комментариев.
Состоит из полей:
- Боевая задача (тип Задача) — содержит ссылку на мастер-задачу, подключенную к задаче-чату;
- Тег задачи (Вычисляемое поле) — вычисляет тег из мастер-задачи для дальнейшего сравнения:
- Последний комментарий (тип Вычисляемое) — вычисляет последний комментарий в задаче-чате, который, например, поступил нам из Telegram;
- Анализ (тип Вычисляемое) — проводит сравнение поля «Тег задачи» из мастер-задачи и поля «Последний комментарий» из задачи-чата:
По результату анализа получаем два возможных значения: 0 или число больше 0.
2. Облако тегов — облако ключей (или тегов, кому как привычней). Это облако является текстовым полем, но при этом оно динамическое, так как вычисляется каждый раз когда подключается или отключается задача от чата.
За подключение, отключение и доставку сообщений отвечает конфигурация «Коммуникация через мессенджеры из любой задачи ПланФикс v2».
3. Набор сценариев задачи-чата — для проведения анализа поступившего комментария из внешней системы, например, Telegram.
4. Набор сценариев мастер-задачи — для проведения финального анализа и принятия решения системой о публикации комментария в задачи.
5. Режим работы парсера — с помощью поля «Список подключенных задач», которое считает количество подключенных мастер-задач и автоматически включает/отключает модуль парсера:
- Счётчик подключенных задач = 1 — это значит что в данный момент 1 мастер-задача соединена с 1 чатом => парсер не функционирует, так как в нём нет необходимости.
- Счётчик подключенных задач > 1 — к задаче-чату подключено несколько мастер-задач. Например, когда дизайнер взял несколько заданий и при отправке его сообщений из Telegram необходимо направлять поток сообщений в нужные задачи => включается анализ комментариев в задаче-чат и в мастер-задаче.
Режим многоканальности
Теперь перейдём к описанию действий при подключении мастер-задачи к задаче-чату в режиме многоканальности.
Ранее к чату уже была подключена задача с тегом LANDING, подключаем еще одну задачу с тегом CSS. Выбираем в поле «Сотрудник» контакт, который хотим назначить на выполнение данной задачи:
1. Сценарии конфигурации «Коммуникация через мессенджеры из любой задачи Планфикс v2» подключают чат с этим контактом к нашей мастер-задаче.
2. В задачу-чат добавляется аналитика «Анализ комментария».
3. По облаку тегов происходит несколько действий:
- Вычисляется поле «Действие с облаком тегов» (тип Строка) — в зависимости от подключения/отключения задачи устанавливается значение Добавляем/Исключаем;
- Вычисляется значение «Буферное поле: строка» (тип Строка) — туда устанавливается значение тега из мастер-задачи:
- Вычисляется значение поля «История тегов» и «Счётчик подключенных задач»:
- Вычисляется готовое облако тегов:
Таким образом, наша мастер-задача с тегом CSS подключена к задаче-чату, значение поля «Облако тегов» пересчитано и содержит два значения: LANDING и CSS, а также добавлена аналитика «Анализ комментария» от данной мастер-задачи:
Подготовительный этап завершен.
Анализ добавленного комментария
Анализируем поступивший комментарий, сравниваем с тегами-ключами подключенных задач и, в случае несоответствия, сразу отвечаем отправителю, что сообщение не доставлено.
Нам поступает комментарий, например, из Telegram.
Система:
- Проверяет его на соответствие условий:
- Складывает его текст в отдельное поле «Комментарий» (тип Строка).
- Запускает пересчет аналитики «Анализ комментария», где происходит сравнение и уточнение содержания в комментарии хоть одной из меток из подключенных задач.
- Вычисляет значение поля «Итог анализа комментария» (тип Строка), которое тянет из поля «Итог анализа комментария» (тип Итоги аналитик) значение 0 или 1.
- Проставляет значение в поле «Анализ сообщения» (тип Чекбокс) для запуска следующего сценария.
Этот сценарий выполняется если «Итог анализа комментария» из аналитики = 1. В случае, если сообщение не содержит тега задачи, то есть «Итог анализа комментария» = 0 — запускается другой сценарий:
Он отправляет ответное сообщение нашему контакту о том, что его сообщение не содержит ни одного тега-ключа из облака и сообщает, какие теги можно использовать для успешной доставки его сообщения в нужную задачу.
Вернемся к нашему сценарию, при котором текст содержит один из тегов. Выполняется следующий сценарий, который уже непосредственно запускает отправку сообщения в связанные задачи:
Нажимаем на чек-бокс отправки сообщения, запускается сценарий:
Он в подключенные мастер-задачи сначала отправляет пустой комментарий от имени робота:
А также вычисляет значение поля «Комментарий» (тип поля Строка) в подключенных мастер-задачах:
Финальный этап анализа комментария
Пустой комментарий от робота в мастер-задачах работает триггером для запуска финального этапа анализа текста, который уже публикует комментарий в мастер-задачу либо нет:
Перед публикацией мы «вырезаем» из текста комментария значение самого тега-ключа:
И публикуем «очищенный» комментарий:
После завершения работы над задачей мы отключаем его из поля «Сотрудник» мастер-задачи. Также из поля облака тегов исключается значение тега нашей мастер-задачи:
При полном отключении всех задач, удаляются все аналитики «Анализа комментариев».
Промежуточные итоги
Конфигурация работает стабильно. В режиме подключения 1:1 (моноканал) полноценно пересылаются файлы. В режиме многоканальности отправка файлов в чаты работает тоже, а обратно пока ограничена отправкой ссылок на файлы (ведём доработку).
По количеству сценариев-инструкций конфигурация тянет на небольшую программу на базе ПланФикс 🙂
Отдельно хотел бы поблагодарить разработчиков за модули тестирования и отладки — без них (проверка условий, технические логи) разработка конфигураций была бы намного медленнее.
Для наглядности и тестирования разработки создан демо-аккаунт, доступ к которому предоставим по запросу в личные сообщения.
Всем удачи и до встречи в ПланФикс.
Ольга Тимошенко: Рассказ был длинным, но интересным. Спасибо, Дмитрий 🙂
Не забывайте подписываться на наши социальные сети и просматривать новости о том, что же интересного появилось в ПланФиксе. Мы есть в Facebook, ВКонтакте, Telegram, Twitter и в YouTube.
Дмитрий, спасибо за подробное объяснение. Все круто, но и сложность настройки такая что не с первого раза поймешь, будем тестировать.
Посмотрев на некоторые сценарии сразу возникла идея попросить команду ПФ добавить новые условия сценария
– Автор комментария не робот;
– Автор комментария робот.
Хотя конечно список таких пунктов уже приличный, и было бы интереснее иметь возможность слева выбрать Автор комментария, далее выбрать знак равно или не равно и справа указать параметр Автор комментария = Это сотрудник или Это контакт или Это робот.
Илья , спасибо за обратную связь!
В условиях сценария мы можем выбрать от кого был последний комментарий: http://joxi.ru/1A58dDoTzqxd32
Это понятно. Просто я вижу конструкцию Автор комментария != Робот Морти и Автор комментария != Робот Рик.
А так можно было бы один условием отсечь.
Это роботы, один доставляет сообщения пользователям , второй только технические комментарии.