Azure - запуск уведомления из очереди служебной шины - PullRequest
0 голосов
/ 28 мая 2019

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

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 - это имя Notification Hub.

Как я могу запускать уведомления для устройств Android через очередь?Есть ли способ вызвать их напрямую из функции IoT Hub Event Trigger?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Кажется, что на самом деле это простая проблема с функциями 1.x против 2.x.

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

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

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

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

0 голосов
/ 28 мая 2019

Да, вы можете запускать функцию 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/azure-functions/functions-bindings-event-iot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...