作为一名 IBM Cloud 开发大使,我的工作是探索和使用不同的 IBM Cloud 服务。鉴于我对 IoT 的浓厚兴趣,Node-RED 和 Watson 总能吸引我的注意。最近,我在搜索一些相关 recipe 时看到了在 Node-RED 上将天气服务与 Watson Text-to-Speech 相集成一文。以下是我在完成这一 recipe 后的一些感受。

Node-RED 入门

Node-RED 是一个基于 Web 浏览器的拖放式编程工具,用于将硬件设备、API 和其他 IoT 系统与联机服务连接在一起。它基于 Node.js 而构建,可在本地或云端运行。

此 recipe 中使用的节点

流中最常用的节点包括:

  • Inject:在流中以手动方式或者定时发送消息
  • Function:运行消息
  • Debug:显示选定的消息属性

common nodes

此 recipe 中使用的其他节点包括:Template、Http In、Weather Insight 和 Watson Text-to-Speech 服务:

  • Template:基于提供的指南设置属性
  • Http In:发送 HTTP 请求并返回响应
  • Weather Insight:用于访问来自 The Weather Company 的历史和实时天气数据
  • Watson Text-to-Speech 服务:理解文本和自然语言,辅以相应的节奏和语调生成合成音频输出

main nodes

流程

首先从 inject节点开始,该节点将触发消息,使之进入到流中。添一个 function节点,并定义您想要收听当地天气状况的位置信息。

msg={ street: "Hilal road", city: "Islamabad", country: "pakistan" }; 
return msg;

接下来添加 template 节点,从 Geo Location HTTP 请求获取位置信息。使用以下代码按纬度和经度格式提取地址信息。

msg.payload=msg.payload[0].lat+","+msg.payload[0].lon; 
return msg;

收集位置数据后,连接流中的 Weather Insight 节点,以调用 Weather Company Data 服务。在此 recipe 中,我使用以下代码从收集自 The Weather Company 的数据中提取了我所在位置对应的温度信息:

msg={ temp: msg.observation.temp, city: msg.observation.obs_name}; 
return msg;

收集并提取数据后,现在我必须创建一个完整的回答语句。为此,该 recipe 建议添加另一个包含以下配置的 template 节点:

temprature

此时,添加 debug节点将会显示温度作为输出,这是查看温度的传统方法。

对我而言,最有趣的部分是结尾部分,我通过集成 Watson Text-to-Speech (TTS) 服务来收听天气。我从面板上拖动 TTS 节点,将其与回答节点相连。

Text-to-Speech

完成值的设置后,我添加了一个函数以充当对参数重新排序的缓冲区:

return {payload:msg.speech};

最后,我添加了Play Audio 节点。该节点会提取音频文件,并使用您计算机上的扬声器直接从 Node-RED 框架播放该文件。

flow

此 recipe 提供了一种有趣的方式将 IBM Cloud 的多项服务集成在一起。我们还可以对流进行调整,通过提取不同日期的天气数据或者更改位置对它进行进一步优化。它还可供云开发大使作为演示使用,吸引开发者的目光。

我希望能够听到您的成果!您可在下方发表评论意见,分享您使用此 recipe 的体会!

本文翻译自:Let’s hear the weather today!(2018-01-22)

加入讨论