系统应该实现一个生产者,当新客户注册或登录时,该生产者向代理发送消息。该消息应包含有关客户旅程的相关信息(例如,他们访问了哪个登陆页面,他们是否注册或登录,等等)。为此,我需要实现Azure Function HTTP触发器,其中我需要通知新的Azure AD B2C用户注册或登录到注册的应用程序(登录页)。
在这里,我添加了我的函数URL到注册的应用程序,但我不确定这应该如何工作,目的是当用户登录在这个登陆页面,例如,接收像我之前解释的一些关于用户的数据在我的azure函数中的事件,创建我将发送的消息(这一部分涵盖)
我已经做了一个Azure功能的一般实现,主要情况是如何获取有关用户登录或注册的数据,之后我可以管理与下一个实现和如何访问数据,现在我不能从注册的应用程序(登录页)获得任何东西。我在本地运行这个登陆页面,所以我可以自己登录尝试,如果我得到一些数据,但仍然没有来。下面是Azure函数的实现:
public class MessageBrokerProducerFunction
{
private readonly IPublishEndpoint _publishEndpoint;
public MessageBrokerProducerFunction(IPublishEndpoint publishEndpoint)
{
_publishEndpoint = publishEndpoint;
}
[FunctionName("B2CCallbackFunction")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
//Access token
//string accessToken = data.access_token;
var responseMessage = string.IsNullOrEmpty(data)
? "This HTTP triggered function executed with empty response."
: $"This is the data from the request: {data}. This HTTP triggered function executed successfully.";
//Set the message according to the data from request
var message = new MessageCustomer(Guid.NewGuid(), data, data, data, data);
return new OkObjectResult(responseMessage);
}
private async Task PublishMessageToServiceBus(object message, ILogger logger, string sessionId)
{
try
{
await _publishEndpoint.Publish(message, context => context.SetSessionId(sessionId));
logger.LogInformation($"Message successfully published: {message}");
}
catch (Exception ex)
{
logger.LogError(ex, "Error occurred while publishing message to the Service Bus. Retrying after a delay.");
await Task.Delay(TimeSpan.FromSeconds(10));
await PublishMessageToServiceBus(message, logger, sessionId);
}
}
}
字符串
1条答案
按热度按时间ldfqzlk81#
您可以在注册或登录期间use Custom Policies to call a REST API,这可能是HTTP触发的Azure函数。
您还可以考虑通过在令牌发出之前挂钩到流中来使用API连接器,但请注意,这当前处于预览状态。