Попытка отправить уведомление pu sh в Azure Центр уведомлений через Rest API с использованием указанного тега устройства c - PullRequest
0 голосов
/ 10 февраля 2020

По сути, я хочу иметь возможность отправить уведомление pu sh для определенного c зарегистрированного устройства (с помощью тега) в Azure Центр уведомлений, который затем отправит это уведомление на устройство. У меня есть некоторый код c#, который сделает это, но я бы хотел использовать API, если это возможно.

Я нашел статью (компьютер перезагружен, но у меня нет ссылки), которая объяснил, как отправлять уведомления с помощью API, но похоже, что он отправляет уведомление на каждое устройство, зарегистрированное в хабе, поэтому я хочу посмотреть, будет ли легко изменить тело или даже сценарий предварительного запроса, чтобы включить спецификацию c тег устройства.

Или, если кто-нибудь из вас, умных людей, знает о более простом способе сделать это через API, тогда я весь в ушах.

Вот мой код (взят из Почтальона), который В настоящее время у меня есть отправка уведомления всем устройствам-концентраторам.

Конечная точка POST : https: // {namespace_name} .servicebus. windows .net / {hub_name} / messages /? api-версия = 2015-01

Заголовки :

  • Авторизация - {{azure -authorization}}
  • Content-Type - application / json
  • ServiceBusNotification-Format - gcm
* 1 024 * Тело запроса :
{"data":
    {
        "gcm.notification.body":"Hi", 
        "gcm.notification.title":"Hi",
    }
}

Сценарий предварительного запроса :

function getAuthHeader(resourceUri, keyName, key) {

    var d = new Date();
    var sinceEpoch = Math.round(d.getTime() / 1000);
    var expiry = (sinceEpoch + 3600);
    var stringToSign = encodeURIComponent(resourceUri) + '\n' + expiry;
    var hash = CryptoJS.HmacSHA256(stringToSign, key);
    var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
    var sasToken = 'SharedAccessSignature sr=' + encodeURIComponent(resourceUri) + '&sig=' + encodeURIComponent(hashInBase64) + '&se=' + expiry + '&skn=' + keyName;
    console.log(sasToken);

    return sasToken;
}
postman.setEnvironmentVariable('azure-authorization', getAuthHeader(request.url,"DefaultFullSharedAccessSignature", "<full_shared_access_signature>"));
postman.setEnvironmentVariable('current-date',new Date().toUTCString());

1 Ответ

1 голос
/ 11 февраля 2020

REST API для отправки уведомлений - это простой POST для / yourHub / messages, со специальными заголовками. При отправке уведомлений в собственном формате платформы тело - это тело, определяемое платформой c для отправки. Дополнительные заголовки:

  • ServiceBusNotification-Format : указывает, что платформа (если отправляет собственное уведомление) или «шаблон» должна отправлять уведомление шаблона.
  • Теги ServiceBusNotification-(необязательно) : Указывает тег (или выражение тега), определяющий целевой набор регистраций. Если этот заголовок отсутствует, концентратор уведомлений передает все регистрации.

Другие заголовки поддерживаются для платформы c, как указано в API-интерфейсах REST Notification Hubs документация.

См .: Использование API-интерфейсов REST из бэкэнда

...