Создание и отправление уведомления

Пространство имен: microsoft.graph

Важно!

API версии /beta в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.

Создайте и отправьте уведомление для пользователя через Microsoft Graph. Уведомление хранится в хранилище веб-каналов уведомлений Microsoft Graph и отправляется всем клиентам приложений на всех конечных точках устройств, в которые вошел пользователь.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальное обслуживание Правительство США L4 Правительство США L5 (DOD) Китай, обслуживаемый 21Vianet
✅ ❌ ❌ ❌

Разрешения

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

Тип разрешения Разрешения с наименьшим объемом привилегий Разрешения с более высоким уровнем привилегий
Делегированные (рабочая или учебная учетная запись) Notifications.ReadWrite.CreatedByApp Недоступно.
Делегированные (личная учетная запись Майкрософт) Notifications.ReadWrite.CreatedByApp Недоступно.
Для приложений Не поддерживается. Не поддерживается.

HTTP-запрос

POST /me/notifications/

Заголовки запросов

Имя Описание
Авторизация Заголовок авторизации используется для передачи учетных данных вызывающей стороны. Bearer {token}. Обязательно.
X-UNS-ID UserNotificationSubscriptionId, который возвращается службой уведомлений Microsoft Graph после создания подписки и используется для назначения определенному пользователю. Обязательно.
Content-Type application/json. Обязательно.

Текст запроса

В тексте запроса укажите JSON-представление объекта уведомления .

Отклик

В случае успеха этот метод возвращает 201 Created код ответа, указывающий, что уведомление было успешно создано и сохранено. Затем уведомление разослано на все указанные конечные точки с действительной подпиской.

В следующей таблице перечислены возможные коды ошибок и ответов, которые можно вернуть.

Код ошибки Описание
HttpStatusCode.BadRequest Текст — массив (несколько уведомлений не поддерживаются).
HttpStatusCode.BadRequest Body не соответствует контракту для API.
HttpStatusCode.Forbidden Вызывающая сторона находится в списке заблокированных.
HttpStatusCode.MethodNotAllowed Используемый метод HTTP не поддерживается.
HttpStatusCode.BadRequest В запросе присутствуют неподдерживаемые заголовки. Два заголовка не поддерживаются:

if-modified-since
If-Range
HttpStatusCode.UnsupportedMediaType Заголовок Content-Encoding присутствует и имеет значения алгоритма сжатия, отличные от Deflate или Gzip.
HttpStatusCode.BadRequest Недопустимые полезные данные.
HttpStatusCode.Forbidden Вызывающая сторона не имеет права действовать от имени пользователя или отправлять пользователю уведомления.
HttpStatusCode.Unauthorized Текст запроса содержит недопустимые типы данных о действиях.
HttpStatusCode.OK Действие успешно создано.
HttpStatusCode.NotAcceptable Запрос отрегулирован или сервер занят.

Пример

Запрос

Ниже показан пример запроса.

POST https://graph.microsoft.com/beta/me/notifications/
Content-type: application/json

{
    "targetHostName": "graphnotifications.sample.windows.com",
    "appNotificationId": "testDirectToastNotification",
    "expirationDateTime": "2019-10-30T23:59:00.000Z",
    "payload": {
        "visualContent": {
            "title": "Hello World!",
            "body": "Notifications are Great!"
        }
    },
    "targetPolicy": {
        "platformTypes": [
	"windows",
	"ios",
	"android"
        ]
	},
    "priority": "High",
    "groupName": "TestGroup",
    "displayTimeToLive": "60"
}

Отклик

В следующем примере показан соответствующий ответ.

HTTP/1.1 201
client-request-id: 71e62feb-8d72-4912-8b2c-4cee9d89e781
content-length: 356
content-type: application/json
location: https://graph.microsoft.com/beta/me/activities/119081f2-f19d-4fa8-817c-7e01092c0f7d
request-id: 71e62feb-8d72-4912-8b2c-4cee9d89e781

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('graphnotify%40contoso.com')/notifications/$entity",
    "displayTimeToLive": 59,
    "expirationDateTime": "2019-10-28T22:05:36.25Z",
    "groupName": "TestGroup",
    "id": "119081f2-f19d-4fa8-817c-7e01092c0f7d",
    "priority": "High",
    "payload": {
        "visualContent": {
            "title": "Hello World!",
            "body": "Notifications are Great!"
        }
    }
}