すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:Pub

最終更新日:Apr 17, 2025

カスタム Topic を使用してデバイスにメッセージをパブリッシュします。このオペレーションを呼び出して、特定のプロダクトのオンラインデバイスにメッセージをブロードキャストできます。オンラインデバイスは、特定のカスタム Topic をサブスクライブします。

使用上の注意

このオペレーションを呼び出してメッセージをブロードキャストする場合は、次の点に注意してください。

  • デバイスを設定する場合、Topic を定義するコードを記述する必要があります。 IoT Platform コンソールで Topic を作成する必要はありません。

  • デフォルトでは、最大 1,000 台のデバイスの Topic をサブスクライブできます。 1,000 台を超えるデバイスのカスタム Topic のブロードキャストメッセージをサブスクライブする場合は、MQTT 5.0 を使用して通信し、カスタム Topic のブロードキャスト機能を有効にして、カスタム Topic のメッセージを保存メッセージとして指定できます。詳細については、「UpdateTopicConfig」をご参照ください。

制限事項

このオペレーションを呼び出して、デバイスのプロパティを設定したり、デバイスサービスを呼び出したりするコマンドを送信することはできません。

QPS 制限

この API オペレーションは、アカウントごとに 1 秒あたり最大 1,600 回呼び出すことができます。

説明

Alibaba Cloud アカウントの RAM ユーザーは、アカウントのクォータを共有します。

デバッグ

OpenAPI Explorer は署名値を自動的に計算します。便宜上、OpenAPI Explorer でこのオペレーションを呼び出すことをお勧めします。 OpenAPI Explorer は、さまざまな SDK のサンプルコードを動的に生成します。

リクエストパラメーター

パラメーター

タイプ

必須

説明

Action

String

はい

Pub

実行するオペレーション。値を Pub に設定します。

ProductKey

String

はい

a1Q5XoY****

メッセージを受信するデバイスが属するプロダクトの ProductKey

MessageContent

String

はい

eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=

公開するメッセージの本文。

メッセージ本文を生成するには、生のメッセージをバイナリデータに変換し、Base64 エンコーディングを実行します。

説明

IoT Platform は Base64 アルゴリズムを使用してデータをデコードし、デコードされたメッセージをデバイスに送信します。このようにして、デバイスは Base64 でエンコードされたデータをデコードする必要はありません。

TopicFullName

String

はい

/a1Q5XoY****/device1/user/get

メッセージを受信するデバイスのカスタム Topic。

  • MQTT ゲートウェイデバイスを使用する場合、デバイスのオリジナルのカスタム Topic がカスタム Topic として使用されます。詳細については、「トピック」をご参照ください。

  • 非 MQTT ゲートウェイデバイスを使用する場合、カスタム Topic は次のいずれかの形式になります。

    • /${productKey}/${deviceName}/user/${TopicShortName}: システムは、${productKey} 変数で指定された ProductKey を持つプロダクトに属する特定のデバイスにメッセージを送信します。

    • /broadcast/${productKey}/${Custom field}: システムは、${productKey} 変数で指定された ProductKey を持つプロダクトのオンライン デバイスにメッセージを送信します。オンライン デバイスはカスタムトピックをサブスクライブします。${productKey} は、メッセージを受信するデバイスのプロダクトの ProductKey に置き換えます。${Custom field} 変数はカスタムフィールドを指定します。

重要

  • Topic には、サブスクライブまたはパブリッシュとサブスクライブの権限が必要です。

  • Pub オペレーションを呼び出す前に、デバイスが Topic をサブスクライブしていることを確認してください。そうでない場合、デバイスはメッセージを受信できません。

カスタム Topic をクエリするには、次のいずれかの方法を使用します。

  • QueryProductTopic オペレーションを呼び出して、プロダクトのカスタム Topic をクエリします。

  • プロダクトの詳細ページの トピック カテゴリ タブで、プロダクトのカスタム Topic を表示します。

  • デバイスの詳細ページの トピック一覧 タブで、デバイスがサブスクライブしているカスタム Topic を表示します。

IotInstanceId

String

いいえ

iot-cn-0pp1n8t****

インスタンスの ID。インスタンスの ID概要 は、IoT Platform コンソールの ページで確認できます。

重要

  • インスタンスに ID がある場合は、このパラメーターに ID を指定する必要があります。指定しないと、呼び出しは失敗します。

  • [概要] ページが表示されない場合、またはインスタンスに [ID] がない場合は、このパラメーターを指定する必要はありません。

詳細については、IoT インスタンスの 概要 トピックをご参照ください。

Qos

Integer

いいえ

0

メッセージの QoS(サービス品質)レベル。有効な値:

  • 0: システムはメッセージを最大 1 回送信します。

  • 1: システムはメッセージを少なくとも 1 回送信します。 QoS 1 メッセージをパブリッシュした後に PUBACK 応答が返されない場合、デバイスが IoT Platform に再接続すると、メッセージがデバイスに再度プッシュされます。

デフォルト値: 0

メッセージングの詳細については、「制限」トピックの「デバイス接続」セクションをご参照ください。

ResponseTopic

String

いいえ

/a1Q5XoY****/device1/user/update

MQTT 5.0 を使用して通信する場合のリクエスト/レスポンス通信モードでのレスポンストピック。詳細については、「MQTT 5.0」をご参照ください。

CorrelationData

String

いいえ

