I have an IoTHub with a route that points to an EventHub which triggers a Functions.
I'm having problem getting the DeviceId and other IoT Hub properties from the event object without adding those explicitly to the payload.
If I set the input type to a string
(or a custom type):
public static void Run(string iotMessage, TraceWriter log) {
log.Info($"C# Event Hub trigger function processed a message: {iotMessage}");
}
I only get the payload without any other IoT Hub properties like DeviceId, CorrelationId or MessageId.
I tried to set the type to EventData
instead:
public static void Run(EventData iotMessage, TraceWriter log) {
log.Info($"C# Event Hub trigger function processed a message: {JsonConvert.SerializeObject(iotMessage)}");
}
Now I can access the IoT Hub properties via two getters: Properties and SystemProperties. For example I can access DeviceId like this iotMessage.SystemProperties["iothub-connection-device-id"]
. But it does not expose the payload.
So how do I access both IoT Hub properties and the payload?