当前位置: 首页 > 知识库问答 >
问题:

Alexa智能家居技能:发现设备的问题

宗意蕴
2023-03-14

我发现我的Alexa智能家居技能的设备有问题。

有效的步骤:

  • 激活Alexa技能
  • OAuth登录屏幕出现。成功登录后,将触发设备发现
  • 在lambda函数中,我得到了用于调用/设备endpoint
  • 我从RESTendpoint获取设备,并按照中所述构造有效负载https://developer.amazon.com/de/docs/smarthome/steps-to-build-a-smart-home-skill.html
  • 有效载荷(与示例中的结构相同)提供给上下文。成功

我的问题是:在Alexa技能从发现设备任务返回后,Alexa技能中看不到任何新设备。

当我使用示例中的代码时(没有对外部Rest API的请求发生),该设备在Alexa发现任务后的Alexa技能中可见。

var https = require('https');
const AWS = require('aws-sdk');

exports.handler = function(request, context) {
var options = {
	method: 'GET',
	hostname: 'xyz.azurewebsites.net',
	path: '/devices',
	headers: {
		Authorization: 'Bearer ' + request.directive.payload.scope.token,
		'Content-Type': 'application/json'
	}
};

var req = https.get(options, (response) => {
	var data = '';
	response.setEncoding('utf8');
	response.on('data', function(x) { data += x; } );
	response.on('error', console.error);
	response.on('end', () => {
		var dataObj = JSON.parse(data);
		console.log("Retrieved response: " + JSON.stringify(dataObj.items));

		const payload = {
		  "endpoints": []
		};
		dataObj.items.forEach(item => {
			const device = {
					"endpointId": item.id,
					"manufacturerName": item.manufacturer,
					"friendlyName": item.displayName,
					"description": item.description,
					"displayCategories": ["SWITCH"],
					"cookie": {
							"key1": "arbitrary key/value pairs for skill to reference this endpoint.",
							"key2": "There can be multiple entries",
							"key3": "but they should only be used for reference purposes.",
							"key4": "This is not a suitable place to maintain current endpoint state."
					},
					"capabilities":
					[
							{
								"type": "AlexaInterface",
								"interface": "Alexa",
								"version": "3"
							},
							{
									"interface": "Alexa.PowerController",
									"version": "3",
									"type": "AlexaInterface",
									"properties": {
											"supported": [{
													"name": "powerState"
											}],
											 "retrievable": true
									}
							}
					]
			};
			payload.endpoints.push(device);
		});
		console.log('payload ' + JSON.stringify(payload));

		var header = request.directive.header;
		header.name = "Discover.Response";
		console.log("DEBUG", "Discovery Response: ", JSON.stringify({ header: header, payload: payload }));
		//NEXT LINE IS EXECUTED WITHOUT ANY ERROR
		context.succeed({ event: { header: header, payload: payload } });
	});	
});
req.on('error', (e) => {
  console.log('problem with request: ' + e.message);
});
};

共有2个答案

茅鸿宝
2023-03-14

我发现了同样症状的另一个原因:对于实体的附加属性(制造商、型号等)。),不能使用非英语字符。您实际上可以使用32到126之间的任何字符ASCII(从空格到波浪),但不能使用反斜杠。因此,不允许重音字符(国际或扩展ASCII)。

另一方面,我可以在其endpoint Id中包含一个具有@的实体。我无法解释为什么你不能。

古彦
2023-03-14

我发现了问题。。。属性“endpointId”的值包含“@”。然后我把名字改成了字母,结果成功了。尽管本文中说可以使用“@”,但设备的发现仍然存在问题。希望这个答案能帮助其他人避免浪费时间。。。

 类似资料:
  • 我创造了一个Alexa定制技能,我用它来控制我家里的各种设备。我使用的是定制技能,而不是实施智能家居技能,因为我希望能够支持非标准语言。例如,我可以问 所有具有自定义技能的东西都工作得很好,除了我不想说调用名称。我更喜欢与门廊灯互动,就好像它们是一个被发现的智能家居技能设备,比如: 这似乎就是的目的。我已经用Python实现了这个接口(可能是错误的),但Alexa总是回答:“对不起,我没有找到名为

  • 1.1. 智能家居设备接入平台简介 1.1.1. Homebase 框架 1.1.2. 接入方案 1.1.3. 链接 1.1. 智能家居设备接入平台简介 智能家居设备接入平台为智能家居厂商提供了语音控制智能设备的整套解决方案。 1.1.1. Homebase 框架 Rokid Homebase,是面向智能家居的设备接入框架,通过适配接入 Homebase 协议,即可实现用户与设备或服务的智能语音交

  • 是否有可能以编程方式触发Alexa智能家居“发现”? 我正在研究一种自定义技能,可以用来在相关的智能家居技能中添加和配置设备。使用自定义技能,用户可以添加和编辑智能家居技能识别的设备名称。 这很好,但正如预期的那样,需要用户执行“发现新设备”,然后智能家居技能才能获得更改。 有没有一种方法可以让定制技能触发智能家居技能的新发现,从而获取新的设备信息? 我不想让自定义技能告诉用户“好吧,现在去打开阿

  • 1. 智能家居设备接入流程 1.1. 准备阶段 1.2. 厂商接入 1.2.1. 云云对接 1.2.2. 局域网对接 1.3. 厂商自测 1.3.1. RHOME 桌面调试工具 1.3.2. 自定义接入 1.4. 申请上线 1.5. 发布上线 1.6. 获取帮助 一、准备阶段 二、厂家接入 三、厂商自测 四、申请上线 五、发布上线 1.1. 准备阶段 申请成为智能家居开发者需要准备: 拥有一台若琪

  • 光环板内置Wi-Fi及帐号云广播功能可以用于智能家居场景,轻松实现远程控制愿望。光环板作为智能家居的灯光来源,使用电脑可以对光环板远程控制, 即使远离家门也可以轻松控制房屋灯光。光环板连接舵机,可以当智能车库锁,坐在车里即可以轻松关闭车库门。 设置舞台背景 1. 选择“角色”,删除默认角色Panda 2. 选择“背景”,点击“造型”,添加“Bedroom2” 添加舞台按钮 3. 选择“角色”,添加

  • 介绍 智能家居模块是已 H5 的形式集成到 SDK 中,所以必须实现 SDK webbidge 才能正常打开使用此模块。 URL和环境 使用 iOS Webview 控件,并且需要接入 Rokid Mobile SDK RKWebBridge 才能正常打开 下面连接。 线上:https://s.rokidcdn.com/homebase/tob/index.html 预发:https://s.ro