На главную страницу ЗАО Софткей
 Главная   Новости   Статьи   Пресс-релизы   Рассылки 
 
MS O365 test

"Если Это, Тогда То". Интернет-программирование в стиле Web 2.0

31.05.2012 / Интернет / Игорь Савчук

Сегодня речь пойдет о необычном молодом агрегаторе и автоматизаторе в одном флаконе, очень даже выделяющемся среди огромной армии сервисов Веб 2.0 и который только-только вышел из бета-версии и стал доступен широкой публике. Он называется IfThisThenThat ("Если Это, Тогда То"). Такое странное название сервиса связано в первую очередь с тем, что это фактически визуальный межплатформенный язык программирования, который автоматизирует: связывание и коммуникацию разных сервисов между собой (это классическое mashup-приложение). Конечно, я немного утрирую, до настоящего (и даже ненастоящего) языка программирования ему ещё ой как далеко, но то, что он на полную катушку использует единственную и простейшую логическую конструкцию из программирования: "If условие Then выполняем действие", - это абсолютная правда.

Итак, речь пойдет о "кросспостере", который в состоянии самостоятельно брать информацию в каком-то одном сервисе, а затем вываливать эти данные (как-то модифицировав или причесав их) в любой другой сервис. Эти простые правила, управляющие этим сервисом, вы пишите сами, оформляя их в самостоятельные задачи, которые отныне и ежедневно будет исполнять ваш верный помощник - ifttt.com. И несмотря на множество доступных в нём источников, действий и приемников информации, у всех этих правил лишь одна общая формула - Если Это, Тогда То.

Введение в основы

Не пугайтесь, если вы пока не уловили суть этого сервиса, все очень просто. Сейчас мы более подробно ознакомимся в самых общих чертах с его устройством и предназначением. И самый быстрый способ разобраться в чем-то - выделить его значимые составляющие и последовательно проанализировать их. Воспользовавшись этим гениальным планом, начнем рассмотрение с самого главного, постепенно двигаясь к второстепенному. А в завершение - закрепим всё на конкретном примере.

Итак, сервис базируется на следующих понятиях:

  • Канал
  • Триггер
  • Действие
  • Задание
  • Рецепты

Попытаюсь очень кратко и последовательно объяснить, что это значит. Каналы (channels) - это как источники некоей информации (событий), так и наоборот - конечная цель всех преобразований. Говоря ещё проще, это либо сервисы или сайты, где мы будем брать информацию, чтобы потом с ней что-то сделать, либо исходящие сервисы, куда мы будем постить (посылать, отправлять) ранее добытую информацию.

Идем дальше. Триггер (trigger) - это условие и способ срабатывания для какого-то входящего канала. Чуть позже мы более подробно опишем его суть на простом иллюстративном примере. Действие (action) - это то, что должен сделать сервис с полученной информацией (когда сработало условие триггера). В связи с этим формулу сервиса можно записать более наглядно: If Trigger Then Action. Повторюсь, что как любой триггер, так и действие - оба привязываются к своему каналу, в рамках которого только и рассматриваются.

И, наконец, одно из центральных понятий - задание (task). Это общая цепочка из всех вышеописанных составляющих, цельное логическое правило, которое последовательно указывает: какую информацию где взять, при каких условиях это сделать, куда и как нужно её после этого отправить.

Общая формула работы с сервисом

Повышая уровень синтеза, теперь объединяем всё вместе. Для чего давайте посмотрим, как это работает на практике. Конструирование любого задания в сервисе - это последовательное заполнение формулы If This Then That (если случилось это, тогда делаем то), которое выполняется в пошаговом режиме и в доступной всем визуальной форме.

Итак, сначала мы указываем исходный пункт для задачи - условие её выполнения: If This Then That. Для этого нам предлагают выбрать канал, который мы будем отслеживать (то есть фактически сервис, на котором мы ждем некоего события). Список каналов (доступных сервисов) на ifttt.com огромен, детально мы обсудим это чуть позже. Выбрав нужный канал, мы увидим список доступных триггеров - то есть событий, которые обслуживаются на этом канале. Опять же, пока мы обсуждаем это в первом приближении, поэтому не будет погружаться в детали, пока лишь отмечу, что список триггеров у каждого канала свой и у каждого триггера есть служебные поля, посредством которых его можно настроить и запустить. На каждый канал вы можете повесить только один триггер.

О-кей, дальше. После сохранения триггера на канале мы фактически формулируем исходную точку срабатывания события, а теперь переходим ко второй части формулы - что же делать, когда это условие произошло: If This Then That. И тут, как догадался читатель, снова всплывает список доступных каналов-сервисов, из которого мы снова выбираем - но на этот раз приемник. После выбора приемника определяемся с действием на этом канале.

Весь пошаговый проход цепочки If This Then That выполнен в стиле визарда и состоит из 7 шагов, на каждом этапе вам поясняют, что нужно сделать дальше. После прохода всех действий задача будет сохранена, а сама задача - активирована.

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

