调用该接口在单个设备上调用指定服务。

使用说明

定义产品物模型服务时,已设置服务调用方式。因此,调用本接口时,物联网平台会根据请求参数Identifier值,选择服务对应的调用方式。

  • 同步方式:物联网平台直接使用RRPC同步方式下行推送请求,设备返回RRPC响应消息。RRPC使用详情,请参见什么是RRPC
  • 异步方式:物联网平台采用异步方式下行推送请求,设备采用异步方式返回结果。订阅的Topic详情,请参见设备服务调用
重要 若创建产品时,设置物模型校验类型为免校验,调用本接口会默认为异步调用方式。

调用服务到设备端后,设备会返回调用结果给接口的调用方。设备端响应逻辑及响应结果,需您在设备端完成开发。设备返回结果的数据格式必须符合标准的Alink协议,Alink JSON格式如下:


{
	"id": "58***89",
	"code": 200,
	"data": {},
	"message": "success",
	"localizedMsg": "localizedMsg"
}
说明
  • id为物联网平台生成的唯一ID,设备从服务调用请求中获取,并原文返回。
  • code为整型数字,会返回给接口调用方,用于判断服务调用结果。
  • data为调用设备服务的结果数据,会返回给接口调用方。数据必须为JSON格式,由用户自行定义返回内容。
  • messagelocalizedMsg根据业务需要进行返回。

    例如物联网平台的设备接入C Link SDK提供了物模型使用示例,详细内容,请参见调用服务

使用限制

同步调用服务,最大超时时间为8秒。若8秒内服务器未收到回复,则返回超时错误。异步调用服务无最大超时时间限制。

QPS限制

单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为500。

说明 RAM用户共享阿里云账号配额。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String InvokeThingService

系统规定参数。取值:InvokeThingService。

Args String {"param1":1}

要启用服务的入参信息,数据格式为JSON String,例如Args={"param1":1}

若此参数为空时,需传入 Args={}

重要 物模型功能定义数据类型为float或double时,对应参数值(即使值为整数)至少携带一位小数位。例如10.0、11.1。
Identifier String Set

服务的标识符。

设备的服务Identifier的查看方式:

说明 如果是自定义(非默认)模块testFb下服务testService,则参数值为testFb:testService
IotInstanceId String iot_instc_pu****_c*-v64********

实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID

重要
  • 若有ID值,必须传入该ID值,否则调用会失败。
  • 若无实例概览页面或ID值,则无需传入。

实例的更多信息,请参见实例概述

ProductKey String a1BwAGV****

要调用服务的设备所属的产品ProductKey。

重要 如果传入该参数,需同时传入DeviceName
DeviceName String light

要调用服务所属设备的DeviceName。

重要 如果传入该参数,需同时传入ProductKey
IotId String Q7uOhVRdZRRlDnTLv****00100

要调用服务的设备ID。物联网平台为该设备颁发的ID,设备的唯一标识符。

重要 IotId作为设备唯一标识符,和ProductKeyDeviceName组合是一一对应的关系。如果传入该参数,则无需传入ProductKeyDeviceName。如果您同时传入IotIdProductKeyDeviceName组合,则以IotId为准。
Qos Integer 1

指定调用本接口时,消息的发送方式。取值:

  • 0(默认):最多发送一次。
  • 1:最少发送一次。如果QoS=1消息未接收到PUBACK消息,会在设备重连时,重新推送给设备。

调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。公共请求参数说明,请参见公共参数文档

返回数据

名称 类型 示例值 描述
Code String iot.system.SystemException

调用失败时,返回的错误码。更多信息,请参见错误码

Data Struct

调用成功时,返回的数据。

MessageId String abcabcabc1234****

云端向设备下发服务调用的消息ID。

Result String {"param1":1}

同步调用服务,返回的调用结果。

异步调用服务,不返回此参数。

ErrorMessage String 系统异常

调用失败时,返回的出错信息。

RequestId String E55E50B7-40EE-4B6B-8BBE-D3ED55CCF565

阿里云为该请求生成的唯一标识符。

Success Boolean true

是否调用成功。

  • true:调用成功,但不代表调用的服务执行成功。执行情况,以设备端日志为准。
  • false:调用失败。

示例

请求示例

https://iot.cn-shanghai.aliyuncs.com/?Action=InvokeThingService
&ProductKey=a1BwAGV****
&DeviceName=device1
&Identifier=service1
&Args=%7B%22param1%22%3A1%7D
&<公共请求参数>

正常返回示例

XML格式

<InvokeThingServiceResponse>
  <Data>
        <Result>{"code":200,"data":{},"id":"100686","message":"success","version":"1.0"}</Result>
        <MessageId>abcabc123</MessageId>
  </Data>
  <RequestId>A44C818E-FA7F-4765-B1E7-01D14AE01C6A</RequestId>
  <Success>true</Success>
</InvokeThingServiceResponse>

JSON格式

{
  "Data": {
    "Result": "{\"code\":200,\"data\":{},\"id\":\"100686\",\"message\":\"success\",\"version\":\"1.0\"}", 
    "MessageId": "abcabc123"
  }, 
  "RequestId": "A44C818E-FA7F-4765-B1E7-01D14AE01C6A", 
  "Success": true
}