調用該介面在單個裝置上調用指定服務。
使用說明
定義產品物模型服務時,已設定服務調用方式。因此,調用本介面時,物聯網平台會根據請求參數Identifier值,選擇服務對應的調用方式。
- 同步方式:物聯網平台直接使用RRPC同步方式下行推送請求,裝置返回RRPC響應訊息。RRPC使用詳情,請參見什麼是RRPC。
- 非同步方式:物聯網平台採用非同步方式下行推送請求,裝置採用非同步方式返回結果。訂閱的Topic詳情,請參見裝置服務調用。
調用服務到裝置端後,裝置會返回調用結果給介面的調用方。裝置端響應邏輯及響應結果,需您在裝置端完成開發。裝置返回結果的資料格式必須符合標準的Alink協議,Alink JSON格式如下:
{
"id": "58***89",
"code": 200,
"data": {},
"message": "success",
"localizedMsg": "localizedMsg"
}
- id為物聯網平台產生的唯一ID,裝置從服務調用請求中擷取,並原文返回。
- code為整型數字,會返回給介面調用方,用於判斷服務調用結果。
- data為調用裝置服務的結果資料,會返回給介面調用方。資料必須為JSON格式,由使用者自行定義返回內容。
-
message、localizedMsg根據業務需要進行返回。
例如物聯網平台的裝置接入C Link SDK提供了物模型使用樣本,詳細內容,請參見調用服務。
使用限制
同步調用服務,最大逾時時間為8秒。若8秒內伺服器未收到回複,則返回逾時錯誤。非同步呼叫服務無最大逾時時間限制。
QPS限制
單個阿里雲帳號調用該介面的每秒請求數(QPS)最大限制為500。
調試
您可以在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。 重要
執行個體的更多資訊,請參見執行個體概述。 |
| ProductKey | String | 否 | a1BwAGV**** | 要調用服務的裝置所屬的產品ProductKey。 重要 如果傳入該參數,需同時傳入DeviceName。
|
| DeviceName | String | 否 | light | 要調用服務所屬裝置的DeviceName。 重要 如果傳入該參數,需同時傳入ProductKey。
|
| IotId | String | 否 | Q7uOhVRdZRRlDnTLv****00100 | 要調用服務的裝置ID。物聯網平台為該裝置頒發的ID,裝置的唯一識別碼。 重要 IotId作為裝置唯一識別碼,和ProductKey與DeviceName組合是一一對應的關係。如果傳入該參數,則無需傳入ProductKey和DeviceName。如果您同時傳入IotId和ProductKey與DeviceName組合,則以IotId為準。
|
| Qos | Integer | 否 | 1 | 指定調用本介面時,訊息的發送方式。取值:
|
調用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 | 是否調用成功。
|
樣本
請求樣本
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
}
錯誤碼
訪問錯誤中心查看更多錯誤碼。