クラウドからデバイスへのメッセージチャネルでファイルアップロード通知を受信する予定があるようです。これらの通知が表示される場所ではありません。 デバイスのSDK、およびサービスのSDK:
はアズールのIoTハブ用のSDKの2種類があります。
- 能力にファイルをアップロードデバイスSDK(アズール-IOTデバイスパッケージ)です。 モニタファイルアップロードの通知へ
- 機能(すべてのデバイスから)はサービスSDK(紺碧-iothubパッケージ)です。 デバイス SDKで
アップロードが完了すると、uploadToBlob
メソッドへのコールバックが呼び出されます。
source from example
var Protocol = require('azure-iot-device-mqtt').Mqtt;
var Client = require('azure-iot-device').Client;
var fs = require('fs');
var filePath = '[path/to/file]';
var client = Client.fromConnectionString(deviceConnectionString, Protocol);
fs.stat(filePath, function (err, fileStats) {
var fileStream = fs.createReadStream(filePath);
client.uploadToBlob('testblob.txt', fileStream, fileStats.size, function (err, result) {
if (err) {
console.error('error uploading file: ' + err.constructor.name + ': ' + err.message);
} else {
console.log('Upload successful - ' + result);
}
fileStream.destroy();
});
});
ファイルがデバイスによってブロブにアップロードされたときに通知をリッスンしたい場合は、サービス SDKを使用する必要があります。クライアントを使用して「ファイル通知受信者」を取得し、このオブジェクトの「メッセージ」イベントで待機します。 @ pierreca-MSFTに加えて
source for the example
var Client = require('azure-iothub').Client;
var client = Client.fromConnectionString(connectionString);
client.open(function (err) {
if (err) {
console.error('Could not connect: ' + err.message);
} else {
console.log('Client connected');
client.getFileNotificationReceiver(function(err, receiver) {
if(err) {
console.error('Could not get file notification receiver: ' + err.message);
} else {
receiver.on('message', function(msg) {
console.log('File uploaded: ');
console.log(msg.data.toString());
receiver.complete(msg, function(err) {
if (err) {
console.error('Could not complete the message: ' + err.message);
} else {
console.log('Message completed');
}
});
});
}
});
}
});
オフブロブ・ストレージ・火災の前に遅延があり、ちょっと待って「ちょっと新しいブロブが!」イベントとIoTハブによってピックアップされますか? Azure関数blobバインディングのように?私は正直に言うと1分もかからずに待っていましたが、私が正しくやっていれば私はADDと戦うことができます。 – evilSnobu
代わりにこの例を確認してください:https://github.com/Azure/azure-iot-sdk-node/blob/master/device/samples/device_blob_upload.js、デバイスからのblobアップロードを起動して監視する方法を示します視点。次に、バックエンドの観点からアップロードを監視するには、サービスクライアントを使用し、この他のサンプルを使用する必要があります。https://github.com/Azure/azure-iot-sdk-node/blob/master/service/ samples/receive_file_notifications.js –
私はこれをすべて後方に持っているように見えます。私はバックエンドからBLOBストレージにファイルをアップロードしようとしており、すべての(または特定の)デバイスについて通知を受け取ることを期待しているため、デバイス上でいくつかの作業を開始することができます。私はちょうどblobトリガーとAzure関数を使用して、機能コードからクラウドツーデバイスメッセージングAPIを自分自身を呼び出す必要がありますか? – evilSnobu