代表硬件开发人员提出此问题。
我试图向IOT Hub发送消息反馈,我的问题是只有http端点对我有效,没有其他协议支持,也无法读取标头以获取etag发送的信息IOT Hub在云到设备消息中。
那么我如何向IOT Hub发送反馈,是否有任何默认端点?
答案 0 :(得分:0)
呃..我不知道消息ID是否与ETag
相同(希望你有前者)。很确定不行,在这种情况下你需要ETag
。
Here's something i wrote in the past for an Arduino Mega
简而言之,完成:
DELETE /devices/{device_id}/messages/devicebound/{etag}?api-version=2016-02-03
更清洁的实施in this repo,同时显示拒绝和放弃。
答案 1 :(得分:0)
实际上,客户没有公开端点发送C2D消息反馈。我们只能更改消息状态,Azure IoT集线器会将反馈发送到反馈端点,反馈端点用于服务端根据消息状态接收反馈。 Here是了解消息反馈的有用文档。
我正在尝试向IOT Hub发送消息反馈,我的问题是 只有http端点对我有用,没有其他协议 支撑,
如果您使用azure iot sdk,则会有一个API:deviceClient.CompleteAsync()
通知IoT Hub该消息已成功处理。可以从设备队列中安全地删除该消息。
以及:
AbandonAsync()
:通知IoT Hub将收到的消息放回设备队列
RejectAsync()
:通知IoT Hub从设备队列中删除收到的消息,并向服务器指示无法处理该消息。
您可以参考DeviceClientHttpSample。
也无法读取标题以获取IOT发送的etag 云到设备消息中的集线器。
REST api可以阅读etag。
收到C2D消息(Receive Device Bound Notification):
GET https://<fully-qualified IoT hub domain name>/devices/device1/messages/deviceBound?api-version=2016-11-14
从响应标题中,您可以获得etag:
使用上面检索到的etag(Complete Device Bound Notification)发送反馈: