Я пытаюсь отправить сообщение из функции Azure в службу Azure SignalR и возвращает 415, но не знаю, как определить причину проблемы.
У меня уже естьрабочая реализация для внешнего интерфейса приложения с пользователями и действиями, способными транслировать сообщения через службу SignalR, однако теперь мне нужна внутренняя функция для уведомления пользователей о завершении работы.
Пример, которому я следовал,один здесь;https://github.com/Microsoft/MTC_WhackAMole.NET/blob/master/MoleDeploy.SignalR/AzureSignalR.cs
При выполнении функции она успешно завершает функцию SendAsync (), но на самом деле ничего не вызывает.
var payload = new PayloadMessage()
{
Target = methodName,
Arguments = args
};
var url = $"{endpoint}/api/v1/hubs/{hubName}";
var bearer = GenerateJwtBearer(null, url, null, DateTime.UtcNow.AddMinutes(30), accessKey);
await PostJsonAsync(url, payload, bearer);
Только при попытке выполнить тот же запрос в Postman, что яполучить сообщение об ошибке 415.
В Почтальоне я отправляю по следующему адресу:
https://xxxxxx.service.signalr.net/api/v1/hubs/{hubName}
Используя токен аутентификации на предъявителя (который, я знаю, корректен, так как при его изменении генерируется 401 какприменяется к 415)
Он отправляет следующую полезную нагрузку;
{"Target":"hubFunctionName","Arguments":"message to broadcast"}
В чем я не совсем уверен, так это в опубликованном теле.Должна ли цель быть функцией в хабе, а аргументы - сообщением для отправки?
Если посмотреть на полезную нагрузку, отправляемую в PostJsonAsync (), то она выглядит как
payload {AzureFunctionName.AzureSignalR.PayloadMessage}
--Arguments {object[1]}
----[0] "message to broadcast"
--Target "hubFunctionName"
.функция в концентраторе является суперосновной;
public void Send(string messageText)
{
Clients.All.broadcastMessage(messageText);
}
Если кто-то может указать мне правильное направление с этим, это будет очень ценно.
Спасибо, Том