V2.1 Invoke Service¶
向设备下发服务调用接口。
该 API 支持在 EnOS 2.1.0 及以上环境中使用。
这个接口可以执行缓存命令或者即时命令。当执行即时命令时,需要等待设备返回服务调用的结果后,才返回接口响应数据。如果设备在规定的服务执行超时时间内,未返回服务调用的结果,EnOS 服务调用会等待到超时时间后,返回接口超时响应数据。
如果是缓存命令,则直接放入缓存后返回用户。
请求格式¶
POST https://{apigw-address}/connect-service/v2.1/commands?action=invokeService
请求参数(URI)¶
注解
以下非必需字段中,必须提供 assetId
或 productKey
+ deviceKey
的组合,用于指定设备。
名称 | 位置(Path/Query) | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|---|
orgId | Query | 必需 | String | 资产所属的组织 ID。如何获取 orgId 信息>> |
assetId | Query | 可选(见上述注解) | String | 资产 ID。如何获取 assetId 信息>> |
productKey | Query | 可选(见上述注解) | String | 设备的 product key,需与 deviceKey 一起使用。 |
deviceKey | Query | 可选(见上述注解) | String | 设备的 device key,需与 productKey 一起使用。 |
serviceId | Query | 必需 | String | 被调用服务ID。 |
pendingTtl | Query | 可选 | Long | 缓存存储时间,单位为秒,范围[0 - 172800(即48小时)],默认值为0。当pendingTtl为0时,表示命令即时执行。 |
timeout | Query | 可选 | Integer | 服务执行超时时间,单位为秒,范围[1 - 60],默认值为30秒。 |
请求参数(Body)¶
名称 | 必需/可选 | 数据类型 | 描述 |
---|---|---|---|
inputData | 可选 | Map(Key 为 String,Value 为 String,Number,Array 或 Object) | 服务调用的输入参数,key 为参数标识符,value 值类型需要符合 如果 |
响应参数¶
名称 | 数据类型 | 描述 |
---|---|---|
data | InvokeService 结构体 | 服务调用结果。服务调用返回结构体>> |
InvokeService 结构体¶
名称 | 数据类型 | 描述 |
---|---|---|
commandId | String | 命令 ID。 |
outputData | Map(Key 为 String,Value 为 String,Number,Array 或 Object) | 当请求的 pendingTtl 为 0,即请求命令即时执行时,返回设备服务调用结果,需要符合 ThingModel 的定义。当请求的 pendingTtl 不为 0,即请求命令缓存执行时,该参数不返回。 |
示例¶
请求示例¶
https://{apigw-address}/connect-service/v2.1/commands?action=invokeService&deviceKey=yourDeviceKey&pendingTtl=1000&productKey=yourProductKey&serviceId=identifier&orgId=yourOrgId&timeout=30
method: POST
requestBody:
{
"inputData":{
"parameter_1":22.2,
"parameter_2":11
}
}
返回示例¶
{
"code":0,
"msg":"OK",
"requestId":"7d863d517eae4f18a2776452eb1305bb",
"data":{
"commandId":"2078724684846989312",
"outputData":null
}
}