已知数据格式
{
"description": "音响设备音量调节指令",
"field_specifications": {
"root_level": {
"type": {
"data_type": "string",
"required": true,
"description": "指令类型标识,固定为'iot'",
"allowed_values": ["iot"]
}
},
"command_level": {
"name": {
"data_type": "string",
"required": true,
"description": "目标设备名称",
"allowed_values": ["Speaker"],
"device_mapping": {
"Speaker": "音响设备"
}
},
"method": {
"data_type": "string",
"required": true,
"description": "音量设置方法",
"allowed_values": ["SetVolume"],
"method_mapping": {
"SetVolume": "设置音响输出音量"
}
},
"parameters": {
"data_type": "object",
"required": true,
"description": "音量参数配置"
}
},
"parameters_level": {
"volume": {
"data_type": "integer",
"required": true,
"description": "音量大小设置",
"min_value": 0,
"max_value": 100,
"default_value": 50,
"unit": "百分比",
"value_interpretation": {
"0": "静音模式,完全无声,最小音量",
"30": "较低音量,适合安静环境",
"50": "中等音量,正常使用",
"70": "较高音量,适合较大空间",
"100": "最大音量"
}
}
}
},
"example_usage": {
"valid_examples": [
{
"description": "设置中等音量",
"command": {
"type": "iot",
"commands": [
{
"name": "Speaker",
"method": "SetVolume",
"parameters": {
"volume": 50
}
}
]
}
},
{
"description": "设置静音模式",
"command": {
"type": "iot",
"commands": [
{
"name": "Speaker",
"method": "SetVolume",
"parameters": {
"volume": 0
}
}
]
}
}
]
}
}
和
{
"description": "摄像头设备开关控制指令",
"schema_version": "1.0",
"field_specifications": {
"root_level": {
"type": {
"data_type": "string",
"required": true,
"description": "指令类型标识,固定为'iot',表明物联网设备指令",
"allowed_values": ["iot"],
"purpose": "用于路由和验证指令类型"
},
"commands": {
"data_type": "array",
"required": true,
"description": "包含一个或多个设备操作指令的数组",
"purpose": "支持批量设备操作"
}
},
"command_level": {
"name": {
"data_type": "string",
"required": true,
"description": "目标设备名称标识符",
"allowed_values": ["Camera"],
"purpose": "指定要操作的设备类型"
},
"method": {
"data_type": "string",
"required": true,
"description": "要在设备上执行的操作方法",
"allowed_values": ["openOrClose"],
"purpose": "定义具体的设备行为",
"method_mapping": {
"openOrClose": "开关控制操作"
}
},
"parameters": {
"data_type": "object",
"required": true,
"description": "操作方法所需的参数集合",
"purpose": "提供操作的具体配置参数"
}
},
"parameters_level": {
"action": {
"data_type": "string",
"required": true,
"description": "摄像头的开关动作",
"allowed_values": ["open", "close"],
"value_descriptions": {
"open": "打开摄像头",
"close": "关闭摄像头"
},
"side_effects": "状态改变会影响设备的电源消耗和隐私保护"
}
}
},
"example_usage": {
"valid_examples": [
{
"description": "打开摄像头",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "open"
}
}
]
}
},
{
"description": "关闭摄像头",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "close"
}
}
]
}
}
],
"invalid_examples": [
{
"description": "错误示例:使用无效的action值",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "toggle"
}
}
]
},
"error_reason": "action只允许'open'或'close','toggle'不是有效值"
}
]
}
}
需求是如果具有摄像头和麦克风的权限返回上面的摄像头json,如果具有麦克风和喇叭的权限返回上面的语音json,如果都有返回数组,没有返回空数组。
看到这段json实在是不想写一个个配置类,然后配置请求前缀,搞成一个个对象。也不想写这种对象,可以让ai直接根据json生成对象,本着简单为主,我的想法是用string接受,直接序列化返回对象,最终用个list返回就行。
但是在开发的过程中发现带{}的会存在数据取出来为””的情况,以下是我的解决方案,使用|
在yml中配置
device:
camera: |
{
"description": "摄像头设备开关控制指令",
"description_en": "camera_control",
"schema_version": "1.0",
"field_specifications": {
"root_level": {
"type": {
"data_type": "string",
"required": true,
"description": "指令类型标识,固定为'iot',表明物联网设备指令",
"allowed_values": ["iot"],
"purpose": "用于路由和验证指令类型"
},
"commands": {
"data_type": "array",
"required": true,
"description": "包含一个或多个设备操作指令的数组",
"purpose": "支持批量设备操作"
}
},
"command_level": {
"name": {
"data_type": "string",
"required": true,
"description": "目标设备名称标识符",
"allowed_values": ["Camera"],
"purpose": "指定要操作的设备类型"
},
"method": {
"data_type": "string",
"required": true,
"description": "要在设备上执行的操作方法",
"allowed_values": ["openOrClose"],
"purpose": "定义具体的设备行为",
"method_mapping": {
"openOrClose": "开关控制操作"
}
},
"parameters": {
"data_type": "object",
"required": true,
"description": "操作方法所需的参数集合",
"purpose": "提供操作的具体配置参数"
}
},
"parameters_level": {
"action": {
"data_type": "string",
"required": true,
"description": "摄像头的开关动作",
"allowed_values": ["open", "close"],
"value_descriptions": {
"open": "打开摄像头",
"close": "关闭摄像头"
},
"side_effects": "状态改变会影响设备的电源消耗和隐私保护"
}
}
},
"example_usage": {
"valid_examples": [
{
"description": "打开摄像头",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "open"
}
}
]
}
},
{
"description": "关闭摄像头",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "close"
}
}
]
}
}
],
"invalid_examples": [
{
"description": "错误示例:使用无效的action值",
"command": {
"type": "iot",
"commands": [
{
"name": "Camera",
"method": "openOrClose",
"parameters": {
"action": "toggle"
}
}
]
},
"error_reason": "action只允许'open'或'close','toggle'不是有效值"
}
]
}
}
voice: |
{
"description": "音响设备音量调节指令",
"description_en": "volume_control",
"field_specifications": {
"root_level": {
"type": {
"data_type": "string",
"required": true,
"description": "指令类型标识,固定为'iot'",
"allowed_values": ["iot"]
}
},
"command_level": {
"name": {
"data_type": "string",
"required": true,
"description": "目标设备名称",
"allowed_values": ["Speaker"],
"device_mapping": {
"Speaker": "音响设备"
}
},
"method": {
"data_type": "string",
"required": true,
"description": "音量设置方法",
"allowed_values": ["SetVolume"],
"method_mapping": {
"SetVolume": "设置音响输出音量"
}
},
"parameters": {
"data_type": "object",
"required": true,
"description": "音量参数配置"
}
},
"parameters_level": {
"volume": {
"data_type": "integer",
"required": true,
"description": "音量大小设置",
"min_value": 0,
"max_value": 100,
"default_value": 50,
"unit": "百分比",
"value_interpretation": {
"0": "静音模式,完全无声,最小音量",
"30": "较低音量,适合安静环境",
"50": "中等音量,正常使用",
"70": "较高音量,适合较大空间",
"100": "最大音量"
}
}
}
},
"example_usage": {
"valid_examples": [
{
"description": "设置中等音量",
"command": {
"type": "iot",
"commands": [
{
"name": "Speaker",
"method": "SetVolume",
"parameters": {
"volume": 50
}
}
]
}
},
{
"description": "设置静音模式",
"command": {
"type": "iot",
"commands": [
{
"name": "Speaker",
"method": "SetVolume",
"parameters": {
"volume": 0
}
}
]
}
}
]
}
}
在代码中使用
@Value("${device.voice:{"description":"摄像头设备开关控制指令","description_en":"camera_control","schema_version":"1.0","field_specifications":{"root_level":{"type":{"data_type":"string","required":true,"description":"指令类型标识,固定为'iot',表明物联网设备指令","allowed_values":["iot"],"purpose":"用于路由和验证指令类型"},"commands":{"data_type":"array","required":true,"description":"包含一个或多个设备操作指令的数组","purpose":"支持批量设备操作"}},"command_level":{"name":{"data_type":"string","required":true,"description":"目标设备名称标识符","allowed_values":["Camera"],"purpose":"指定要操作的设备类型"},"method":{"data_type":"string","required":true,"description":"要在设备上执行的操作方法","allowed_values":["openOrClose"],"purpose":"定义具体的设备行为","method_mapping":{"openOrClose":"开关控制操作"}},"parameters":{"data_type":"object","required":true,"description":"操作方法所需的参数集合","purpose":"提供操作的具体配置参数"}},"parameters_level":{"action":{"data_type":"string","required":true,"description":"摄像头的开关动作","allowed_values":["open","close"],"value_descriptions":{"open":"打开摄像头","close":"关闭摄像头"},"side_effects":"状态改变会影响设备的电源消耗和隐私保护"}}},"example_usage":{"valid_examples":[{"description":"打开摄像头","command":{"type":"iot","commands":[{"name":"Camera","method":"openOrClose","parameters":{"action":"open"}}]}},{"description":"关闭摄像头","command":{"type":"iot","commands":[{"name":"Camera","method":"openOrClose","parameters":{"action":"close"}}]}}],"invalid_examples":[{"description":"错误示例:使用无效的action值","command":{"type":"iot","commands":[{"name":"Camera","method":"openOrClose","parameters":{"action":"toggle"}}]},"error_reason":"action只允许'open'或'close','toggle'不是有效值"}]}}}")
private String deviceCameraResult;
/**
* 短信签名
*/
@Value("${device.camera:{"description":"音响设备音量调节指令","description_en":"volume_control","field_specifications":{"root_level":{"type":{"data_type":"string","required":true,"description":"指令类型标识,固定为'iot'","allowed_values":["iot"]}},"command_level":{"name":{"data_type":"string","required":true,"description":"目标设备名称","allowed_values":["Speaker"],"device_mapping":{"Speaker":"音响设备"}},"method":{"data_type":"string","required":true,"description":"音量设置方法","allowed_values":["SetVolume"],"method_mapping":{"SetVolume":"设置音响输出音量"}},"parameters":{"data_type":"object","required":true,"description":"音量参数配置"}},"parameters_level":{"volume":{"data_type":"integer","required":true,"description":"音量大小设置","min_value":0,"max_value":100,"default_value":50,"unit":"百分比","value_interpretation":{"0":"静音模式,完全无声,最小音量","30":"较低音量,适合安静环境","50":"中等音量,正常使用","70":"较高音量,适合较大空间","100":"最大音量"}}}},"example_usage":{"valid_examples":[{"description":"设置中等音量","command":{"type":"iot","commands":[{"name":"Speaker","method":"SetVolume","parameters":{"volume":50}}]}},{"description":"设置静音模式","command":{"type":"iot","commands":[{"name":"Speaker","method":"SetVolume","parameters":{"volume":0}}]}}]}}}")
private String deviceVoiceResult;
// 如果有音量控制权限,添加音量控制指令
if (aiHardwareSolution.getVoiceControlVolumeEnabled() != null
&& aiHardwareSolution.getVoiceControlVolumeEnabled() == 1) {
DeviceControlCommandVo volumeCommand = JSONUtil.toBean(deviceVoiceResult,DeviceControlCommandVo.class);
result.add(volumeCommand);
}
// 如果有摄像头控制权限,添加摄像头控制指令
if (aiHardwareSolution.getVoiceControlCameraEnabled() != null
&& aiHardwareSolution.getVoiceControlCameraEnabled() == 1) {
DeviceControlCommandVo cameraCommand = JSONUtil.toBean(deviceCameraResult,DeviceControlCommandVo.class);
result.add(cameraCommand);
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END




![在苹果iPhone手机上编写ios越狱插件deb[超简单] - 鹿快](https://img.lukuai.com/blogimg/20251123/23f740f048644a198a64e73eeaa43e60.jpg)













暂无评论内容