【问题标题】:Setting up an HTTP endpoint for Azure EventGrid Webhook in my MVS Webapp?在我的 MVS Webapp 中为 Azure EventGrid Webhook 设置 HTTP 端点?
【发布时间】:2021-08-12 05:31:06
【问题描述】:

我正在尝试创建 Azure Eventgrid 和 Webhook 响应,以便将入站文本消息从 Azure 通信服务发送到我的 Azure 托管 WebApp。现在,我很难找到说明如何在 Webapp 控制器中创建端点以获取 Azure webhook 对握手和验证的响应的文档。我在我的控制器中创建了一个端点,我认为它应该捕获数据并在 POST 方法中处理它,但由于我试图模仿的参数而失败。感谢您对此主题的任何见解。

我尝试将我在这些文档中找到的许多内容集成到我的应用程序控制器中以尝试使其工作,但我认为我可能做错了,因为它说此代码用于 Azure 功能? ??我不完全确定它们是如何使用的,但我尝试将相同的 C# 代码集成到我的控制器中。请参阅以下文档: https://docs.microsoft.com/en-us/azure/event-grid/receive-events

这是我的控制器,它试图模仿我在链接的文档中读到的内容

        [HttpPost("incoming")]
    public async Task<IActionResult> GetFlightInfo([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest incoming,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        string response = string.Empty;
        BinaryData events = await BinaryData.FromStreamAsync(incoming.Body);
        log.LogInformation($"Received events: {events}");

        EventGridEvent[] egEvents = EventGridEvent.ParseMany(events);

        foreach (EventGridEvent eventGridEvent in egEvents)
        {
            // Handle system events
            if (eventGridEvent.TryGetSystemEventData(out object eventData))
            {
                // Handle the subscription validation event
                if (eventData is SubscriptionValidationEventData subscriptionValidationEventData)
                {
                    log.LogInformation($"Got SubscriptionValidation event data, validation code: {subscriptionValidationEventData.ValidationCode}, topic: {eventGridEvent.Topic}");
                    // Do any additional validation (as required) and then return back the below response

                    var responseData = new SubscriptionValidationResponse()
                    {
                        ValidationResponse = subscriptionValidationEventData.ValidationCode
                    };
                    return new OkObjectResult(responseData);
                }
            }
        }
                return new OkObjectResult(response);
    }

【问题讨论】:

标签: c# azure azure-functions azure-eventgrid azure-communication-services


【解决方案1】:

我建议首先根据Handle SMS events for Delivery Reports and Inbound Messages 教程部署和探索 Azure 事件网格查看器示例应用程序。 此应用程序旨在使用事件网格生成的任何事件,包括 SMS 事件。正如@roman-kiss 在他的answer 中所建议的那样,该应用利用SignalR 将事件近乎实时地推送给用户。

一旦您很好地掌握了整个流程,您就可以开始调整代码以匹配您的用例。一个好的第一步是调整deserialization logic 以利用更具体的模型。您可以获取 SMS 事件的示例 JSON 模型 here 并将其转换为 C#

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2016-01-14
    • 2019-02-06
    • 2019-05-24
    • 2022-12-14
    • 2021-01-09
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多