Суммируем всё сказанное. Вот вся последовательность из 7 шагов при создании любого задания в сервисе:

  1. выбор входящего канала-источника (фаза настройки источника информации);
  2. выбор триггера, доступного на нем;
  3. настройка параметров выбранного триггера;
  4. переход к фазе приемника информации - выбор исходящего канала;
  5. выбор из списка действия для данного исходящего канала;
  6. настройка параметров действия;
  7. формальное описание задачи и её сохранение./

Делаем привязку к ящику Gmail своего SMS-уведомления быстро

Чтобы более не терять времени зря на пустую теорию, давайте продемонстрируем всё это на очень простом примере.

Для начала сформулируем простую задачу: я хочу получать уведомление через SMS на свой телефон каждый раз, когда ко мне приходит почта на мой Gmail-ящик. У самого ящика такая функциональность отсутствует, поэтому в согласии с парадигмой mashup расширим один сервис возможностями другого.

Нажимаем большую овальную кнопку Create Task, после чего видим общую формулу сервиса:

Как видим, здесь выделено слово This, то есть стартует конструирование цепочки с её начальной фазы - определения условия срабатывания, для этого нажимаем на This. Сервис открывает для нас все доступные для выбора каналы. Мы должны выбрать сервис, который мы будем как-то контролировать, т. е. сервис-источник для наших данных.

Я выбираю (в соответствии с нашим планом) почту Gmail. Единственный момент: при выборе какого-то канала впервые сервис попросит его активировать, то есть в нашем случае для Gmail попросят ввести его учетные данные (как же иначе сможет контролировать сервис ваш почтовый ящик на входящую почту?).

Теперь мы попадаем в меню доступных триггеров для данного конкретного выбранного канала.

