使用AWS API Gateway进行自定义Slack命令 - 500_service_error

时间:2017-08-17 15:49:06

标签: aws-lambda aws-api-gateway slack slack-api

我正在开发一个自定义Slack命令,通过API网关从Amazon lambda返回响应。一切都运转良好突然间我无法回电

var circle = svg.selectAll('circle')
.data(dataSet)
.enter()
.append('circle')
.attr({
    r:function(d){ return d },
    cx:function(d, i){ return i * 100 + 50 },
    cy:50,
    fill: 'white',
    class:'circle_animation'
});

 @-webkit-keyframes input-shadow {
    0% {
        box-shadow: none;
    }
    50% {
        box-shadow: 0px 0px 26px #FFFFFF;
    }
    100% {
        box-shadow: none;
    }
  }

@keyframes input-shadow {
    0% {
        box-shadow: none;
    }
    50% {
        box-shadow: 0px 0px 26px #FFFFFF;
    }
    100% {
        box-shadow: none;
    }
 }
circle.circle_animation {
  __border-radius:100%;
  __width:100px;
  __height:100px;
  __background: white;
-webkit-animation:input-shadow ease-in-out 2s infinite; /* Chrome, Safari, Opera */
animation:input-shadow ease-in-out 2s infinite;

}

Via Curl,响应状态为'200',我仍然正确接收了我的lambda的json响应。

  • 你知道这个bug的潜在根源吗?
  • 有没有办法能够为Slack调试自定义应用程序?

由于

2 个答案:

答案 0 :(得分:1)

这听起来像是您应用中的问题。如果要测试应用程序,只需模拟Slack在调用命令时发送的POST请求。

可以使用简单的HTML表单完成,或者如果您想要更高级的内容,请使用https://www.hurl.it/postman。 Hurl是一个网页,邮递员是一个桌面应用程序。两者都允许您将自定义GET和POST请求发送到任何URL。 Postman是更先进的解决方案,允许进行结构化测试。

请参阅下文,了解来自Slack的斜杠命令的POST请求(来自offical documentatio)。显然,您需要调整它以适合您的配置。

token=gIkuvaNzQIHg97ATvDxqgjtO
team_id=T0001
team_domain=example
enterprise_id=E0001
enterprise_name=Globular%20Construct%20Inc
channel_id=C2147483705
channel_name=test
user_id=U2147483697
user_name=Steve
command=/weather
text=94070
response_url=https://hooks.slack.com/commands/1234/5678

到另一点。如果您希望具体帮助您解决具体问题,则需要发布您的代码。

答案 1 :(得分:1)

我与Slack团队讨论过,可以为您检查内部日志:

  

“遗憾的是,我们没有为开发人员提供的调试控制台   还没有“

     

“我可以确认Slack在收到500服务器错误时   连接到Slash命令端点。不幸的是我没有   真的有我们最后的信息“

真正的问题是在API网关级别将调用体从form转换为json。 Slack正在发送一个表单体,必须在json中为lamda进行转换。我正在关注这个帖子https://forums.aws.amazon.com/thread.jspa?messageID=673012&tstart=0#673012

将来很高兴拥有Slack功能的日志,拥有JSON有效负载而不是形式,同时直接启用API Gateway的Cloudwatch日志以检查随机错误:)

由于