实践70:使用Quicker实时搜索

实践70:使用Quicker实时搜索 公开 已发布(自动)

darcyc 更新于 2024-07-30 19:09 | 7 | 29
如何安装动作?
复制Ta的推荐码
Quicker组合动作视频教程:https://b23.tv/xIlfg8k

适用于
分类(旧)
组合操作 功能 示例

我要吃饭 白羽槐 梦微 Petercode 运营:秋风 7 人赞了这个动作

2 个动作单 收藏了此动作。

更多信息
分享时间 2022-03-03 23:31
最后更新 2024-07-30 19:09
修订版本 1
用户许可 -未设置-
Quicker版本 1.43.11
动作大小 6.3 KB

分享到

「 」

简介

介绍和使用

Quicker实时搜索 是 组合动作 的一部分。注意,这并不是说 Quicker自己 开发了某个类似百度一样的搜索引擎,而是说利用这个特性,Quicker组合动作 可以给你的动作一种可以类似 百度搜索框 一样的提供你的动作结果的方式。


效果

- 本实例动作

实时搜索示例 - 动作信息 - Quicker (getquicker.net)

智搜 - 动作信息 - Quicker (getquicker.net)



准备工作

告诉 Quicker动作,自己需要使用 实时搜索 特性。

 


使用

本实例实时搜索流程:

步骤1. 当用户直接打开本动作时,打开实时搜索框。

步骤2. 当用户在 弹出的搜索框 中输入时,实时的输入会以 "search:" + 用户输入的内容 文本的形式放入 quicker_in_param (意思:动作参数。注释:这是一个quicker中保留的文本变量名,我们知道函数(子程序)有参数。这里,quicker动作也会有参数,指导动作的起始运行状态)

步骤3. 此时假设用户输入了 "abc" ,那么 quicker_in_param 就会收到 "search:abc",我们使用一些C#表达式($=开头),提取出 "abc"(我们为了方便,可以直接把这个 "abc" 存到变量里,给变量一个名字,方便后续使用,本案例中,给到了 {用户实时输入的文本} 变量),然后准备一些需要 返回 给用户的提示内容。(就像是你在使用 百度搜索 时,你输入一些关键字,它会返回给你进行补全让你选择。)。按照规定,这个 返回 的过程需要使用 “返回(return)” 模块,并在其中按照Quicker实时搜索的规定 返回 正确的格式,如下图。


返回值中有3行,代表了我们有3条建议将会被显示。


每一行为一个建议,每一行的格式都是一样的,请继续阅读了解如何组成正确的格式。

(再次提示:在这里,一行为一条建议,请不要一不小心换行了,会导致格式错误)

每一行的格式为:

显示在屏幕上的文字(描述文字)|operation=callback&data=待后续作为quicker_in_param触发动作的文本

我们可粗略分为:

显示在屏幕上的文字(描述文字)
|
operation=callback
&
data=待后续作为quicker_in_param触发动作的文本

你只需要关心和修改 蓝色红色 部分。

operation为callback 意思为我们需要利用 data 后续进一步处理(请继续阅读了解)。我们也可以使用预置的操作(operation),例如 直接粘贴 等,我们这里暂时用不到。

补充:事实上,大多数情况下,你总是只需要改变 蓝色 和 红色 部分,其他的部分基本上为固定写法,关于 红色部分 的解释,请你继续阅读。)

data 为后续要作为 动作参数 触发动作 的文本 (再次提示:动作参数会存到 quicker_in_param 文本变量中)。

补充:请注意 粗体文字:触发动作。也就是说,当用户 回车确认 某一条后,你的动作会被重新触发。请你继续阅读,下面解释了在这个示例动作中,我们是如何检测这个过程的。

解释1:本案例中的第一个建议:

 有趣0|operation=callback&data=my_action:有趣0

意味着 屏幕上会显示 "有趣0",当用户回车确定后,data 后的内容将会被当作 动作参数 重新触发动作,这个案例中,data为 "my_action:有趣0"

注明:为什么有类似 "my_action:" 这样的前缀?

