Azure — инициировать уведомление из очереди служебной шины

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

IoT-устройство отправляет сообщение Центр Интернета вещей, которое, в свою очередь, если сообщение содержит какое-либо значение, запускает уведомление для всех зарегистрированных устройств Android через Центр уведомлений.

Во-первых, мне все равно, каково содержание самого сообщения, и я просто хочу запускать уведомление о каждом входящем сообщении.

Мне удалось настроить устройство IoT и подключить его к концентратору IoT. Мне также удалось настроить концентратор уведомлений и подключить его к приложению для Android таким образом, что, когда я использую «тестовую отправку» в концентраторе уведомлений, на устройство Android поступает уведомление.

Чтобы соединить оба конца (концентратор IoT и концентратор уведомлений), я попытался следовать следующему руководству: 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?

Спасибо!

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
598
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Да, вы можете активировать функцию 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)}");
}

Привязка функции Центра Интернета вещей: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-iot

Спасибо, но как мне использовать функцию для запуска уведомлений Android?

Mickey 28.05.2019 18:18

Это возвращает меня к ошибке, которую я получил при попытке добавить тип notificationHub к типу function.json. Он не распознает тип, и я не могу настроить функцию. Я не знаю, связано ли это с версиями функций 1.x или 2.x, но это происходит со всеми функциями, которые я пытаюсь создать через портал.

Mickey 28.05.2019 19:38
Ответ принят как подходящий

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

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

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

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

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

Другие вопросы по теме