0

我正在开发一个原型,用于在发生更改时使用 Smartsheets webhook 通知 ASP.Net/WebApi 端点。虽然我了解这些概念,但我无法找到 Smartsheets 将传递给回调端点的结构的具体示例。

我怀疑它是一个 Json 字符串,我应该能够在控制器方法中定义一个字符串参数来接受它,如下所示:

public HttpStatusCodeResult Put([FromBody]string payload)
{ ... } 

但我不清楚参数应该命名什么(或者即使它的命名很重要)。

有人可以提供:

  • Smartsheets webhook 回调控制器方法的示例
  • 澄清负载参数类型和名称应该是什么
4

2 回答 2

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)
{
    ...
}

也可以只使用动态作为参数类型,但这没有利用下游的任何编译器检查,因此我通过定义类选择了更多结构。

于 2018-05-24T13:47:51.157 回答
0

我可以帮助 Webhook 回调的结构。创建并验证webhook后,事件将按以下格式发布到您的回调端点:

{
  "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 的正文中。

于 2018-05-23T20:46:55.400 回答