RRPC は、デバイスがクラウドと通信できるように、カスタムトピックの呼び出しをサポートしています。 コミュニケーショントピックには、カスタムトピック全体が含まれています。

トピックの形式

RRPC のためのトピックの形式は次のとおりです。

  • リクエストトピック: /ext/rrpc/${messageId}/${topic}
  • トピックを返信 : /ext/rrpc/${messageId}/${topic}
  • トピックをサブスクライブ : /ext/rrpc/+/${topic}

上記の形式で、${messageId} は IoT Platform によって生成されたメッセージ ID を、${topic} はユーザーが作成したトピックを示します。

RRPC 接続

  1. デバイスをクラウド SDK に接続します。

    RRPC API を呼び出して、デバイスをクラウド SDK に接続します。 呼び出し方法の詳細については、「RRPC」をご参照ください。

    次の例では、呼び出し方法に Java SDK を使用しています。

    RRpcRequest request = new RRpcRequest();
    request.setProductKey("testProductKey");
    request.setDeviceName("testDeviceName");
    request.setRequestBase64Byte(Base64.getEncoder().encodeToString("hello world"));
    request.setTopic("/testProductKey/testDeviceName/get");//If you want to use your custom topic, enter the custom topic.
    request.setTimeout(3000);
    RRpcResponse response = client.getAcsResponse(request);

    カスタムトピックを使用するには、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>
  2. デバイスをクラウドに接続します。

    カスタムトピックを使用して、クラウドから RRPC 呼び出しリクエストをデバイスに送信する場合は、MQTT 通信プロトコルを設定する際に、パラメーター " ext=1 " を clientId に追加する必要があります。 詳細については、『TCP 接続を利用して MQTT を確立する方法』をご参照ください。

    たとえば、デバイスが送信する元の clientId は次のようになります。

    mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"

    " ext=1" が clientId に追加された後、デバイスが送信する clientId は次のようになります。

    mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232,ext=1|"
    RRPC を利用して、デバイスとクラウドの間の通信を確立し、カスタムトピックを使用する場合は、次の点を確認してください。
    • クラウドから送信されるメッセージ内のトピック変数が空でないこと。
    • パラメーター " ext=1 " が clientId に追加されていること。
  3. 返信トピックを返します。

    応答トピックの形式は、リクエストトピックの形式と同じであり、messageId は抽出されないため、リクエストトピックを応答トピックとして使用することができます。