我正在尝试创建以下过程:
IoT设备向 IoT Hub 发送一条消息,如果该消息包含某些值,则该消息会通过该消息触发向所有已注册android设备的通知。 通知中心。
起初,我不在乎消息本身的内容,我只想针对每条传入的消息触发通知。
我设法设置了IoT设备并将其连接到IoT中心。 我还设法设置了通知中心,并将其与android应用程序连接,以一种方式,当我在通知中心中使用“测试发送”时,便会在android设备上收到通知。
为了连接两端(IoT中心和通知中心),我尝试遵循以下教程:https://www.developer.com/ws/android/sending-notifications-to-mobile-apps-from-azure-function-apps.html
此外,我还添加了从IoT中心到服务总线中相应队列的路由。
现在,每当IoT设备向集线器发送消息时,我都能看到队列接收到消息。但是,我似乎无法使用队列来触发通知。
我添加的ServiceHubQueueTrigger
函数在门户中出现以下错误:
Error:
Function (ServiceBusQueueTrigger1) Error: The binding type(s) 'notificationHub' are not registered. Please ensure the type is correct and the binding extension is installed.
它的function.json
看起来像这样:
{
"bindings": [
{
"name": "myQueueItem",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "notificationqueue",
"connection": "ServiceBusConnection",
"accessRights": "manage"
},
{
"name": "notification",
"type": "notificationHub",
"hubName": "<hub-name>",
"connection": "NotificationConnString",
"platform": "gcm",
"tagExpression": "",
"direction": "out"
}
]
}
其中hub-name
是通知中心的名称。
如何通过队列触发向android设备的通知?
有没有一种方法可以直接通过IoT Hub Event Trigger
函数来触发它们?
谢谢!
答案 0 :(得分:0)
是的,您可以直接从传入的IoT中心事件触发Azure功能。在此处查看我的示例之一:https://github.com/sebader/iotedge-end2end/blob/master/CloudFunctions/IotHubMessageProcessor.cs
public static void Run([IoTHubTrigger("messages/events", Connection = "iothubevents_cs", ConsumerGroup = "receiverfunction")]EventData message, ILogger log)
{
log.LogInformation($"IotHubMessageProcessor received a message: {Encoding.UTF8.GetString(message.Body.Array)}");
}
IoT中心功能绑定:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-iot
答案 1 :(得分:0)