全部產品
Search
文件中心

IoT Platform:InvokeThingService

更新時間:Feb 11, 2025

調用該介面在單個裝置上調用指定服務。

使用說明

定義產品物模型服務時,已設定服務調用方式。因此,調用本介面時,物聯網平台會根據請求參數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
}

錯誤碼

訪問錯誤中心查看更多錯誤碼。