处理来自Slack的发布请求

时间:2017-09-26 04:40:04

标签: c# slack slack-api

我已经设置了一个asp.net MVC Web应用程序来捕获发布请求。我已设置断点以查看正在传递的信息。单击交互式按钮时,会触发我的断点,但该对象没有详细信息。当我将鼠标悬停在value上时,它会简单地说{Object}。当我使用Postman并发送原始JSON主体时,它会显示JSON。请问我如何处理发送的松弛对象?

public void Post(object value)
{
    // breakpoint here
}

1 个答案:

答案 0 :(得分:3)

对于交互式消息,Slack发送标准POST请求,其中包含一个名为payload的表单数据编码参数。此参数包含实际请求的数据作为JSON字符串。

您可以使用以下参数使用Postman进行模拟:

  • 请求类型:POST
  • 标题:Content-Type: application/x-www-form-urlencoded
  • 正文:form-datakey = payloadvalue = JSON字符串。

因此,正如您所假设的那样,正文不是完全JSON,而是包含带有JSON编码字符串的表单参数。如果您相应地更改了应用程序,它将会起作用。

在c#中,您可以使用payload访问Request["payload"]参数的内容(请参阅this answer或详细信息)。

然后,您仍然需要将JSON字符串解码为对象。一种简单的方法是使用JavaScriptSerializer.Deserialize。 (有关详细信息和替代方法,请参阅this answer。)