Я пытаюсь создать следующий процесс:
IoT-устройство отправляет сообщение в IoT Hub , которое, в свою очередь, если в сообщении содержится какое-либо значение, запускает уведомление для всех зарегистрированных устройств Android через Центр уведомлений .
Во-первых, мне все равно, каково содержание самого сообщения, и я просто хочу вызывать уведомление для каждого входящего сообщения.
Мне удалось настроить устройство IoT и подключить его к концентратору IoT. Мне также удалось настроить Центр уведомлений и подключить его к приложению для Android таким образом, чтобы при использовании «тестовой отправки» в Центре уведомлений на устройство Android поступало уведомление.
Чтобы соединить оба конца (IoT Hub и Notification Hub), я попытался следовать следующему руководству: https://www.developer.com/ws/android/sending-notifications-to-mobile-apps-from-azure-function-apps. HTML
Кроме того, я добавил маршрутизацию из IoT Hub в соответствующую очередь в служебной шине.
Теперь, когда устройство 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
?
Благодарность!
2 ответа
Это похоже на простую проблему версии 1.x vs 2.x.
Чтобы решить эту проблему, если вы используете портал Azure:
- Создайте новый
Function App
. - В
Function App Settings
установите версию~1
:Обратите внимание, что для нового приложения-функции опция установки версии не будет выделена серым цветом, и вы можете установить ее на ~ 1.
- Затем следуйте инструкциям по ссылке в вопросе.
Если вы используете Visual Studio, просто выберите v1 при создании функции.
Как написано в документации Microsoft, привязка уведомлений, к сожалению, не поддерживает функции 2.x.
Да, вы можете запускать функцию Azure напрямую из входящих событий IoT Hub. Посмотрите один из моих образцов здесь: 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
Microsoft Azure - это платформа для облачных вычислений «Платформа как услуга» и «Инфраструктура как услуга». Используйте этот тег для вопросов по программированию, касающихся Azure. Общая справка по серверу может быть получена в разделе «Суперпользователь» или «Ошибка сервера».