1

您好我正在寻找创建一个简单的 webhook 接收器并将数据转储到表中。

这是用于使用 Zipwhip 接收短信。Zipwhip 将发送带有 JSON 的帖子。

需要接收JSON并处理。

有什么简单的方法可以做到这一点。

提前致谢。

4

2 回答 2

1

ServiceStack中,您的回调只需要匹配您的响应 DTO 的形状,例如:

[Route("/path/to/callback")]
public class CorpNotes
{
    public int Departments { get; set; }

    public string Note { get; set; }

    public DateTime WeekEnding { get; set; }
}

// Example of OrmLite POCO Data Model 
public class MyTable {} 

public class MyServices : Service
{
    public object Any(CorpNotes request)
    {
        //... 
        Db.Insert(request.ConvertTo<MyTable>());
    }
}

示例使用Auto Mapping Utils填充您的 OrmLite POCO 数据模型,您可能希望在保存数据模型之前进行额外的处理。

如果回调可以在负载中发送任意 JSON 响应,您可以使用对象属性来接受任意 JSON,但是我们建议尽可能使用 Typed DTO。

于 2019-10-31T20:02:41.350 回答
0

这可能是您的控制器中的接收方法在接收端的样子。确保您的接收和发送 json 对象匹配。

    [HttpPost]
    [Route("Edit")]
    public JsonResult Edit([FromBody] CorpNotes newMessage)

        {return Json(TotalWeekNoteSearch);}

public class CorpNotes
{
    public int Departments { get; set; }

    public string Note { get; set; }

    public DateTime WeekEnding { get; set; }
}

我实际上正在开发一个从 Angular 前端接收 Json 的 .net 项目,所以这应该是相同的概念。还要确保您收到的是真正可行的对象,例如。

    {Departments: 4, Note: "This is notes 2020Q1W13", WeekEnding: "2020-01-25T00:00:00"}

还可以尝试查看这个对 webhook 有帮助的示例。

public class MyWebHookHandler : WebHookHandler
{
    public MyWebHookHandler()
    {
        this.Receiver = "custom";
    }

    public override Task ExecuteAsync(string generator, WebHookHandlerContext context)
    {
        CustomNotifications notifications = context.GetDataOrDefault<CustomNotifications>();
        foreach (var notification in notifications.Notifications)
        {
            ...
        }
        return Task.FromResult(true);
    }
}

数据的类型通常是 JSON 或 HTML 表单数据,但如果需要,可以转换为更具体的类型。

于 2019-10-31T19:16:10.937 回答