我正在开发一个原型,使用Smartsheets webhooks在发生更改时通知ASP.Net/WebApi端点。虽然我理解这些概念,但我无法找到Smartsheets将传递给回调端点的结构的具体示例。
我怀疑它是一个Json字符串,我应该能够在控制器方法中定义一个字符串参数来接受它:
public HttpStatusCodeResult Put([FromBody]string payload)
{ ... }
但我不清楚应该命名的参数是什么(或者即使它的名称是什么也很重要)。
有人可以提供:
答案 0 :(得分:1)
我终于想到了这一个。我使用Json响应结构在C#中创建了一个类似的类,然后将该结构用作传入参数类型:
public class Payload
{
public int PayloadId { get; set; }
public Guid Nonce { get; set; }
public string Timestamp { get; set; }
public string WebhookId { get; set; }
public string Scope { get; set; }
public string ScopeObjectId { get; set; }
public virtual List<PayloadEvent> Events { get; set; }
}
public class PayloadEvent
{
public int PayloadEventId { get; set; }
public string ObjectType { get; set; }
public string EventType { get; set; }
[JsonProperty(PropertyName = "Id")]
public string EventId { get; set; }
public string UserId { get; set; }
public string Timestamp { get; set; }
}
控制器代码:
[HttpPost]
public void Post([FromBody] Payload value)
{
...
}
也可以只使用 dynamic 作为参数类型,但是没有利用下游的任何编译器检查,所以我通过定义类来选择更多结构。
答案 1 :(得分:0)
我可以帮助解决Webhook回调的结构问题。在您{h} create和verify之后,活动将按以下格式发布到您的callback终端:
{
"nonce": "4b2ed20d-6f00-4b0c-8fac-082182aa9aac",
"timestamp": "2015-10-27T17:04:23.795+0000",
"webhookId": 4503604829677444,
"scope": "sheet",
"scopeObjectId": 4509506114742148,
"events": [
{
"objectType": "sheet",
"eventType": "updated",
"id": 4509506114742148,
"userId": 9007194052434043,
"timestamp": "2015-10-27T17:03:15.000+0000"
},
{
"objectType": "row",
"eventType": "created",
"id": 7129509179746180,
"userId": 9007194052434043,
"timestamp": "2015-10-27T17:03:15.000+0000"
}
]
}
events数组将位于POST的主体中。