1

我正在尝试创建 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);
    }
4

1 回答 1

0

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

一旦你很好地掌握了整个流程,你就可以开始调整代码以匹配你的用例。一个好的第一步是调整反序列化逻辑以利用更具体的模型。您可以在此处获取 SMS 事件的示例 JSON 模型并将它们转换为C#

于 2021-12-09T13:03:48.610 回答