Последние несколько месяцев мы с коллегами проводим различные очные и онлайн мероприятия, посвященные безопасности. Один из наших продуктов – вебинар “Взломай меня, если сможешь.”. Он рассчитан на руководителей отделов ИБ и ИТ и проходит каждый день с 11.00 до 12.00. Для привлечения на вебинар мы создали лендинг modernworkplace.ru, где на одной из страниц есть форма регистрации. В процессе работы мы заметили, что ручной процесс регистрации занимает много рутинных действий и непрозрачен для будущих слушателей. Итак, будем автоматизировать! От средства автоматизации хочется: отсутствие необходимости в инфраструктуре, бесплатность, интеграция с уже существующими и используемыми инструментами Office 365. Microsoft Flow – это тот инструмент, который поможет “склеить” все эти требования в одном решении.

Если до этого мы с коллегой Михаилом Трифоновым экспериментировали с Microsoft Flow, то здесь задача практическая и полезная. Заодно я расскажу, с чем я столкнулся в ходе работы. Что понравилось и не понравилось.

Описание задачи

Форма регистрации на лендинге состоит из нескольких обязательных полей с контактными данными и выбором желаемой даты. Для отслеживания маркетингового канала, есть скрытое поле utm, которое автоматически формируется нашей CMS. Ну и мы добавили скрытое поле activity, которое совпадает с названием мероприятия. Это в дальнейшем позволит масштабировать решение на другие онлайн-мероприятия.

В итоге передаваемые из формы поля выглядят так:

Наш вебинар – это повторяемое событие, поэтому я создал в своем календаре ряд собраний Skype для бизнеса, в которого пригласил коллегу Алексея Зыкова, чтобы он помогал в ходе вебинара:

Я решил, что слушатели не должны видеть в своих приглашениях на вебинар других участников, поэтому для каждого слушателя должно формироваться отдельное подтверждение регистрации, в котором он получит ссылку на подключение и может добавить его в свой личный календарь.

Если на дату желаемой регистрации мероприятия нет в моем календаре (выходные, праздники, командировка), то надо предусмотреть автоматический ответ о невозможности регистрации на выбранную дату. Выяснилось, что любят регистрироваться и на прошедшие даты ;-). Поэтому необходимо учесть и этот момент.

Кроме того, мероприятие рассчитано на определенную аудиторию (по численности сотрудников, роли в организации). И перед регистрацией необходимо утвердить участие или отказать.

Данные участников должны попадать в список на SharePoint Online. Мы эти данные в дальнейшем можем использовать для коммуникации, пересылки в CRM, аналитике в PowerBI и других сценариях.

Microsoft Flow

Microsoft Flow – это решение, часть Microsoft Office 365, которое позволяет создать последовательности (потоки, flows). В начале потока всегда располагается триггер, который запускает на выполнение действия последовательности. Возможны логические ветвления, циклы.

Flow работает с различными сервисами с помощью соединителей (коннекторов). Список таких соединителей огромен и охватывает популярные службы не только Microsoft, но и MailChimp, Slack, Adobe, Google, Facebook. На момент написания статьи было 199 таких соединителя.

Каждый из соединителей предоставляет несколько триггеров и действий. Вот, например, что есть в Office 365 Outlook:

Удобно, что самые популярные и простые последовательности уже сделаны в виде шаблонов. И их можно выбрать, настроить необходимые параметры и сразу же использовать. И никакого программирования. Подумайте, есть ли у вас какие-то ежедневные рутинные занятия, и посмотрите готовые шаблоны на flow.microsoft.com.

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

Решение

Наша CMS может выдавать данные формы регистрации в письме электронной почты или передавать их в виде application/x-www-form-urlencoded в webhook.

Сначала я планировал обрабатывать заявку с помощью разбора электронной почты. Но столкнулся со сложностями. Я не нашел способа, как можно разбить содержимое на строки. Работа со строками, в которых есть переводы строки – это слабая сторона Microsoft Flow на текущий момент.

Сразу же расскажу и о втором неприятном моменте – документация. Если использовать лёгкие последовательности, без изменения данных между действиями (получили данные и передали их в неизменном виде далее по конвееру), то никакой документации не надо. Всё очень легко. Но, если выйти за эти “рельсы”, то документации катастрофически не хватает. Поисковые системы тоже не помогают. И вот почему: Flows – это на самом деле адаптированный для Office 365 вариант Azure Logic Apps, одной из множества служб Azure. И документацию по функциям лучше искать именно для этой службы. Находится гораздо больше вариантов.