原因在于,因为实时搜索的返回结果(或者换句话说,用户在实时搜索框中回车确认后返回的data)是返回到 动作参数 中的(quicker_in_param变量),我们占用了这个变量,我们需要有个 个人规定 的标记来提醒自己,这条 确认 是来源于哪里的(这个案例里,我们自己规定了 my_action 是指明了 这个操作来自 实时搜索 中的确认。)因此,当我们返回了,例如,"my_action:有趣0",我们就知道 我们需要进行的操作为:"有趣0"。为什么我们直接就知道了 我们需要做的操作是这个,因为我们检测到了 "my_action:" 前缀。

(编辑 本示例动作 便可知道我是如何检查出来的(再次注明:检测方式和 步骤3 同理(因为 步骤3 中,我们检测了 "search:" 前缀)))

解释2:本案例中的第二个建议:

 你输入的内容为:{用户实时输入的文本}|operation=callback&data=my_action:{用户实时输入的文本}

和上面一样,有了 提示部分,有了 返回部分, 区别只在于,使用了 插值 来 动态改变 提示部分 返回部分

温馨提示: 点击这里 来复习 什么是插值 )

例如,如果 {用户实时输入的文本} 当前为 abcd ,这一条就会被插值为:

 你输入的内容为:abcd |operation=callback&data=my_action:abcd

上述才是最后的结果。

再次提醒:忘记了 "my_action:" 前缀的作用?见 解释1


步骤4. 当你按照 第3步 正确返回后,你返回的内容就会显示到屏幕上了,如下图。

此时你发现你默认选中了第一条 “有趣0”,你可以直接 回车 确定,回车的一瞬间,quicker将会把 该条项目的 data 文本作为 quicker_in_param 触发动作,也就是说你的动作会被触发,然后 quicker_in_param 文本变量的值为 "my_action:有趣0" (第3步中我们定义的)

到此时,你可以发现本案例的演示其实已经结束了,因为我们的目的就是

第一,实时展示我们的建议们。

第二,我们要知道用户确认了我们的建议


重要的细节:

小细节:如果你仔细思考,你会发现动作 不断在被重新执行,在每个执行中,每次只有一个 “如果分支” 被启动了(本案例中只有3个部分)

第一个如果部分:如果用户直接打开了动作 (无任何参数来暗示)

==============↓==============

第二个如果部分:如果用户正在实时搜索框中打字( search: 前缀的参数来暗示 )

==============↓==============

第三个如果部分:如果用户确认了某一个实时搜索中的操作( my_action: 前缀的参数来暗示 )



参考资料:

从搜索框给动作传递参数 - Quicker (getquicker.net)


本实例中使用到的表达式简单解释:

(再次提醒:表达式 由 $= 开始)

表达式1.  {quicker_in_param} == ""

解释:如果 quicker中的变量 quicker_in_param 是空文本的话,这一条成立,成立就是 true

补充:如果 (成立)就到其中的 分支1,否则 就到 分支2

(本案例中只有分支1)

表达式2. {quicker_in_param}.StartsWith("search:")

解释: 如果该文本变量由 "search:" 起始的话,这一条成立。

( 表达式1 和 表达式2 的 返回值(返回值 就是 结果 的意思) 都是 布尔类型 (真 或 假) )

补充:为什么叫 返回值?

会返回到原地的结果。你可以直接脑补下面的场景:程序在执行一瞬间后:{quicker_in_param}.StartsWith("search:") 。这一条出了结果,结果返回到了原地,就变成了 true 或 false。

表达式3:{quicker_in_param}.Substring("search:".Length)

目的:去除特定字符前缀。

(演示:如果 字符 由 search: 开头,去除这个前缀。)

表示从第几位开始取子字符串。例如

search:x12345

我们要从 第7位 开始取,就能取出 x12345

所以我们可以直接说 "search:".Length (的返回值是 7 )




最近更新

修订版本 更新时间 更新说明
1 2024-07-30 19:09 优化注释
0 2022-03-03 23:31

最近讨论

暂无讨论