Переходим к настройке нужного нам триггера. Отдельно хочу заметить, что пока их не так много, как видим, - для Gmail их всего три. Мы выберем пункт New email from search - этот пункт позволяет отобрать среди всей приходящей массы почты только те письма, в заголовке или теле которых встречается точно указанная фраза, которую нам предложат ввести при настройке этого триггера (в моем случае - "выгодное предложение)":

Тут я опять сделаю вынужденное замечание. Нужно очень осторожно относиться к триггерам на русском языке, потому как из-за месива с кириллическими кодировками они не всегда срабатывают. Тут всегда возможно множество обходных путей. Например, кроме канала Gmail доступны также похожие каналы Email и RSS, которые также при желании можно приспособить к мониторингу почты в нашем Gmail-ящике (у которого доступен как pop3-доступ к почте, так и доступ по RSS), у каждых этих альтернативных триггеров есть свой набор возможностей. Сочетая все это вместе, вполне можно добиться нужной функциональности даже для русских писем, просеивая драгоценный поток писем через сито множества фильтров.

С фазы перехода от описания условия переходим к части, ответственной за само действие, поэтому клацаем мышкой по слову than:

Итак, теперь мы оказываемся на шаге 4 - настройки принимающих каналов. Это значит, что все, что выловит наш настроенный на шагах 1-3 фильтр, будет сбрасываться в выбираемый канал-приемник:

Как видно, я выбираю SMS в качестве канала-приемника. Ещё раз напомню, в первый раз выбор любого нового канала требует его активации, а также в некоторых случаях и подтверждения. Поэтому в этом случае сначала вы получите на свой телефон PIN-код, введя который на нашем сайте вы активируете привязку своего мобильного телефона к сервису. Тут важна лишь одна мелочь: все неамериканские номера телефонов должны начинаться с двух нулей и только потом идет международный код вашей страны, оператора и так далее. Например, для Беларуси этот префикс будет выглядеть так: 0037529xxxxxxx.

Как видно, на данный момент для этого канала (SMS) доступно единственное действие - отправить сообщение через SMS. Заходим в это действие, чтобы настроить его параметры:

Здесь мы можем набрать свой текст сообщения, причем в него можно вставить специальные макроподстановки, которые затем подставят исходные данные для каждого полученного письма. Их список у каждого действия свой (иногда может и не быть вовсе), они всегда заключаются в двойные фигурные скобки {{some_macro}} и в терминологии сервиса именуются как add in. Их общий список доступен справа от формы ввода текста в выпадающем комбосписке.

После всех настроек не забываем подтвердить создание задачи через Create task.

Дальше финальная, чисто формальная страница - описание вашей задачи, чтобы вы сами ненароком не забыли её назначение:

В итоге мы получаем настроенное и сохраненное задание. Управлять и отлаживать его можно с помощью кнопок, расположенных справа от названия задачи, - я опишу их назначение чуть ниже.

Подключать и сочетать эти службы между собой можно как угодно. Я, например, через канал Weather и его триггер Tomorrow's forecast calls for заказал себе SMS, если завтра ожидается дождь. Другой вариант, я мониторю свой сайт на доступность одним из множества сервисных сайтов, который в случае проблем с доступом к моему сайту высылает мне e-mail с предупреждением. По примеру выше вы уже знаете, что по заданной ключевой строке в таком письме-уведомлении можно организовать и автоматическое SMS-уведомление на свой телефон. Таковых примеров можно привести огромное количество, позвольте мне на этом остановиться.

Последние штрихи в описание

Что касается деталей, то сервис проверяет события с интервалом примерно в 10-15 минут, так что те, кому нужны быстрота реакции и мгновенная доставка откликов на события, будут немного разочарованы, в моём же случае - этого более чем достаточно.

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

Ради справедливости нужно также вспомнить и про ещё один заявленный термин-концепцию - рецепты (recepts), который всего-навсего представляет собой уже готовую цепочку действий (заданий), ранее сохраненную кем-то из пользователей сервиса. Как правило, в качестве подобных рецептов выступают некие сторонние популярные и интересные автоматизации, поэтому, если вам лень что-то выдумывать самостоятельно, начните работу с сервисом с обзора уже готовых удачных рецептов (для экономии времени рекомендую через фильтр выбрать наиболее популярную в народе рецептуру).

Кстати, эта самая возможность как бы между прочим вскрывает ещё одну особенность сервиса - возможность делиться своими удачными находками с другими. Итак, рецепты (recepts) - это своего рода избранное из заданий (task). Что интересно, можно создавать комбинированные действия из интересных вам рецептов (то есть сочетать части that и this из разных рецептов).

Теперь, ознакомившись со всеми концепциями, стоит остановиться и заострить своё внимание на центральной из них - задачах. Вопрос стоит так: что мы можем делать с уже готовой задачей в рамках этого сервиса?

Ответ: справа от каждой задачи расположена своя отдельная панель из кнопок-операций, доступных для её управления (смотрите скриншот выше). Пока там лишь 4 кнопки, перечислим их слева направо: значок мусорки - нужна, чтобы удалить задачу из списка доступных, дальше идёт значок включения-отключения задачи (то есть, не удаляя её, задачу можно временно "запаузить"), третья кнопка отсылает после её нажатия к форме создания "общедоступного рецепта", который мы рассмотрели чуть выше. И последняя, крайняя правая, кнопка со стрелкой - это кнопка проверки задачи, своего рода примитивный отладчик, который позволит понять вам, где и что не работает, если что-то пошло не так. Дополнительно подскажу, что все ваши текущие задания всегда можно найти тут.

Меню из каналов и триггеров

Я было сначала подумал рассказать, сколько всего есть на выбор вкусных каналов у этого сервиса, но потом я одумался, ибо бумаги на это дело не хватит, поэтому лучше это посмотреть самому - посетите список всех доступны каналов (сейчас их чуть меньше 30 - все это ведущие мировые сервисы), ну и попутно у понравившихся каналов можно изучить доступные триггеры.

Главные недостатки

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

  1. Плохая поддержка различных кодировок русского языка. Будьте осторожны при фильтрации или манипуляциях с русским текстом здесь.
  2. Пока ещё достаточно малое количество триггеров, впрочем, сервис очень бурно развивается, и, когда он был ещё в бета-версии (это всего лишь месяц назад), триггеров здесь было заметно меньше. Так что прогресс тут движется как нигде быстро, поэтому перспективы просто завораживают.
  3. Ограниченность в возможностях композиции правил. То есть, развивая эту идею дальше, хотелось бы иметь возможность создавать какие-то чуть более сложные правила и логику, типа "если это, тогда то, в противном случае - это". Или иметь аналог switch и так далее. И ещё: в некоторых триггерах уже сейчас есть удобные макроподстановки (например, можно подставить тему профильтрованного письма в некий свой текстовый шаблон сообщения) - хотелось бы побольше таких интересных макросов.

Общий вывод

Несмотря на все приведенные недостатки, сама идея просто великолепна, очень практична и удобна. Если этот сервис развивать дальше и довести его до ума, то это, видимо, и будет тот прообраз визуально-интернетного программирования, которое будет доступно любым обычным офисным пользователям уже в ближайшем будущем. А Интернет в это время станет четко связан осознанно взаимодействующими между собой сервисами. И эти глобальные горизонтальные связи выстроят и настроят под себя самые обычные люди, тогда как сейчас, по большей части, это всё-таки (пока) прерогатива узкой касты специально обученных и выращенных в специальных учебных заведениях веб-программистов.


Ссылки по теме:

Автор статьи: Игорь Савчук


Рубрики статей
Все статьи
Аналитика
Программы
Игры
Интернет
Авторские права
Интервью
События в мире ПО
Рассылки
Новости мира ПО
Статьи: Мир ПО
Статьи: Программы
Статьи: Игры
Архив выпусков
  «   Ноябрь 2017   »  
Пн Вт Ср Чт Пт Сб Вс
  12345
6789101112
13141516171819
20212223242526
27282930   
Поиск в архиве

Логин / пароль:
запомнить




Наши партнеры:

 САПР и графика



Написать редактору  | RSSЭкспорт новостей и обзоров


Rambler's
Top100 Rambler's Top100

Разработка компании «Битрикс»
Разработано
«Битрикс»


Copyright © 2001-2017 ЗАО «Софткей»