有过营销业务开发经验的程序员,一定遇到过类似这种需求:

“当用户关注了xx官方号后,我们就给他发张优惠券”

这种需求经过抽象,可以转化为一种范式:当满足某种条件时,就触发某种动作。这个范式就是我们今天要聊的IFTTT的基本理念。

01 什么是IFTTT?

IFTTT,是一个新生的网络服务平台,通过其他不同平台的条件来决定是否执行下一条命令。即对网络服务通过其他网络服务作出反应。IFTTT得名为其口号“if this then that”。

--维基百科

以上就是来自维基百科对于“IFTTT”的定义,IFTTT的念法类似英语单词“gift ”的“ift”,即不要发“g”的音。

简而言之,IFTTT就是基于条件触发的任务,即“若xx发生yy行为,就执行zz动作”。其中,每一个可以发生行为的场景叫做一个Channel,触发的条件叫Triggers,之后执行的任务叫Actions,这一整套流程就叫Recipes

IFTTT的基本理念是很简单的,但是它可以实现“由简单组成的复杂”,即由众多简单的IFTTT流程相互衔接,组成跨平台、跨设备的复杂流程。

02 常见应用

国外有一款就叫“IFTTT”的App,它就是我们上面所说的IFTTT的理念的应用。它对接了很多互联网产品(就是前面所说的Channel),比如Twitter、Facebook、Amazon Alexa等。可以实现诸如 “我在 Twitter 上为一张照片点赞后,就将这张照片自动存入我的 Dropbox(网盘服务)上” 这种跨App的任务。

另一款典型的IFTTT应用,就是iOS自带的“快捷指令”中的“自动化”。自动化是一种由事件激活的快捷指令,您可以使用“快捷指令” App 设置个人或家庭自动化,然后通过到达、离开、更改 iPhone 上的设置和一天中的某个时间等事件触发自动化快捷指令。

03 技术实现

回到我们文章开头的那个需求案例,这是互联网常见的营销功能。通过IFTTT的理念,我们可以将它转化为这种范式:

首先,我们按照IFTTT的规范对业务进行建模,分为Channel、Trigger和Action三层,整体构成一个Recipe:

  • Channel
    Channel层在营销业务中的作用是保存和管理用户行为数据,它定义了用户行为的元数据结构,包括行为类型、对象和时间等。Channel层是营销IFTTT的基石,Trigger和Action均是基于用户行为数据进一步抽象业务逻辑的。

  • Trigger
    Trigger层是业务上自定义的触发事件,与业务息息相关,可能是新增粉丝了、浏览过的商品降价了或者是参加的抽奖活动开奖了等。当Trigger触发后,IFTTT会根据Trigger类型和配置的行为类型调用Action层进行处理。

  • Action
    Action层是营销IFTTT的执行动作,可以是给用户发优惠券、Push信息、发权益或者其他定制逻辑。Action一般是标准化、可插拔的组件,业务上可以实现不同营销策略的组合或者通过A/B Test来测试营销策略的效果。

基于这个业务抽象,相应的营销业务的技术架构一般如下:

整体技术方案就是按照前面业务建模的结构图进行技术实现的选型和细化,补充依赖的技术组件。这样一来,我们就通过IFTTT标准化协议为这一类营销需求提供了通用的技术解决方案。

04 结语

正如Haskell 语言的设计者之一 Paul Hudak所说,抽象能力是编程中最重要的能力。

Abstraction, abstraction, abstraction are the three most important things in programming.

IFTTT就是一种最典型的抽象能力的体现,它将千万种看起来变化多端的流程需求转化为了一种由Channel、Trigger、Action三种元素组成的简单范式,极大地提升了研发效率。因此,当我们自嘲“搬砖”的时候,应该多思考如何改进技术实现方案,将体力劳动转化为脑力劳动,通过抽象将复杂的事情简单化。

欢迎关注我的公众号:

优秀程序员必备知识:你听过IFTTT吗?相关推荐

  1. 丁威: 优秀程序员必备技能之如何高效阅读源码(二更)

    @[toc](丁威: 优秀程序员必备技能之如何高效阅读源码(二更)) 消息中间件 我能熟练使用这个框架/软件/技术就行了, 为什么要看源码?" "平时不用看源码, 看源码太费时间, ...

  2. 优秀程序员必备的15大技能

    编程是个很复杂的玩意,但是成就优秀程序员的很多因素和我们在学校中早期学到的相差无几.本文灵感来源于Robert Fulghum的<All I Really Need to Know I Lear ...

  3. 优秀程序员必备七要件

    程序员是一个要求技术含量很高的职业,同时要求有不断进取的精神和不达目的决不罢休的精神状态,以下就是简单总结的如何做个有些的程序员,希望对各位的求职和工作能够有所帮助. 1.踏实的工作态度.低承诺,高实 ...

  4. 程序员杂志为啥没有了_计算机基础知识,程序员必备知识,java必会!新建一个TXT,发生了什么?...

    作者 | ithuangqing 来源 | 编码之外(ID:ithuangqing) 其实我在逐渐使用Windows的过程中发现"记事本"这个工具真的挺好用的!就是它: 平常我喜欢 ...

  5. 成为优秀程序员必备的八大学习网站

    一.CSND(国内最大中文IT社区) 国内的程序员入门级网站,内容很多很杂,包括论坛.资源下载.博客.各种资讯等等. 二.博客园 个人觉得国内比较好的技术博客网站,很多偏Windows开发的大牛在这里 ...

  6. 优秀程序员必备素质——快速调试

    你是否有过这些经历: 1.代码敲完了,刚想松口气,一运行程序,满满的Bug. 2.找啊找啊找,怎么找都找不到哪里出了问题. 3.调试了半天出不来,就开始便得心烦气躁. 4.一天连一个Bug也没调出来, ...

  7. 一.学习前的准备-java程序员必备知识

    1.Markdowan学习 Markdown语法是博客书写的语法规范,写csnd就是用这种语法写的.了解即可. 详细文档 快捷键 功能 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 C ...

  8. 优秀程序员应该具备哪些素质?

    你可以不聪明,但是你绝对不能不用心. --<女人公敌> 程序员求职是本是一件只要"郎有情女有意",一拍即合的事情,可是企业与求职者却总是看不对眼,进而导致IT市场上总是 ...

  9. 后端程序员必备的 Linux 基础知识

    后端程序员必备的 Linux 基础知识 原文来自github stars>63k的项目JavaGuide,欢迎小伙伴去支持原作者 一 从认识操作系统开始 1.1 操作系统简介 1.2 操作系统简 ...

最新文章

  1. 嵌入式linux开发课程设计,嵌入式Linux开发课程设计指导书
  2. PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
  3. OpenCASCADE:OCAF 使用
  4. GoldenGate for win安装配置
  5. 1.13 编程基础之综合应用 12 分数求和 4分 python
  6. hdu 1398 Square Coins/hdu 1028 Ignatius and the Princess III
  7. 31 FI配置-财务会计-应收账款和应付账款-定义容差组(供应商)
  8. python list删除元素速度慢_python list(python list删除元素是要注意的坑点)
  9. label怎么换行 vb_VB中怎么换行 | 学步园
  10. 51单片机——独立按键
  11. 【与奥斯丁的二十种邂逅】-- 得克萨斯首府的小情调城市游 (介绍你在奥斯丁必须做的,推荐做的,和做了你就牛掰了的20件事)...
  12. RecordRTC的视频录制,回放,截图,下载
  13. android手机碎片管理,android手机需要进行磁盘碎片整理么
  14. java gif等比例缩放_对gif动图进行缩放等处理(java)
  15. php transfer-encoding: chunked,“Transfer-Encoding: chunked” header in PHP
  16. 常用Linux命令及其作用(超详细,带演示)
  17. 大连的房价很便宜了!
  18. 位运算实现加减乘除运算
  19. 我所经历的一次Dubbo服务雪崩,这是一个漫长的故事
  20. CefSharp高版本问题

热门文章

  1. 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]...
  2. hough变换检测圆周_用点Hough变换实现圆检测的方法
  3. 宏杉科技针对传统RAID缺陷推CRAID 3.0
  4. UVaLive/LA 6807 Túnel de Rata(最大生成树)
  5. 做了一个获取全国大中城市天气的小工具
  6. D-Wave Leap量子云系统首次落地欧洲于利希超算中心
  7. 人机对战?学会Python简直开挂!
  8. JavaScript:变量
  9. 小白一看就懂的前后端接口连接
  10. 展讯怎么办?–给LEO的建议