
Flows 是一个强大的拖放式自动化引擎,用于创建通信流程。我们最初将其构想为一种无代码解决方案,但我们发现许多用户可以通过为特定用例编写一些代码来实现非常强大的功能。这些代码可以在 Flow Builder 内部,也可以是第三方云函数,如 AWS Lambda 函数或 Google Cloud Functions。
这是一个简单的演示,使用GoogleCloud Functions和Flows在Telegram上发送的图像上进行图像识别。
Flows 和 Beyond
作为Flows的开发者,我常常思考我们的用户是谁,为什么他们使用Flows,以及他们需要什么来实现目标;然后,我们需要实施哪些功能以最佳服务这些用户。
Flows是一个强大的拖放式自动化引擎,用于创建通信流。我们最初将其设想为一个无代码解决方案,但我们发现许多用户可以通过为特定用例编写一些代码来获得非常强大的行为。这些代码片段可以在Flows内部,也可以是第三方云函数,如AWS Lambda或Google Cloud Functions函数。
一个有趣的用例:图像识别
这里有一个简短而有趣的例子,我将向你展示如何实现一个识别热狗的应用程序。我们将在Flows中设置一个流程,该流程将接收来自用户的图像,然后决定他们是否发送了热狗的图片。
对于我们的许多客户来说,这种类型的图像识别可以非常强大。想象一下,如果你经营一个送货服务,并想要自动验证成功的交付。类似于我将要展示的,你可以使用位置数据、包裹照片,甚至收件人签名,在Flows中创建一个验证流程。
成功的计划
设置 Google Cloud Function
首先,我们需要设置一个云函数。要快速开始,请使用该教程创建云函数:https://cloud.google.com/functions/docs/quickstart-console。作为“触发器”,选择HTTP触发器,执行环境:Node.js 10,并在源代码字段插入代码片段。这是简单代码,检查请求是否包含JSON代码并回答是或否。

接下来,您需要部署此功能。要在Google Cloud Platform内部测试,请按照教程中的步骤进行。
要从浏览器测试,请访问以下URL并插入您功能的具体地址:
https://your-function-address.cloudfunctions.net/HotDogOrNot/?url=hello
应该返回 {“isHotDog”: true},并且地址 https://your-function-address.cloudfunctions.net/HotDogOrNot
应该返回 {“isHotDog”: false}。
不错的工作!您已设置google云函数。现在我们需要让我们的云函数更智能。
设置 Google Vision API
为了让它更智能,我们添加图像识别。为此,我们将使用Google Vision API。要开始,请遵循本教程的步骤1-4:https://cloud.google.com/vision/docs/quickstart-client-libraries。在教程中,您将激活Vision API并创建一个服务帐户来使用它。
现在返回您创建的云函数。切换“环境变量、网络、超时等”,在“服务帐户”文件中选择您刚刚创建的VisionAPI服务帐户。现在我们可以在函数内访问Vision API。

现在让我们更改代码。在“Package.json”标签上插入以下代码。它将添加Google Vision API库作为函数的依赖项。
在"Index.js"标签上使用以下代码片段更新现有代码。

与之前版本相比有什么不同?我们添加了一个请求到VisionAPI,它返回图像上找到的‘labels’。然后我们通过描述过滤这些标签:如果它包含“hot dog”和对该标签的置信度超过60%。如果在过滤后至少有一个标签剩下,这意味着我们在图像上找到了热狗。
要了解Google VisionAPI如何工作以及响应是什么样的,请查看他们的文档,https://cloud.google.com/vision/docs
之后,部署我们函数的新版本。要从浏览器测试它,找任何热狗的图像并保存其URL。现在转到您的函数的URL(插入正确的函数地址)https://your-function-address.cloudfunctions.net/HotDogOrNot?url=url_to_image
,并将“url_to_image”替换为找到的图像的URL。如果图像中有热狗,页面将返回{“isHotDog”: true}。
现在让我们将此功能连接到Flow Builder。
在 Flows 中创建一个流
登录到Bird Dashboard,或者注册一个账户如果你还没有。
如果你是Flows的新手,并且没有设置任何渠道,你需要进入渠道设置页面,并选择设置Telegram渠道。我选择Telegram是因为它易于设置且速度快。

现在你有一个可以在Flows中使用的渠道。去Flows页面,创建一个新的自定义流,并选择“Telegram”频道触发器。

你将被重定向到一个流页面,在那里你应该选择你的Telegram频道作为触发器,在我们的情况下是“Hotdog”。请添加两个步骤:“Fetch variables”和“Reply to channel message”。
在“Fetch variables”步骤中,我们将调用我们的云函数,并将响应检索到变量“isHotDog”中,其将包含“true”或“false”作为GoogleCloud函数的响应。在URL字段中请插入您的函数的URL https://your-function-address.cloudfunctions.net/HotDogOrNot
并填充其他所有字段如“Fetch variable step content”图片中所示。
在“Reply to channel message”步骤中,我们将通过包含是或否响应的消息回复客户。为此,请在“Reply with message”字段中插入以下文本“Hotdog on the image? {{isHotDog}}”。


如果您在构建流时遇到任何困难,可以使用以下代码段:

要测试它,请发送一张图片到您的Telegram机器人。
到目前为止,看起来不错!我们创建了一个小型聊天室机器人,可以检查客户发送的图片。为了使其更美观,让我们添加更多的步骤,如下所示:

如果您在构建流时遇到任何困难,可以使用以下代码段:
结果


虽然这是一个有趣的例子,但我们相信这种功能对我们的用户非常有用。
如果您希望在 Flows 中添加更多这样的内置功能,请写信给我们的支持团队告知我们。