Revert-RPC (RRPC) を使用すると、カスタムトピックを使用してIoT Platformとデバイス間の通信を確立できます。 RRPC固有のトピックには、IoT Platformで作成した完全なカスタムトピックが含まれます。 この方法を使用して、さまざまなシナリオの通信要件を満たすことができます。 このトピックでは、カスタムトピックを含むRRPC固有のトピックと、RRPC要求を開始する方法について説明します。
前提条件
デバイスが構成される。 デバイスは、カスタムトピックを使用してIoT Platformと通信できます。 デバイスを設定するには、次のLink SDKを使用できます: Link SDK for C。
カスタムトピック
トピック | Format | 説明 |
RRPCサブスクリプショントピック | /ext/rrpc/+/${topic} | IoT Platformから送信されるRRPCリクエストメッセージに含まれるカスタムトピックをサブスクライブします。 |
RRPCリクエストトピック | /ext/rrpc/${messageId}/${topic} | IoT PlatformからRRPCリクエストメッセージを送信します。 |
RRPCの応答トピック | /ext/rrpc/${messageId}/${topic} | デバイスからRRPC応答メッセージを送信します。 |
変数:
- ${topic}: IoT Platformコンソールで作成した完全なカスタムトピックの名前。 形式:
/${productKey}/${deviceName}/user/${TopicShortName}
${TopicShortName}
は、カスタムトピックのサフィックスであるカスタムトピックカテゴリを指定します。 詳細については、「通信にカスタムトピックを使用する」をご参照ください。 - ${messageId}: この変数をRRPCメッセージのIDに置き換えます。 サーバーがRRpc操作を呼び出してデバイスにメッセージを送信すると、IoT Platformはメッセージの一意のIDを生成します。
たとえば、デバイスの名前がdevice1の場合、カスタムトピックの名前はa18wP ***/device1/user/get
で、RRPCメッセージの送信元のトピックの名前は /ext/rrpc/121307410 ***/a18wP ***/device1/user/get
です。
RRPCリクエストを開始する
- IoT PlatformはRRPCメッセージを送信します。
サーバーはRRpc操作を呼び出してデバイスにメッセージを送信します。 詳細は、「RRpc」をご参照ください。
この例では、IoT Platform SDK for Javaを例として使用します。
カスタムトピックを使用するには、Java用SDK (aliyun-java-sdk-iot) のバージョンが6.0.0以降であることを確認します。
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-iot</artifactId> <version>6.0.0</version> </dependency>
次の例は、RRpc操作を呼び出す方法を示しています。
RRpcRequest request = new RRpcRequest(); request.setProductKey("testProductKey"); request.setDeviceName("testDeviceName"); request.setRequestBase64Byte(Base64.getEncoder().encodeToString("hello world")); request.setTopic("/testProductKey/testDeviceName/user/get");// 通信にカスタムトピックを使用する必要がある場合は、この関数でカスタムトピックを指定します。 request.setTimeout(3000); RRpcResponse response = client.getAcsResponse (リクエスト);
説明 OpenAPI開発者ポータルにログインし、RRpc操作を呼び出します。 複数のプログラミング言語のサンプルコードを提供します。 - デバイスをIoT Platformに接続します。
デバイスがLink SDK for Cを使用して構成されている場合、デバイスの追加設定を構成する必要はありません。
- デバイスは、RRPC応答を送信する。
RRPC応答トピックの形式は、RRPC要求トピックの形式と同じです。 したがって、RRPCリクエストトピックをRRPCレスポンストピックとして使用できます。
説明 デバイスは、サービス品質 (QoS) レベルが0であるRRPCメッセージのみを返すことができる。