取件码自动转发
如何将短信中的快递取件码自动转发到滴答清单待办事项等 TODO 应用 (取件提醒)
取件码自动转发
iOS(iPhone/iPad)
步骤如下:
新建“快捷指令”
你可在我分享的快捷指令基础上修改:
也可以按照下面的步骤手动添加:
添加操作
- 打开“快捷指令”APP,并点击右上角“+”
- 点击“添加操作”
- 在弹窗中找到“匹配文本”(文本类别下,黄色的)
- 重命名此快捷指令为“添加任务到XX清单”
添加参数
- 点击底部的感叹号
- 打开“在共享表单中显示”
- 点击“完成”。
修改参数类型
- 此时会多出一个卡片,点击“图像和其他18个”
- 点击左上角“清除”(快速关闭所有选项)
- 在下面的选项里找到“文本”并打开
- 点击完成
设置边界条件
“如果没有输入”:
“停止并回应”: “无内容”
设置内容匹配规则
把 匹配“文本”中的[0-9a-zA-Z]
改成 匹配“输入快捷指令的信息”中的“快递|包裹|驿站|取件码”
。
其中“输入快捷指令的信息”为魔法变量,后面的字符串是正则表达式 pattern,“ | ”(英文)表示“或”。我试过”\d-\d-\d{4}“没生效,不知道为啥。 |
判断匹配结果
如果“匹配”有任何值
,将“输入快捷指令的信息”添加到“清单”
新建“自动化”
自动化:立即运行
当我收到包含“”的信息时
执行添加任务到XX清单
(刚才新建的快捷指令)
安卓手机
安装 短信转发器
安装过程不再赘述。
添加发送通道
- 打开 APP。
- 切换到底部导航栏的“发送通道”。
- 点击右上角“+”
- 选择你想要转发的类型,以滴答清单为例,选择 Webhook(URL Scheme 应该也可以,我没在安卓机上安装滴答清单,所以没尝试)
- 填入信息如下:
图中涉及到的资源:
滴答清单 创建任务 API及参数模板:
1 2 3 4 5 6 7
<span><span>{</span></span> <span><span> "title"</span><span>: </span><span>"[org_content]"</span><span>,</span></span> <span><span> "content"</span><span>: </span><span>"[content]"</span><span>,</span></span> <span><span> "projectId"</span><span>: </span><span>"xxx"</span><span>,</span></span> <span><span> "startDate"</span><span>: </span><span>"[receive_time:yyyy-MM-dd'T'HH:mm:ssZ]"</span></span> <span><span>}</span></span> <span></span>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<span><span>const</span><span> Koa</span><span> =</span><span> require</span><span>(</span><span>"koa"</span><span>);</span></span>
<span></span>
<span><span>const</span><span> Router</span><span> =</span><span> require</span><span>(</span><span>"@koa/router"</span><span>);</span></span>
<span></span>
<span><span>const</span><span> { </span><span>PORT</span><span> =</span><span> 4001</span><span> } </span><span>=</span><span> process.env;</span></span>
<span><span>const</span><span> client_id</span><span> =</span><span> "xxx"</span><span>;</span></span>
<span><span>const</span><span> client_secret</span><span> =</span><span> "xxx"</span><span>;</span></span>
<span><span>const</span><span> scope</span><span> =</span><span> "tasks:write"</span><span>;</span></span>
<span><span>const</span><span> redirect_uri</span><span> =</span><span> `http://localhost:${</span><span>PORT</span><span>}/redirect`</span><span>;</span></span>
<span></span>
<span><span>const</span><span> app</span><span> =</span><span> new</span><span> Koa</span><span>();</span></span>
<span><span>const</span><span> router</span><span> =</span><span> new</span><span> Router</span><span>();</span></span>
<span></span>
<span><span>router.</span><span>get</span><span>(</span><span>"/"</span><span>, </span><span>async</span><span> (</span><span>ctx</span><span>, </span><span>next</span><span>) </span><span>=></span><span> {</span></span>
<span><span> await</span><span> next</span><span>();</span></span>
<span></span>
<span><span> ctx.body </span><span>=</span><span> `<a href="https://dida365.com/oauth/authorize?scope=tasks:write&client_id=${</span><span>client_id</span><span>}&state=state&redirect_uri=${</span><span>encodeURIComponent</span><span>(</span></span>
<span><span> redirect_uri</span></span>
<span><span> )</span><span>}&response_type=code">点击登录</a>`</span><span>;</span></span>
<span><span> ctx.response.status </span><span>=</span><span> 200</span><span>;</span></span>
<span><span>});</span></span>
<span></span>
<span><span>router.</span><span>get</span><span>(</span><span>"/redirect"</span><span>, </span><span>async</span><span> (</span><span>ctx</span><span>, </span><span>next</span><span>) </span><span>=></span><span> {</span></span>
<span><span> await</span><span> next</span><span>();</span></span>
<span><span> let</span><span> code </span><span>=</span><span> ctx.query.code;</span></span>
<span><span> let</span><span> buff </span><span>=</span><span> Buffer.</span><span>from</span><span>(</span><span>`${</span><span>client_id</span><span>}:${</span><span>client_secret</span><span>}`</span><span>);</span></span>
<span><span> let</span><span> base64data </span><span>=</span><span> buff.</span><span>toString</span><span>(</span><span>"base64"</span><span>);</span></span>
<span><span> const</span><span> response</span><span> =</span><span> await</span><span> fetch</span><span>(</span><span>"https://dida365.com/oauth/token"</span><span>, {</span></span>
<span><span> method: </span><span>"POST"</span><span>,</span></span>
<span><span> headers: {</span></span>
<span><span> Authorization: </span><span>`Basic ${</span><span>base64data</span><span>}`</span><span>,</span></span>
<span><span> "Content-Type"</span><span>: </span><span>`application/x-www-form-urlencoded`</span><span>,</span></span>
<span><span> },</span></span>
<span><span> body: Object.</span><span>entries</span><span>({</span></span>
<span><span> code,</span></span>
<span><span> grant_type: </span><span>"authorization_code"</span><span>,</span></span>
<span><span> scope,</span></span>
<span><span> redirect_uri,</span></span>
<span><span> })</span></span>
<span><span> .</span><span>map</span><span>(([</span><span>key</span><span>, </span><span>value</span><span>]) </span><span>=></span><span> {</span></span>
<span><span> return</span><span> encodeURIComponent</span><span>(key) </span><span>+</span><span> "="</span><span> +</span><span> encodeURIComponent</span><span>(value);</span></span>
<span><span> })</span></span>
<span><span> .</span><span>join</span><span>(</span><span>"&"</span><span>),</span></span>
<span><span> });</span></span>
<span><span> const</span><span> data</span><span> =</span><span> await</span><span> response.</span><span>text</span><span>();</span></span>
<span><span> ctx.body </span><span>=</span><span> data;</span></span>
<span><span> ctx.response.status </span><span>=</span><span> response.status;</span></span>
<span><span>});</span></span>
<span></span>
<span><span>app.</span><span>use</span><span>(router.</span><span>routes</span><span>()).</span><span>use</span><span>(router.</span><span>allowedMethods</span><span>()).</span><span>listen</span><span>(</span><span>PORT</span><span>);</span></span>
<span><span>console.</span><span>log</span><span>(</span><span>`listened http://localhost:${</span><span>PORT</span><span>}`</span><span>);</span></span>
<span></span>
添加转发规则
- 打开 APP。
- 切换到底部导航栏的“转发规则”
- 切换到顶部导航栏的“短信”。
- 点击右上角“+”
- 填入信息如下:
其他配置项请查看官方文档。
本文由作者按照 CC BY 4.0 进行授权