aGVsbG8****

MQTT 5.0 を使用する場合のリクエスト/レスポンス通信モードでの関連データ。ビジネス要件に基づいてこのパラメーターを設定できます。

メッセージ受信者は、データに基づいてリクエストを処理できます。

説明

関連データをバイナリデータに変換し、Base64 エンコーディングを実行して、文字列タイプの値を生成する必要があります。

UserProp.N.Key

String

いいえ

key1

MQTT 5.0 を使用して通信する場合に指定されるカスタムプロパティキー。

このパラメーターは、UserProp.N.Value パラメーターと一緒に使用する必要があります。

UserProp.N.Value

String

いいえ

value1

MQTT 5.0 を使用して通信する場合に指定されるカスタムプロパティ値。

UserProp.N.Key と一緒にこのパラメーターを使用する必要があります。

DeviceName

String

いいえ

device1

MQTT クラウドゲートウェイの名前。

重要

このパラメーターは、MQTT クラウドゲートウェイにメッセージを送信する場合にのみ必須です。

ContentType

String

いいえ

text

MQTT 5.0 を使用して通信する場合のメッセージのコンテンツタイプ。

このパラメーターは、textplain などの MIME ファイルのタイプを指定します。

PayloadFormatIndicator

Integer

いいえ

1

MQTT 5.0 を使用して通信する場合のメッセージのペイロード識別子。有効な値:

  • 0: メッセージは不明なバイトデータです。

  • 1: メッセージのペイロードは、UTF-8 でエンコードされた文字データです。

Retained

Boolean

いいえ

true

MQTT 5.0 を使用して通信する場合に、メッセージを保存メッセージとしてラベル付けするかどうかを指定します。

  • true

  • false

MessageExpiryInterval

Long

いいえ

2

MQTT 5.0 を使用して通信する場合のメッセージの有効期間。単位: 秒。

  • QoS 0 メッセージの有効期間は 0 ~ 86,400 秒です。

  • QoS 1 メッセージの有効期間は 0 ~ 604,800 秒です。

TopicAlias

Integer

いいえ

123

MQTT 5.0 を使用して通信する場合に指定できる Topic エイリアス。 Topic エイリアスは、デバイスと IoT Platform 間の通信トラフィックを削減するのに役立ちます。

重要

  • Topic エイリアスは、Topic 名とエイリアスのマッピングに基づいて機能します。デバイスと IoT Platform は、対応するマッピングを維持する必要があります。マッピングは、デバイスがエイリアスを使用してメッセージを送信したときに初めて作成され、デバイスが切断されたときに削除されます。デバイスが IoT Platform に再接続し、対応する Topic を使用してメッセージを送信するたびに、Topic 名とエイリアスの間にマッピングが作成されます。

  • 各エイリアスは一意である必要があります。エイリアスは 1 つの Topic 名のみに対応します。

  • Topic エイリアスを使用する場合は、メッセージを同時にパブリッシュしないでください。そうでない場合、IoT Platform の分散アーキテクチャが原因で、同時にパブリッシュされたメッセージが失われる可能性があります。

  • トピック エイリアスを使用する場合は、Pub 操作を呼び出すたびに [TopicAlias] を指定する必要があります。

  • IoT Platform は最大 20 個の Topic エイリアスをサポートしています。これは、デバイスのダウンストリームメッセージが最大 20 個の Topic エイリアスを使用できることを示しています。

Topic エイリアスの詳細については、「MQTT 5.0 機能の Topic エイリアス」をご参照ください。

上記のオペレーション固有のリクエストパラメーターに加えて、このオペレーションを呼び出すときは、共通のリクエストパラメーターを設定する必要があります。共通リクエストパラメーターの詳細については、「共通パラメーター」をご参照ください。

レスポンスパラメーター

パラメーター

タイプ

説明

Code

String

iot.system.SystemException

呼び出しが失敗した場合に返されるエラーコード。エラーコードの詳細については、「エラーコード」をご参照ください。

ErrorMessage

String

システム例外が発生しました。

呼び出しが失敗した場合に返されるエラーメッセージ。

MessageId

String

889455942124347329

メッセージが送信されたときに IoT Platform によって生成されるメッセージ ID。

RequestId

String

BB71E443-4447-4024-A000-EDE09922891E

リクエスト ID。

Success

Boolean

true

呼び出しが成功したかどうかを示します。有効な値:

  • true

  • false

サンプルリクエスト

https://iot.cn-shanghai.aliyuncs.com/?Action=Pub
&ProductKey=a1Q5XoY****
&TopicFullName=/a1Q5XoY****/device1/user/get
&MessageContent=eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=
&Qos=0
&ResponseTopic=/a1Q5XoY****/device1/user/update
&CorrelationData=aGVsbG8%3D****
&UserProp.1.Key=k1&UserProp.1.Value=v1
&<共通リクエストパラメーター>

サンプルの成功レスポンス

XML 形式

<PubResponse>
    <RequestId>BB71E443-4447-4024-A000-EDE09922891E</RequestId>
    <Success>true</Success>
    <MessageId>889455942124347329</MessageId>
</PubResponse>

JSON 形式

{
      "RequestId":"BB71E443-4447-4024-A000-EDE09922891E",
      "Success":true,
      "MessageId":889455942124347329
  }

エラーコード

エラーコードのリストについては、「サービスエラーコード」をご参照ください。