В конце 2015-го года Microsoft запустила конкурс по разработке решений на базе Office 365. Участникам нужно было разработать приложение, которое являлось бы либо надстройкой для Office, либо использовало бы Office 365 APIs. Я и двое моих друзей решили участвовать. Идея нашлась очень быстро, достаточно было сесть и обсудить «боли», возникающие у каждого из нас в повседневной работе. Так родилась идея Molecula – решения, позволяющего упростить ведение групповых переписок в Outlook.

Чтобы лучше понять кому и для чего нужна Molecula, давайте посмотрим наш промо-ролик, созданный для участия в конкурсе. История про успешного IT-менеджера Майка (на английском):



Проблематика


Нам постоянно приходится переписываться по email с разными группами людей. Каждой группе соответствует определенная тематика будь то один из проектов, обсуждение рабочих вопросов с сотрудниками из других отделов, общение с партнерами, заказчиками и т.д. Когда возникает потребность написать новое письмо той или иной группе людей, приходится искать старые письма в истории и копировать всех участников переписки в новое письмо в ручном режиме. Это отнимает кучу времени! Еще хуже, когда нужно написать сразу нескольким группам, участвовавшим во множестве переписок. Как пример – отправить поздравление с новым годом всем сотрудникам заказчика, с которыми ты общался в течение года. В ручном режиме можно запросто упустить кого-то важного из виду. Проект Molecula призван решить эту проблему.

Как работает Molecula


Molecula индексирует все письма из аккаунта в Office 365 и группирует участников переписок при помощи специального алгоритма. Полученные группы представляются пользователю в виде наглядных «пузырей», большие из которых представляют группы людей, с которыми пользователь общается чаще всего:



Чтобы написать новое письмо, достаточно нажать на нужный «пузырь» и уточнить какие из получателей будут в полях TO, CC и BCС (при помощи перетаскивания контактов из одной группы в другую):



Нажимаем кнопку «Set Recipients» и на этом все – получатели заданы! Больше не нужно рыться в почте в поисках старых писем!



Архитектура решения


В рамках MVP мы разработали Outlook Add-Id и Web-приложение с использованием Azure AD. При разработке Outlook Add-In использовали JavaScript API для Outlook и новый UI-фреймворк от Microsoft – Office UI Fabric. Для визуализации «пузырей» применили библиотеку d3js.

Серверная часть реализована с использованием Java и Docker-контейнеров. Непосредственно сервер развернут в Azure, а для получения писем из Office 365 используется Microsoft Graph API.

Более наглядно архитектура системы представлена на рисунке ниже.



Проблемы с которыми мы столкнулись при разработке


Много времени ушло на изучение логики настройки Graph API в Azure и визуализацию «пузырей» в том виде, как мы этого изначально хотели. С большими проблемами давалась отладка под OWA для iPhone – на эту тему скоро выйдет отдельная статья.

Как попробовать


Сейчас мы работаем над публикацией первой версии Molecula Add-In в Office Store и рассчитываем, что к середине апреля надстройку можно будет установить напрямую из магазина Office. С веб-версией можно поиграться уже сегодня, перейдя по ссылке ниже. Обратите внимание, что для тестирования необходим аккаунт c подпиской на Office 365.

Ссылка на Веб-версию Molecula: https://molecula.email/web

Дальнейшие планы


Как я уже писал выше, первая версия Molecula — это MVP (минимально полезный продукт). Во второй версии мы планируем:
  • улучшить алгоритм группировки получателей;
  • предоставить пользователю альтернативный способ визуализации групп, позволяющий отображать большее количество групп на одном экране с возможностью контекстного поиска по всем группам;
  • есть идеи по интеграции групп из Molecula со стандартным функционалом групп в Outlook (пока прорабатывается).

Дальнейшее развитие будем планировать, отталкиваясь от пожеланий пользователей. Если Molecula решает проблему, которая актуально и для вас – напишите об этом в комментариях! Расскажите нам, что еще хотели бы видеть в Molecula?

Понравилась идея? Поддержите Molecula своим голосом на DevPost (для голосования может потребоваться регистрации, занимает не более 3-х минут).




Об авторе


Петр Ляпин -Технический директор ООО «ВейвПоинт»

Более 10 лет опыта внедрения проектов по автоматизации
бизнес-процессов. Работал со множеством российских и
зарубежных компаний. Основатель проекта XLTools.net.

