Нужен C # WebApi пример метода контроллера обратного вызова Smartsheet - PullRequest
0 голосов
/ 22 мая 2018

Я работаю над прототипом для использования веб-хуков Smartsheets для уведомления конечной точки ASP.Net/WebApi о возникновении изменений.Хотя я понимаю концепции, я не смог найти конкретный пример структуры, которую Smartsheets будет передавать конечной точке обратного вызова.

Я подозреваю, что это строка Json и что я должен иметь возможность определить строковый параметр в методе контроллера, чтобы принять его следующим образом:

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

, но я не совсем уверенкакой параметр должен быть назван (или даже если имеет значение, как он называется).

Может ли кто-нибудь предоставить:

  • Пример метода контроллера обратного вызова webhook Smartsheets
  • Разъяснение того, какой тип и имя параметра полезной нагрузки должны быть

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я наконец понял это.Я использовал структуру ответа 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 в качестве типа параметра, но он не использует никаких проверок компилятора в нисходящем направлении, поэтому я выбрал дополнительную структуру, определив классы.

0 голосов
/ 23 мая 2018

Я могу помочь со структурой обратного вызова 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"
    }
  ]
}

Событиямассив будет в теле POST.

...