在Node.js Azure函数

时间:2018-03-29 21:10:01

标签: node.js azure-functions azureservicebus azure-iot-hub azure-servicebus-queues

我使用Azure Service Bus通过Node.js函数与IoT Hub进行通信。在功能方面,我需要访问邮件正文以及自定义属性。

通过在其他地方检索消息,我注意到我在Service Bus中的消息包含:

  1. 正文(在物联网设备端设置的字符串)。
  2. 自定义属性(包括在IoT设备端设置的属性,IoT设备ID和一些其他元数据)。
  3. 我在网上发现,在C#中可以使用BrokeredMessage对象访问这些自定义属性。但是,没有提到如何在Node.js中实现这一点。为了给出一些细节,我将在消息到达Function后立即打印,使用以下代码:

    module.exports = function(context, message) {
        context.log('Message', message, 'of type', (typeof message));
        ...
    }
    

    我在日志控制台中获得的是:

      

    类型为对象的消息{test:true}

    在哪里" {test:true}"是IoT Device设置的消息的内容。虽然没有任何属性......

    是否有一些正式的方法或至少有一个技巧来接收和提取这些属性?

    谢谢!

1 个答案:

答案 0 :(得分:3)

浏览Ling Toh在评论中发布的链接中提到的资源我受到启发,可以查看上下文对象。

显然,context.bindingData.properties对象中提供了所有Service Bus自定义属性。

就我而言:

properties: 
{ 
    type: 'sometype',   // <- this is the property I have set manually in IoT Hub message
    'iothub-connection-device-id': 'mydeviceid',
    'iothub-connection-auth-method': '{"scope":"somescope","type":"sometype","issuer":"external","acceptingIpFilterRule":null}',
    'iothub-connection-auth-generation-id': 'someid' // <- These are added by IoT Hub
}