Functions.Templates/Templates/EdgeHubTrigger-CSharp/EdgeHubTriggerCSharp.cs (37 lines of code) (raw):
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.EdgeHub;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
// Visit https://aka.ms/iot-edge-csharp-function-tutorial to learn how to use this trigger
namespace Company.Function
{
public static class EdgeHubTriggerCSharp
{
[FunctionName("EdgeHubTriggerCSharp")]
public static async Task Run(
[EdgeHubTrigger("input1")] Message messageReceived,
[EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output,
ILogger logger)
{
byte[] messageBytes = messageReceived.GetBytes();
var messageString = System.Text.Encoding.UTF8.GetString(messageBytes);
if (!string.IsNullOrEmpty(messageString))
{
logger.LogInformation("Info: Received one non-empty message");
var pipeMessage = new Message(messageBytes);
foreach (KeyValuePair<string, string> prop in messageReceived.Properties)
{
pipeMessage.Properties.Add(prop.Key, prop.Value);
}
await output.AddAsync(pipeMessage);
logger.LogInformation("Info: Piped out the message");
}
}
}
}