Нужен C# WebApi пример метода контроллера обратного вызова Smartsheet
Я работаю над прототипом для использования веб-соединений Smartsheets для уведомления конечной точки ASP.Net/WebApi о возникновении изменений. Хотя я понимаю концепции, я не смог найти конкретный пример структуры, которую Smartsheets будет передавать конечной точке обратного вызова.
Я подозреваю, что это строка Json и что я должен иметь возможность определить строковый параметр в методе контроллера, чтобы принять его следующим образом:
public HttpStatusCodeResult Put([FromBody]string payload)
{ ... }
но мне не ясно, какой параметр должен быть назван (или даже если он имеет значение, как он называется).
Может ли кто-нибудь предоставить:
- Пример метода контроллера обратного вызова Smartsheets webhook
- Разъяснение того, каким должен быть тип и имя параметра полезной нагрузки
2 ответа
Я наконец понял это. Я использовал структуру ответа 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)
{
...
}
Также возможно просто использовать динамический в качестве типа параметра, но он не использует никаких проверок компилятора вниз по течению, поэтому я выбрал дополнительную структуру, определив классы.
Я могу помочь со структурой обратного вызова 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.