#azure #asp.net-core #notifications #httprequest #webhooks
Вопрос:
Я работал над решением для обеспечения качества аудио-и видеосвязи всех команд в компании.
В Runtime-Ecxceptions я использую старую версию, в которой создаются видео. более старые источники, которые должны быть решены позже, но это не должно быть причиной для получения только некоторых уведомлений, а не всех.
Я попытался получить записи вызовов с помощью уведомления об изменении, и это частично сработало, но я получаю не все уведомления, а обработчик конечной точки работает более половины дня (12, 14 или 16 часов, я думаю).
Если я правильно понимаю. Доступ ко всем аудио-/видеовызовам облачной связи осуществлялся с помощью https://graph.microsoft.com/beta/communications/callRecords/ Если запись вызова относится к типу собрания, то задан параметр joinWebURL, который необходимо добавить в предложение filter-для получения соответствующего собрания.
- Все онлайн-встречи отсутствуют
- некоторые групповые вызовы прямая маршрутизация вызовов
- и PSTN-звонки, которые я не проверял.
Моя созданная подписка:
{
"changeType": "created,updated",
"notificationUrl": "https://a283-178-27-237-107.ngrok.io/api/notifications",
"resource": "/communications/callRecords",
"expirationDateTime": "2021-08-29T11:00:00.0000000Z"
}
Я брал на себя каждое создание или продление подписки за максимальное время 4230, но я пробовал это с помощью кратковременного продолжения и периодически продлевал подписку.
Мои настройки в зарегистрированном приложении
// add permissions to registered app
CallRecord-PstnCalls.Read.All
CallRecords.Read.All
Calls.AccessMedia.All
Directory.Read.All
OnlineMeetings.Read.All
OnlineMeetings.ReadWrite.All
Reports.Read.All
User.Read.All
(OnlineMeetings is only a short time added)
Я установил политику доступа к приложениям для этого приложения с помощью powershell.
Затем я попытался получить записи вызовов через Историю записей вызовов Центра администрирования команд. Но идентификатор там работал с пользователем, который создал встречу или звонок.
Я получил запрещенные сообщения, недопустимый токен… так что, похоже, приложение работает с разрешением delgate, но я установил разрешение приложения.Это могло бы прояснить, почему я не могу вызывать все записи.если я создал подписку на приложение, в котором есть appermision, веб-книга должна звонить по любому вызову.
Так что есть 2 большие проблемы:
- Почему не все уведомления отправляются?
- Как я могу получить действительный маркер доступа, который работает с разрешениями приложения, а не с разрешениями делегирования?
Обновление: Теперь, похоже, я получаю все уведомления, пункты 1 и 2 или несоответствующие? не используйте доступ почтальона к подпискам, я не получаю действительного токена для почтальона, что бы я ни пробовал (аутентификация Oauth2, копирующая токен из обработчика notificationurl), похоже, это действие политики доступа applicatiobn. У кого-нибудь есть решение для этого?
Обновление 15.09.2021:
Записи вызовов, похоже, работают нормально, произошла ошибка в среде почтальона. Я проигнорировал другие руководства и последовал инструкциям, чтобы использовать для этого postman от Microsoft (см. https://docs.microsoft.com/de-de/graph/use-postman). Создание подписки с разрешением приложения, и, похоже, я получаю все уведомления.
Так что получение всех уведомлений, похоже, работает. Так что я закрою его сейчас.
Комментарии:
1. Я не получаю никаких указаний на использование Postman с момента активации правила доступа к приложению , единственный способ, который я нашел, — это создать инструмент aopi для графов с теми же процедурами аутентификации, что и обработчик уведомлений. Но если есть способ аутентифицировать почтальона для работы с такими приложениями, я был бы признателен.
Ответ №1:
Записи вызовов, похоже, работают нормально, произошла ошибка в среде почтальона. Я проигнорировал другие руководства и последовал инструкциям, чтобы использовать для этого postman от Microsoft (см. https://docs.microsoft.com/de-de/graph/use-postman). Создание подписки с разрешением приложения, и, похоже, я получаю все уведомления.
Так что получение всех уведомлений, похоже, работает. Так что я мог бы вообще закрыть его, потому что по поводу вопроса в этом контексте нужны собственные вопросы.
Контрольная проверка, получаю ли я все уведомления, — это открытая точка по этому вопросу. Поэтому я жду несколько дней, если ответа нет, я закрываю этот вопрос.