Итак, с электронной почтой не сложилось, я не смог вычленить полезную информацию из тела письма, оно еще и в HTML-разметке было, кстати.

Стал смотреть на второй вариант – отправка на webhook.

В Microsoft Flow есть такой триггер – When a HTTP request is recieved. В параметрах задается метод POST – именно так наша CMS передает данные формы.

В момент сохранения последовательности в Azure создается webhook, на который будут передаваться данные из формы регистрации. URL-адрес веб-хука надо указать в настройках CMS.

Сохраняю последовательность и проверяю настройки отправки в CMS. И выясняю, что не определяет CMS наш веб-хук. После размышлений и чтения документации по CMS понял, что необходимо добавить ответ на полученный HTTP-запрос. Сейчас последовательность выглядит так:

Всё получилось!

Кстати, в Microsoft Flow есть возможность посмотреть данные, которые переходят с этапа на этап при каждом выполнении последовательности в Run History.

Продолжаем редактировать нашу последовательность.

Высылаем письмо о получении заявки на регистрацию. Для этого я выбрал действие отправки электронной почты и в необходимые поля внес данные. Обратите внимание на правое окно. В нем можно выбрать либо Динамическое содержимое – это информация, которая доступна из предыдущих действий последовательности: переменные, заголовки, данные; либо это могут быть выражения. И я сэкономлю вам огромное количество времени, которое я потратил на поиск: на скриншоте выражение для выбора значения из ответа в виде application/x-www-form-urlencoded.

В следующих действиях я задал несколько переменных, чтобы потом проще было работать с данными. Даты трансформируются в тот вид, который потом можно использовать в выражениях Flow.

Далее я ищу, есть ли данную дату/время событие в моем календаре. В качестве фильтра дополнительно ко времени используется тема. Она должна совпадать со значением, которое мы получаем в поле activity из формы регистрации. Кстати, здесь есть тоже неочевидный момент: в возможных действиях есть Get Event, Get Events и Get calendar view of events. Экспериментально я выяснил, что с повторяемыми событиями и событиями с будущими датами корректно работает только Get calendar view of events. Он возвращает массив из всех доступных событий с примененными условиями и фильтром. Мы получаем либо пустой массив, либо массив из одного события. Далее в условном действии проверяем, какое количество событий у нас на это время и проверяем, не в прошлом ли желаемая дата регистрации. И вот здесь, когда надо проверить несколько условий, легкость Microsoft Flow исчезает. Только хардкорное программирование формулы. Даже без подсказок. Ещё раз подчеркну, что если условие простое, то всё легко и визуально.

Если не условие не выполняется, то высылаю сообщение о невозможности регистрации на заданную дату и прекращаю выполнение последовательности.

В случае, если условие верно, в цикле извлекаю из события ссылку на подключение через Skype для бизнеса. Эту ссылку я указал в поле Местоположение (Location) при создании события. И сохраняю значение в переменную, чтобы потом можно было её вставить в письмо с подтверждением регистрации.

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

Следующие шаги предсказуемы и я не буду подробно на них останавливаться: отправляем письмо об отказе или заносим данные в список SharePoint Online и создаем событие и отправляем его слушателю:

Выводы

Microsoft Flow – это прекрасная задумка, которая действительно позволяет создать процесс относительно неподготовленному пользователю.

Плюсы: бесплатно пользователям Office 365, не требует инфраструктуры, быстро, можно расширять функционал через веб-сервисы и написание функций Azure.

Минусы: документация, не хватает некоторых функций “из коробки”.

 

Я рекомендую Microsoft Flow!

Как Microsoft Flow помогает нам проводить вебинары
Поделись с друзьями:
Дмитрий Узлов on EmailДмитрий Узлов on FacebookДмитрий Узлов on Linkedin
Руководитель направления проектов компании "Технополис".
MCSE - Cloud Platform and Infrastructure [Charter Member]
MCSE - Productivity

Помогаю компаниям создавать безопасную и надёжную среду для коллективной работы сотрудников, используя облачные технологии.
Метки:    

Отправить ответ

Please Login to comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Уведомлять
Перейти к верхней панели