如何将 C2D(云到设备)Azure IoT 中心消息的有效负载发送回发起者?

How to send an explicit response with payload for a C2D (Cloud to Device) Azure IoT Hub message back to the initiator?

我目前正在尝试对 C2D 消息进行一些处理。到目前为止,从 IoT 中心功能发送 C2D 消息非常有效,我正在毫无问题地接收和处理有效负载。

然而,我的问题是,在发起端我总是得到肯定的 ACK,即使我在处理命令时关闭了 IoT 设备。一旦涉及到对 C2D 消息的响应,似乎所有文档都开始变得有点模糊。并且我确实多次阅读了IoT Hub功能的相关文档......希望我没有错过一个重要的部分,但我怀疑它。

那么我如何才能显式地将响应发送回还包含有效载荷的发起者?

我目前正在免费试用订阅,因为我正在尝试使用 IoT 中心。

非常感谢帮助。

从云到设备的任何通信的开始位置是 this page。据我所知,在您的情况下,您可能想要使用直接方法而不是 C2D 消息。 C2D 消息非常适合通知设备,但如您所见,没有用于响应消息的内置功能。

直接方法允许向设备发送请求,并让该设备响应它。请求和响应都允许有 128 KB JSON 有效载荷,因此您可以在设备端使用它来发回一些东西。

更新: 正如评论中提到的,除了 accepting/rejecting 之外,您对如何处理来自设备的 C2D 消息没有太大影响。以下是使用 C# 设备 SDK 拒绝消息的方法。

private async Task RejectSample()
{
    var deviceClient = DeviceClient.CreateFromConnectionString("muchconnectionstring");
    var message = await deviceClient.ReceiveAsync();
    // await deviceClient.CompleteAsync(message);
    await deviceClient.RejectAsync(message);
}