如果您像我一样,就会不断想象完全实现的物联 生态系统的未来可能性。在家庭环境中,我想象我的汽车,GPS和Nest可以一起工作,以预测我的到来并对气候控制进行适当的调整。或是冰箱,打蛋器和Amazon Fresh在我什至不知道需要它们之前就毫不费力地互相订购鸡蛋,这是什么未来。
如果您像我一样,就会不断想象完全实现的物联 生态系统的未来可能性。在家庭环境中,我想象我的汽车,GPS和Nest可以一起工作,以预测我的到来并对气候控制进行适当的调整。或是冰箱,打蛋器和Amazon Fresh在我什至不知道需要它们之前就毫不费力地互相订购鸡蛋,这是什么未来。
在其他时候,我坚信物联 将带来反乌托邦式的未来(如Wired令人发指的详细描述)。
幸运的是,我们处于这种互连水平上的某些方式。物联 的发展还处于起步阶段,物联 开发人员必须克服一些关键的挑战。
似乎已经达成共识,环境复杂性是一个重大挑战,这是一个棘手的挑战,因为复杂性是物联 领域的重点–作为物联 设备的开发者,我可能会与许多下游的第三方API集成,而其他开发人员可能会使用我公开的API。
在物联 需求增加之前,我们可能已经通过创建物理测试实验室在API和设备生态系统中测试了我们的设备。现在,这是一个过时且昂贵的主张,并且开发人员通常无法控制来自第三方API或设备的数据(这对于边缘案例测试至关重要)。
这就是为什么服务虚拟化是解决方案的关键部分。我们可以模拟下游API并控制设备消耗的数据,以验证集成测试中的异常情况。
今天的例子
首先,我将指导您完成使用AWS Lambda实施自己的Alexa技能的步骤。通过此电话,您可以询问Alexa的天气状况,以获取邮政编码。
然后,我们将在Azure中部署Parasoft虚拟服务,以模拟来自Weather API的响应,以进行边缘案例测试。 (例如,当有雷雨或外面有101 F时,Alexa会怎么说
跟随自己的先决条件:
-
互联 连接(很明显)
您自己的Amazon Echo或Echo Dot可以改善体验,但您也可以使用模拟器。
一个Amazon开发人员帐户(https://developer.amazon.com/)和Amazon Web服务帐户(https://aws.amazon.com/)。
在https://openweathermap.org/api上以开发人员身份注册,以获取开放天气API的API密钥。
一个用于访问Microsoft Azure的Microsoft帐户(https://signup.live.com)。
对REST API和JSON的基本了解。
这将如何运作/h4>
在第1部分中,我们将设置Alexa技能和Lambda函数。
-
用户将对Alexa说话(用户的输入称为“发言”)。
我们的Alexa技能会将这种“话语”映射为“意图”
我们的Alexa技能将向我们的AWS Lambda函数发送一个JSON请求。 Lambda是Amazon的一项强大功能,可让您上传一些代码并按需在云中执行它。您只需要在执行时付费即可。在此示例中,Lambda函数将决定如何处理我们的Intent请求,并具有代表Alexa为用户创建响应消息的逻辑。
要创建响应,我们的Lambda函数必须调用开放天气API来获取当前的天气信息。
在第2部分中,我们将在Azure中部署Parasoft虚拟服务器。然后,我们将在Lambda函数和OpenWeatherMap API之间放置一个Parasoft代理。该代理将使我们能够控制来自AWS Lambda的天气请求,将其发送到真正的OpenWeatherMap API或带有罐装响应的虚拟表示。
第1部分:设置我们的Alexa技能和Lambda函数
1. 首先,我们需要确保我们位于Amazon Web Services控制台(https://console.aws.amazon.com)的“美国东部(弗吉尼亚北部)”地区。当前,这是Lambda可用的唯一区域:
2. 首先创建Lambda函数。登录(https://console.aws.amazon.com/lambda/)并选择蓝色的“创建Lambda函数”按钮:
3. 在“选择蓝图”下,选择“空白功能”,然后选择Alexa技能套件作为Lambda功能的触发器。如果您在列表中没有看到“ Alexa Skills Kit”,则可能不在“美国东部(弗吉尼亚北部)”区域。
这里发生了什么事们必须指定调用Lambda函数的方式,Alexa Skills Kit将允许Alexa启动它(一旦它收到正确的话语,我们稍后将对其进行配置)。
5. 在“代码输入类型”下拉列表中,选择“上传.ZIP文件”,然后选择在步骤4中下载的virtual-weather.zip。
6. 并添加两个环境变量-host和api_key:
目前,“主机”应等于http://api.openweathermap.org。 “ api_key”是当您注册为开发人员时将从OpenWeatherMap收到的32位字母数字键(有关执行此操作的信息,请参见上面的前提条件列表)。
7. 在“ Lambda函数处理程序和角色”下,在“角色”下拉菜单下选择“创建自定义角色”。在出现的新窗口中,将所有内容保留为默认值,然后选择“允许”。
8. 返回“配置功能”页面,您可以为其他所有设置保留默认选项,然后单击“下一步”。如果一切正常,在“查看”页面上,选择“创建功能”。
9. 创建函数后,请确保复制页面右上角的ARN ID。我们稍后将需要它:
10. 现在我们的Lambda函数就位了,我们必须定义一个Alexa Skill。 登录到Amazon Developer门户(http://developer.amazon.com)并选择Alexa选项卡。 选择“ Alexa技能套件入门:
11. 点击“添加新技能”。 为其指定名称和“天气”的调用名称


12. 在“交互模型”下的“意图模式”下发布以下内容:
{"intents": [{"slots": [{"name": "Zip","type": "AMAZON.Number"}],"intent": "GetWeatherForZipIntent"}]}
13. 在示例话语下发布以下内容:
GetWeatherForZipIntent what’s the weather for zip code {Zip}
GetWeatherForZipIntent what’s the weather for {Zip}
GetWeatherForZipIntent what’s the weather in {Zip}
最后两个步骤准确地指定了我们的用户如何与我们的技能进行交互。我们的示例话语将用户的语音输入映射到Intents.Intent类型(在这种情况下为GetWeatherForZipIntent)和用户指定的邮政编码将在请求中发送给我们的Lambda函数。
14. 在配置下,选择AWS Lambda ARN(Amazon资源名称),然后输入您先前复制的函数ARN:
我们已经准备好进行测试!在“文字”标签下,输入示例“话语”,例如“ 91016的天气如何”,然后点击“询问天气”。您应该看到发送到Lambda函数的JSON请求及其响应:
如果您的Echo已连接到该帐户,并且已启用此技能以对其帐户进行测试(可以在“测试”页面上进行此操作),则也可以与Alexa交谈以进行测试。说出类似“ Alexa,询问天气,91016的天气如何”之类的内容。
这就是Alexa设置!还不错吧/span>
我们的Lambda函数依赖于提供实时,真实数据的外部API。作为物联 设备的开发人员或测试人员,我们如何确保我们接收到需要测试不同条件的下游数据/span>
例如,让我们看一下我们的Alexa技能weather.js的一部分:
我们这里有一些简单的逻辑,可以根据我们的天气描述添加适合天气的短语。例如,“撑一把雨伞!” JSON响应的描述字段中提到下雨时,我们对Alexa响应的响应。
那么我们将如何测试呢非您准备好进行可靠的雨舞,或者碰巧住在西雅图,否则这将不容易。将测试自动化(为此我们需要来自OpenWeather API的一致,可重复的数据,这不太可能)添加到组合中,我们遇到了一个非常棘手的问题。
显而易见,简单的答案是服务虚拟化。这将使我们能够模拟Weather API并测试不同的情况。 Parasoft拥有免费的服务虚拟化平台(连续测试平台),可在Azure中进行30天的免费试用。
第2部分:使用服务虚拟化对Alexa技能进行边缘案例测试
1. 登录到您的Azure门户,然后选择“新建”以访问市场:
2. 在市场中,搜索“ Parasoft”,然后选择“按需服务虚拟化”。如果您先前已从Parasoft处获得了特殊许可,则可以选择“ BYOL”选项。单击创建。
3. 提供虚拟机的名称,然后输入用户名和密码。您可以选择为VM创建新的资源组,也可以将其添加到现有VM。所有其他选项可以保留为默认值。单击确定。
4. 选择虚拟机大小(建议为DS2_V2或更好)。单击确定。
5. 如果需要,您可以在“设置”下更改其他配置。建议不要更改默认配置,除非有特殊原因。单击确定。
6. 单击“摘要”视图上的“确定”。

7. 在购买视图上,单击购买。免费试用期结束后(前30天),我们将向您收费。 VM创建过程将需要几分钟才能完成。
8. VM的状态为“正在运行”后,选择VM并复制其公共IP地址。
9. 在浏览器中转到http:// <VM_IP_Address>。连续测试平台主菜单将出现。一旦“在线百分比”窗口小部件显示为“ 100%”,虚拟机将被完全配置并初始化:
10. 在顶部附近,单击“添加系统”:

11. 选择“从文件导入系统”,然后浏览到AlexaWeatherSystem.zip(在此处下载)。选择“AzureVirtServer”作为目标服务器,然后单击“导入”:我们现在已经导入了AlexaWeatherSkill系统,虚拟服务和相关数据。
12. 最后,将代理端点放置在Lambda函数和OpenWeatherMap API之间。代理部署在http:// <VM_IP_Address>:9080 / proxy
进入AWS Lambda(https://console.aws.amazon.com/lambda/)中的virtualWeather函数,并将我们创建的环境变量更改为代理端点:
13. 在我们的环境(http:// <VM_IP_Address> / em / ui / environments / 1)中,我们现在可以控制返回到Lambda函数的数据以测试不同的条件。这将改变我们Alexa的按需行为!从OpenWeatherMap API组件下的下拉菜单中选择T-Storm,然后选择“设置”按钮:
现在,流量已定向到我们的虚拟“ T暴风”服务,并且正在返回响应(指示下雨和雷暴)。说出类似“ Alexa,询问virtualWeather 91016中的天气”之类的内容,您会听到“拿一把雨伞!蒙罗维亚有雷暴和大雨。”
现在,我们可以控制天气了!
下一步:
那么,从这里去哪里呢下是一些可能的后续步骤:
- 如果您想修改现有的虚拟响应(或创建自己的虚拟响应),请访问:http:// <VM_IP_Address> / em / virtualassets / manage
- 当前,虚拟响应将 告“ Test City”中的天气,而不是与您指定的邮政编码关联的城市名称。您可能会增强虚拟服务,以通过邮政编码进行查找,以在虚拟响应中提供正确的城市名称。
- 您可以修改我的Lambda函数代码并将其构建/部署到AWS Lambda上。也许您可以修改Alexa响应以包含API返回的更多天气数据。您可以在以下位置找到该存储库:https://github.com/sdebrosse/virtualize-weather
- 将其克隆到Linux计算机上后(只能在Linux环境上构建它),需要配置AWS CLI并安装npm / nodejs。在repo文件夹中,您可以执行“ npm run deploy”以将更改部署到Lambda。
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!