如何使用 azure sdk for node 安排推送通知

How to scheduling push notifications using azure sdk for node

我知道这在 .net 中是可能的,我可以在这里看到参考 https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-send-push-notifications-scheduled。但我想知道如何在节点中做到这一点。任何人都可以指导我吗?

您可以使用 REST API 在 Node 中发送预定通知。使用发送普通通知的规范,将 /messages 替换为 /schedulednotifications。您还需要添加一个 header 指定名为 ServiceBusNotification-ScheduleTime.

的日期时间

使用模板架构的示例:

var CryptoJS = require("crypto-js");
var axios = require("axios");


var getSelfSignedToken = function(targetUri, sharedKey, keyName,
    expiresInMins) {
    targetUri = encodeURIComponent(targetUri.toLowerCase()).toLowerCase();

    // Set expiration in seconds
    var expireOnDate = new Date();
    expireOnDate.setMinutes(expireOnDate.getMinutes() + expiresInMins);
    var expires = Date.UTC(expireOnDate.getUTCFullYear(), expireOnDate
    .getUTCMonth(), expireOnDate.getUTCDate(), expireOnDate
    .getUTCHours(), expireOnDate.getUTCMinutes(), expireOnDate
    .getUTCSeconds()) / 1000;
    var tosign = targetUri + '\n' + expires;

    // using CryptoJS
    var signature = CryptoJS.HmacSHA256(tosign, sharedKey);
    var base64signature = signature.toString(CryptoJS.enc.Base64);
    var base64UriEncoded = encodeURIComponent(base64signature);

    // construct autorization string
    var token = "SharedAccessSignature sr=" + targetUri + "&sig="
    + base64UriEncoded + "&se=" + expires + "&skn=" + keyName;
    // console.log("signature:" + token);
    return token;
    };


var keyName = "<mykeyName>";
var sharedKey = "<myKey>";
var uri = "https://<mybus>.servicebus.windows.net/<myhub>";
var expiration = 10;

var token = getSelfSignedToken(uri, sharedKey, keyName, expiration);

const instance = axios.create({
    baseURL: uri,
    timeout: 100000,
    headers: {
        'Content-Type': 'application/octet-stream',
        'X-WNS-Type': 'wns/raw',
        'ServiceBusNotification-Format' : 'template',
        'ServiceBusNotification-ScheduleTime': '2019-07-19T17:13',
        'authorization': token}
  });

var payload = { 
            "alert" : " This is my test notification!"
    };


instance.post('/schedulednotifications?api-version=2016-07', payload)
  .then(function (response) {
    console.log(response);
  }).catch(function (error) {
    // handle error
    console.log(error);
  });