Я пытаюсь создать следующий процесс:

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?

Спасибо!

0
Mickey 28 Май 2019 в 18:37

2 ответа

Лучший ответ

Это похоже на простую проблему версии 1.x vs 2.x.

Чтобы решить эту проблему, если вы используете портал Azure:

  1. Создайте новый Function App.
  2. В Function App Settings установите версию ~1: введите описание изображения здесь Обратите внимание, что для нового приложения-функции опция установки версии не будет выделена серым цветом, и вы можете установить ее на ~ 1.
  3. Затем следуйте инструкциям по ссылке в вопросе.

Если вы используете Visual Studio, просто выберите v1 при создании функции. введите описание изображения здесь

Как написано в документации Microsoft, привязка уведомлений, к сожалению, не поддерживает функции 2.x.

0
Mickey 31 Май 2019 в 13:46

Да, вы можете запускать функцию 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 / лазурный / лазурный -функция / функция - переплеты - событийно- ВГД

0
silent 28 Май 2019 в 15:46