如何在ASP.Net Core Mvc应用程序中验证Slack Events API请求网址?

时间:2018-09-28 13:15:13

标签: c# asp.net-core-mvc slack slack-api

我正在研究ASP.Net Core MVC 2应用程序中的Slack集成。

我已经完成了将消息搜索和发布到Slack频道的操作。现在,我被困在此应用程序中集成事件API。基本上,目前我无法按照此处Events API Subscription

的要求验证我的请求网址

以下是我们提供给Slack的我的操作方法,他们将向其中发送验证json对象,该对象将映射到我的操作的请求参数,如下所示:

{
"token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
"type": "url_verification"
}

[HttpPost]
    public IActionResult Event(EventsRequest request)
    {
        if (request != null)
        {
            if (request.type.Equals("url_verification"))
                return Content(request.challenge);
            else
                ViewBag.Challenge = request.challenge;
        }
        return View();
    }

这是我的EventsRequest类:

public class EventsRequest
{
    public string token { get; set; }
    public string challenge { get; set; }
    public string type { get; set; }
}

我已将此应用程序本地部署在IIS上,并应用了InBound规则以使其可以公开访问并且可以访问。但是,当我将以下URL提供给Slack进行验证时,就会出现问题:

  

http://IP_Address/Slack/Event

以下是Slack提供的响应的屏幕截图 enter image description here

有人可以告诉您这里出了什么问题吗?我试图用Postman来访问此URL,但是我能够获得预期的结果。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

  1. 根据https://api.slack.com/events-api#subscriptions的建议
  

在保存此表单之前,必须确认您的事件请求URL。如果   您的服务器需要一些时间才能“唤醒”,并且您最初尝试   URL验证由于超时而失败,请使用重试按钮   再次尝试验证。

如果第一次尝试失败,请确保服务器已启动并正在运行,然后再次尝试。

  1.   

    完成网址输入后,我们将分派HTTP POST到   您的请求网址。我们将验证您的SSL证书,并发送一封   application / json POST正文包含三个字段:

         

    { "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl", "challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P", "type": "url_verification" }

您需要将示例json替换为为您的url配置和验证生成的实际值。

请确保在生成挑战之前已正确设置了用于验证的网址,此后不会更改。

  1. 请确保一个地方的网址格式(例如http)和另一个地方的https不匹配。

尝试在帖子请求中添加正文:

[HttpPost]
public IActionResult Event([FromBody]EventsRequest request)