引入
IFTTT 看少数派多的朋友大概是非常熟悉了,其简单的 If this then that 的理念却帮助我们提高了效率。它的 Channel 数多到数不清,甚至在不断增加,但总有些时候感觉差了些什么,我们的 Applet 被限定在一个框体内,没有完全交给我们自定义的地方,于是 Maker Channel 就诞生了。
![](https://cdnfile.sspai.com/2017/05/15/6081fb40b5f89873a53290233f14da95.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
2015 年 6 月 17 日,IFTTT 正式公布了这个新的 Channel。它们说到:所有的 DIY 爱好者,和那些热爱创造的人,我们非常高兴地向你们介绍全新的 Maker 频道。Maker 频道将 IFTTT 的巨大能力发展到任何你的自制 DIY 产品,你可以将任何请求直接以网络连接的形式激活,当你将它连接上 Raspberry Pi 或是 Auduino 的时候,你会发现用 Maker 制作 Applet 没有什么不可能。
![](https://cdnfile.sspai.com/2017/05/15/a6dcb14ff79052d01d3fc4a00c7d242b.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
那么它到底是什么呢?你可以简单地理解为,你可以将「访问一个特定的网站」设置为 IF 条件,也就是说,当你访问这个网站的时候,你的 Applet 就激活了,并且网站还可以传递最多三个参数(说实话,挺少的……)。也就是说,只要你有一个能够访问互联网的设备,它都能够作为 IFTTT 的 IF 条件终端。
![](https://cdnfile.sspai.com/2017/05/15/5fb0ada9e6854fa6fb39002f0eb90c42.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
IFTTT Maker 支持作为 IF 或 That 使用,作为 IF 时它的作用是「当该网页被请求的时候」,作为 That 的时候是「发出一个 Web 请求,可以是 GET ,PUT, POST, HEAD, DELETE, PATCH 或者 OPTIONS 之中的任何一种,你甚至还可以制定 Content Type 和 Body,嗯,看得懂的人都知道我在说什么 :)
如果你对这些 HTTP 名词感到陌生,可以看一下 这篇文章的原理部分,里面详细讲解了这些名词的意思。
![](https://cdnfile.sspai.com/2017/05/15/b00a31e271c46f3296dcc2471103d291.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
我也有一个树莓派,简单了解它的作用后,我发现这个 Channel 潜力无穷,便自己做了一些小工具,下面我也将介绍一些。
· 用它来接收动态物流信息
![](https://cdnfile.sspai.com/2017/05/15/599797357f4be832b0c6a9fe2472eabb.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
· 用它来自动刷新全国(球) Apple Store 零售店的特别活动
![](https://cdnfile.sspai.com/2017/05/15/3c20df3f1cc4605da061eaf41fc12330.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
· 类似 Yo 的,快速给你的朋友发送简短消息
![](https://cdnfile.sspai.com/2017/05/15/d37dcb6e60667df3d12cf52815c28ccb.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
开始
访问 IFTTT Maker Channel 的网站 http://maker.ifttt.com 并点击 Connect
![](https://cdnfile.sspai.com/2017/05/14/03d1dbd8590f8d4b966d5d079d7fe0d7.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
当你在右上角看到 Documentations 和 Settings 后点击前者,你将会被定向到另一网页。
![](https://cdnfile.sspai.com/2017/05/14/ebfdc48983ecd90a5dbf5821d8cbb5f9.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
最大加粗的文字就是你的 Maker Key 了,你可以在刚刚位置的 Settings 点击 Edit Connection,如果你的 Key 被他人得知并滥用,在那里可以直接获取一个新的 Key,原 Key 就会作废。
![](https://cdnfile.sspai.com/2017/05/14/80cfee5d3b8ac1ad87e8281806817ee9.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
而 Make a POST or GET web request to 后面所接的就是上文所说的「特定网址」了,它的格式一般如下 https://maker.ifttt.com/trigger/{event}/with/key/[你的KEY]
这个 {event} 是什么呢?你可以在请求的时候设置一个名字,比如我以 event 为 raw 的时候用一个 IFTTT Applet 来处理 IF 之后的 That,另一个 event 为 test 的时候用另一个 Applet 来处理这个 IF 的 That,这样方便你区分不同的请求,并让 IFTTT 作出不同的反应。
![](https://cdnfile.sspai.com/2017/05/14/a8a452541638c5a7c5b38a8662e7717e.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
你可以直接访问这个网站,不附带任何参数,也就是做一个 GET 请求,这个时候 IFTTT 已经捕捉到了你的操作,类似 IFTTT 之前的另一个产品 Do Button,直接访问这个网站,就好像直接通过网站激活你的 Applet。如果你在 iOS,可以用 IFTTT Widget / IFTTT Apple Watch 应用 / Workflow 等灯做到和它完全一样的操作,但是对于并没有 IFTTT 客户端的设备,比如 Windows / Mac,或者其他的嵌入式设备,那么访问这个网站来激活你的 Trigger 也是一种非常好的办法。
![](https://cdnfile.sspai.com/2017/05/14/5c957d947d156ff513e3adc2ef04af2e.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
当我们明白它的具体流程后,就来创建一个新的 Applet 吧!首先我们以最简单的举例子,创建一个通知工具,也就是说你访问这个网站时附带一句话,直接让 IFTTT 把这句话发到手机上通知给你。在 IF 中选择 Maker Webhooks。
![](https://cdnfile.sspai.com/2017/05/14/db7658bdea421e133a148d27eeb1051d.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
这里有一个必填参数是 Event Name,也就是上文说的 {event},对于不同的 event 你可以以不同的方式处理,因此需要这个参数来区分,我们以 test 举例,你也可以随意选择一个词语,今后你可以对不同的 event 做不同的 applet。
![](https://cdnfile.sspai.com/2017/05/14/747227c5b002c299a7dbc6852dcfec21.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
That 部分直接选择 Notifications,也就是发送一条通知到 IFTTT App,也就是发送到你的手机上,内容我们清空,选择「Add Ingredient」,并选择 Value1,它会自动变为 {{Value1}}。接下来就可以保存了,这条 Applet 的意思就是,将 event name 为 test 的请求参数直接发送通知给你。
![](https://cdnfile.sspai.com/2017/05/14/fc0eb0ae26a1dd24bc5b53546db4c8d2.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
POST 的数据需要是 JSON 格式,比如:
{"value1": "第一个 Value"}
{"value1": "第一个 Value", "value2": "第二个 Value"}
curl 的 POST 请求方法:
curl -X POST -H "Content-Type: application/json" -d '[你的JSON]' [URL链接]
在手机上收到通知后,就表明你已经成功创建了这条 Applet 并通过了测试。
如果你对网络请求不熟悉,可能并不能理解 POST 和 JSON 的意义,如果你并不想做复杂的参数传递请求,可以将它就作为仅 GET 使用,访问网站对于大家都不是难事。
![](https://cdnfile.sspai.com/2017/05/14/45945c1a00346be5d226979bf443a9e0.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
举例 1: 物流实时推送
![](https://cdnfile.sspai.com/2017/05/14/2f1466a1ae666fb2a9a1abe58a9dc5e8.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
我自己从去年 10 月其实就开始写这个 Python,来完成物流更新的实时推送,一开始我使用的其实是另一个叫做 Instapush 的服务,它与 IFTTT Maker 非常相似,但是是一个简化的版本,因为它只能用来发送通知,不能像 IFTTT 一样再结合另外的各种程序来做 That 联动。后来 Instapush 的服务器出了问题,Pushbots 公司也无心再管这个东西,于是我只好寻找他的替代品,正好找到了 IFTTT Maker。
![](https://cdnfile.sspai.com/2017/05/14/83d200bf86d4796f49355771a69edd34.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
整个程序的逻辑其实非常简单,与我之前分享的 Workflow 通知中心查快递 逻辑是相似的,只是利用了电脑更优秀的处理效率增加了一些别的优化,而 IFTTT 的部分呢?其实就只有一点点。
def pushbots(pushRaw):
os.system('curl -X POST -H "Content-Type: application/json" -d' + "'" + '{"value1":'" + pushRaw + '"}' + '"https://maker.ifttt.com/trigger/raw/with/key/[我的ID]")
也就是说,我在程序中只需要调用 pushbots("你好"),它就会给我的手机发送一句你好了,真正用到 IFTTT 的部分就只有一个网络连接,也正好体现出它的便捷之处,你所有的请求,就仅仅是打开一个特定的网页而已。
![](https://cdnfile.sspai.com/2017/05/14/5bb1e8001500c7b88675c2558f58464c.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
同样 Event_IFTTT.py 也是一样,刷新全中国 Apple Store 零售店官网的源代码,分析特别活动的部分,当有特别活动的时候,再调用类似上面程序的部分发送 IFTTT 通知即可。
![](https://cdnfile.sspai.com/2017/05/15/050ee825997b4e840df551443893d4e8.png?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
从这张图你就可以看到,6:50 获取到了 6:40 的物流更新,8:50 获取到了 8:48 的更新,13:41 获取到了 13:39 的签收信息,该 Python 自动退出运行,如果我把刷新时间间隔改成 30s,那就可以得到完全实时的通知。
![](https://cdnfile.sspai.com/2017/05/21/ef38a168da982942299c03650a445565.png?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
Today at Apple 是 Apple Store 的全新讲座项目,用 IFTTT Maker,我制作了一个 Telegram Channel 自动推送工具,你可以在 Telegram 页面 关注果铺知道,接受 Apple Store 特别活动通知。
![](https://cdnfile.sspai.com/2017/05/17/a6dff7e3df7e95dcca2fa2412da64df9.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
上面三个源代码在 junyilou.github.io 开源。
举例 2: 发送一条类似 Yo 的短消息给你的朋友
![](https://cdnfile.sspai.com/2017/05/14/01c17fa25e09c5869752514a7975e2fa.png?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
Yo 是一个很有趣的 App,整个 App 只有一个功能,选择一个人,发给他一句 Yo! 但是其实它的用处还是很大的,因为真正使用它的人都明白这句 Yo 的含义:如果老板跟下属发 Yo,也许是邀请他来办公室喝茶;如果女朋友跟男朋友发 Yo,也许是叫他快来她的地方…… 有些时候和朋友的交流只需要一个词,并不需要太多文字,也能传达你的意思。
![](https://cdnfile.sspai.com/2017/05/14/85484bec2e5e8c88ec5038e0fa4dd830.jpg?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
让你的朋友授权 IFTTT Maker,并让他告知你他的 Key,他创建一个接收通知的 Applet,以后你可以直接用 Workflow 后者其他工具,打开这个网址,然后它就会收到一条 Yo 消息了(你不需要安装 IFTTT App),当然 Yo! 这句话你也可以自己定制,比如改成「科科,你是不是又在玩手机了?好好上班!」
总结
![](https://cdnfile.sspai.com/2017/05/15/848a49bd6636643e1c9eff336e55d425.png?imageView2/2/w/1120/q/40/interlace/1/ignore-error/1)
对于有开发板,例如树莓派,或 VPS 等设备的人来说,IFTTT Maker 将 Trigger 简单的变为了一个网页请求,如果你将你的开发版连接上智能家庭项目,你就可以设置比如,开门时向手机发送通知;或者如果你只是将树莓派作为下载机,也可以让他下载完毕后通过 IFTTT 给你的手机发送通知,等等。可以说 Maker 给予了 IFTTT 更多可能,富有创意的开发者一定能用它作出更多精彩的 Applet。