Комментарии (15)



  1. and7ey
    15.03.2016 20:12

    Зачем тут серверная часть? Мне кажется, что все можно было сделать на клиенте.


    1. peterliapin
      15.03.2016 22:08
      +1

      Чтобы построить группы нам необходимо пройтись по всем письмам из почты и проанализировать участников переписки. К сожалению, текущая версия JavaScript API для Outlook такой возможности не дает. Да и сама обработка может быть довольно долгой и делать её нужно инкрементально, что невозможно на клиенте.

      Обработку исключительно на клиенте можно реализовать если использовать для разработки VSTO. Мы уже думали над этим вариантом и, возможно, в будущем такая версия так же будет разработана. У VSTO есть свои минусы, на тему сравнения VSTO и нового типа Add-Ins для Office можно почитать вот эту статью.


  1. Sergey-S-Kovalev
    16.03.2016 10:26

    Outlook 2016 > Создать элемент > Другие элементы > Группа контактов
    Ввести имя и добавить контакты > Сохранить и закрыть.
    Готово.

    Работает везде, синхронизируется, не требует дополнительной установки, делается один раз.


    1. peterliapin
      18.03.2016 11:33
      +1

      Сергей, вы правы. Так тоже можно делать, но это ручной способ ведения групп. Минус такого подхода в том, что группы нужно создавать самому. Допустим, у меня начинается новый проект и кто-то из моих коллер начал групповое обсуждение этого проекта по email, в случае с группами контактов мне нужно проделать указанный вами сценарий вручную, что подразумевает ручное копирование всех контактов из письма, которое я получил от коллег. Поиск контактов по письмам там не предусмотрен.

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

      В любом случае — ваше замечание очень полезно! В будущем мы планируем сделать интеграцию групп Molecula с группами контактов и новыми "Группами общения" не так давно появившимися в Exchange Online. Это позволит использовать преимущества обоих подходов и избавит нас от множестваручных действий.


      1. Sergey-S-Kovalev
        18.03.2016 12:56

        | подразумевает ручное копирование всех контактов из письма
        Все верно. Самый быстрый стандартный вариант:
        Выделить все контакты в письме > Ctrl+C > Создать элемент > Другие элементы > Группа контактов > Ввести имя группы > Добавить участников > Контакты > Из адресной книги > В поле "Участники" нажать Ctrl+V > Ок > Сохранить и закрыть.

        Но я уверен, что ваш продукт найдет своего благодарного пользователя. :)


        1. peterliapin
          18.03.2016 13:15
          +1

          Да, хороший вариант. Единственное, он не исключает того, что для всех полей (TO, CC, BCC) CTR+C > CTR-V нужно делать по отдельности. Одновременно скопировать контакты из всех полей не получится. Плюс, Molecula понимает какие контакты должны быть в TO и CC когда нужно еще раз отправить письмо аналогичной группе. С группами контактов такого не получается сделать.

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


    1. peterliapin
      18.03.2016 11:45
      +1

      Сергей, добавил идею про интеграцию с группами контактов в наши планы по развитию проекта: http://devpost.com/software/molecula (см. раздел "What's next for Molecula?"). Спасибо за идею!


      1. Sergey-S-Kovalev
        18.03.2016 13:03

        Незачто в общем то :)
        Я выскажу своё личное мнение, коли уж пошла такая пьянка. У вас там поля Кому/Копия/СС сожраны. Выглядят куцо и не информативно, непривычно. Убрать лишнего сотрудника из группы на стадии её создания не удобно. По-моему не стоит усекать их, лучше сместить интерфейс создания ниже после того как, какая то группа выбрана.

        Но я не UI дизайнер, я простой человек, могу и ошибаться.


        1. peterliapin
          18.03.2016 13:21
          +1

          Не очень понял, что означает "сожраны". Сможете показать на скриншотах? Можно на почту: peter@molecula.email

          Мы обязательно подумаем как улучшить интерфейс! Первая версия может быть не идеальна и мы с удовольствием рассматриваем все идеи по улучшению. Заранее спасибо!


          1. Sergey-S-Kovalev
            18.03.2016 16:40

            Видно ассоциативный ряд отличается по поводу "сожрано" :)

            На мой взгляд должно быть так:

            Спойлер


            1. peterliapin
              18.03.2016 17:34
              +1

              Согласен. К сожалению, мы этим не можем управлять. В реальном использовании оно будет выглядить чуть лучше за счет того, что обычно письмо отображается на весь экран. Тут я сильно сжал окно, дабы попасть в нужные размеры.


              1. Sergey-S-Kovalev
                18.03.2016 20:09

                | обычно письмо отображается на весь экран
                Я бы согласился, что на полном экране оно бы выглядело лучше, но лично у меня 95%+ писем это переписка, а не создание нового письма. А переписка идет в основном окне Outlook как правило. И получается, что ширина остается примерно такой же:
                Это после нажатия кнопки Ответить

                Спойлер


  1. peterliapin
    18.03.2016 11:48
    +1

    Друзья, как я уже говорил, наш проект учавствует в конкурсе Hack Productivity. Сегодня последний день голосования!

    Если вам понравилась идея — поддержите наш проект на DevPost: http://devpost.com/software/molecula — труется небольшая регистрация, далее нужно нажать vote и like. Весь процесс занимает не более 2-х минут!

    Заранее всем спасибо! Ваши идеи и поддержка очень важны для нас!


  1. pletinsky
    21.03.2016 02:39

    Очень похоже на gmail контакты во взаимодействии с кругами google+