您好,我一直在努力将重定向 url 注册到 Kaizal webhook(它来自 Microsoft 的聊天应用程序,就像一个 whatsapp),我创建了 asp.net API Controller 以在我的 Kaizala webhook 中注册它。我想要做的是,每当在 Kaizala Group 上创建消息或作业时,我的重定向 url 将捕获数据并将数据保存到我的数据库中。我想我已经满足了这里的所有要求 https://learn.microsoft.com/en-us/kaizala/connectors/webhookvalidaton ,我的 Get 方法已经从 Header 返回 validationToken。但是当我尝试注册我的重定向 URL 时它总是返回此错误 "message": "Callback URL couldn't be validated. StatusCode = InternalServerError",
.
https://kaizala007.blog/2017/12/30/exploring-kaizala-webhooks/comment-page-1/#comment-3776 从这个文档中,他说我需要同时支持 get 和 post 方法,已经添加了这两个方法,但我的 post 方法仍然没有做任何事情,只是返回状态码。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
namespace KaizalaTestApi.Controllers
{
public class KaizalaCallbackController : ApiController
{
// GET: KaizalaCallback
[HttpGet]
public string Get()
{
string x = Request.Headers.GetValues("validationToken").FirstOrDefault().ToString();
return x;
}
[HttpPost]
public HttpResponseMessage Post()
{
//string validationToken = Request.Headers.GetValues("validationToken").FirstOrDefault().ToString();
//string data = new StreamReader(Request.Content).ReadToEnd();
string str = Request.Content.ReadAsStringAsync().Result;
return Request.CreateResponse(HttpStatusCode.OK);
}
}
}
为什么我会收到那个错误?我需要在我的 post 方法中做任何特定的事情才能让它工作吗?
最佳答案
您返回 int
并不是它起作用的事实。
第一次尝试失败,调用时出错
Request.Headers.GetValues("validationToken").FirstOrDefault().ToString();
很可能是空引用异常,因为您试图访问 header 中的 token ,而链接文档指出
Kaizala will generate a validation token and send a GET request to your webhook with a query parameter “validationToken”.
强调我的
在更新使用中避免了
HttpContext.Request.Query["validationToken"]
我建议将语法更新为
[HttpGet]
public IActionResult Get() {
var validationToken = Request.Query["validationToken"];
return Content(validationToken);
}
当然,您可以重构为预期的查询字符串参数添加验证代码。
我提出以上建议是因为不能保证 token 将是基于文档的有效 int
。即使是这样,如果他们真的不再使用整数作为标记,这种方法也会更加灵活。
要求简单说明
Your service is supposed to return the validation token (received in request) in the response body as a plain-text
有了它,只准确返回发送的内容。不要尝试对其进行任何更改。
关于c# - 如何将重定向 URL 注册到 webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214079/