我不确定我是否正确使用了callbackUrl,或者视频索引器服务中的回调逻辑是否有问题。此回调专门针对您向索引服务提交(上传)视频时使用。
以下代码段工作并生成对服务的http POST请求,服务成功导入视频并对其进行处理。然而,当它完成时,回调post主体是空的。
我要发送到的端点定义:
https://api.videoindexer.ai/{location}/Accounts/{accountId}/Videos?name={name}[&privacy][&priority][&description][&partition][&externalId][&externalUrl][&callbackUrl][&metadata][&language][&videoUrl][&fileName][&indexingPreset][&streamingPreset][&linguisticModelId][&personModelId][&animationModelId][&sendSuccessEmail][&assetId][&brandsCategories][&accessToken]发布请求的应用程序(此代码正在运行)
Config.ApiKey.Remove("Ocp-Apim-Subscription-Key");
VideosApi videosApi = new VideosApi(Config);
string callbackUrl = $"{FunctionApiEndpoint}/api/VideoIndexStatus?Code={FunctionApiCode}&clientId={FunctionApiClientId}";
ApiResponse<dynamic> result = await videosApi.UploadVideoAsyncWithHttpInfo($"Snag1 - {DateTime.UtcNow.Ticks}",
Location,
AccountId,
privacy: "private",
accessToken: Token.Data.Content.ToString().Replace("\"", ""),
description: $"Test Video Segment - {DateTime.UtcNow.Ticks}",
fileName: "Snag1.MP4",
callbackUrl: callbackUrl,
videoUrl: "https://mystorage.blob.core.windows.net/testmedia/Snag1.MP4",
xMsClientRequestId: MsClientId);
Console.WriteLine(result.Data.Content);函数App / Webhook (此代码正在运行)
[FunctionName("VideoIndexStatusRun")]
[return: ServiceBus("servicebus.queue.dev", Connection = "AzureWebJobsServiceBus", EntityType = EntityType.Queue)]
public async Task<IActionResult> VideoIndexStatusRun(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "VideoIndexStatus")] HttpRequest req,
ILogger log,
ExecutionContext context)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string postdata = await new StreamReader(req.Body).ReadToEndAsync();
log.LogInformation($"Postdata='{postdata}' | Postdata.Length='{postdata.Length}'");
return new OkObjectResult(postdata);
}一旦媒体被处理并在门户"https://www.videoindexer.ai/media/library“中完成媒体分析,它就会向我的函数应用程序发送一条post消息。但是,postdata是一个空字符串"“,长度= 0。
我正在使用Application Insights检查我的函数应用程序中发生了什么,我可以在来自videoindexer.ai服务的回调事件之后在app Insights中看到发布的消息"Postdata='‘| Postdata.Length='0'“。
发布于 2021-07-10 06:48:28
在发布这个问题后不久,我意识到答案是什么,并希望能帮助其他人,比如我,我意识到回调过程并不是发布“正文消息”,而是在URL查询字符串中返回它。
(我需要更好地阅读文档...)
因此,我应该像下面这样编写函数应用程序的webhook方法:
[FunctionName("VideoIndexStatusRun")]
[return: ServiceBus("servicebus.queue.dev", Connection = "AzureWebJobsServiceBus", EntityType = EntityType.Queue)]
public async Task<IActionResult> VideoIndexStatusRun(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "VideoIndexStatus")] HttpRequest req,
ILogger log,
ExecutionContext context)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string message = $"{{\"id\":\"{req.Query["id"]}\",\"state\":\"{req.Query["id"]}\"}}";
return new OkObjectResult(message);
}现在可以捕获来自查询字符串的返回值,并将其转发到我的消息处理器。
https://stackoverflow.com/questions/68323303
复制相似问题