2017-08-17 73 views
0

我会开发一个自定义的Slack命令,通过API网关从Amazon lambda返回响应。一切都运转良好时,突然我不能让任何呼叫,而无需返回使用AWS API网关的自定义冗余命令 - 500_service_error

'Darn - that slash command didn't work (error message: `500_service_error` 

通过卷曲,响应状态是“200”,我仍然在正确地接收到我的拉姆达的JSON响应。

  • 你知道这个bug的潜在来源吗?
  • 有什么办法可以调试Slack的自定义应用吗?

感谢

回答

1

我与松弛团队,可以检查内部日志您讨论:

“不幸的是,我们没有可供开发 调试控制台只是还没有”

“我可以确认,当 连接到您的斜线命令端点松弛收到500服务器错误。不幸的是,我不 真的从我们的终结”

的任何详细信息

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

有时打破

将来有一个Slack功能的日志,拥有JSON有效负载而不是窗体,同时可以直接启用API Gateway的Cloudwatch日志以检查随机错误:)

谢谢

+0

感谢您发布您与Slack支持团队解决您的具体问题的解决方案。但是在Slack中没有调试功能时,目前唯一可用的调试选项是使用我在答案中描述的方法来模拟对您的应用程序的Slack请求。 –

0

这听起来像是在你的应用的问题。如果你想测试你的应用程序,你可以模拟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 

给你的其他观点。如果您希望具体帮助您解决特定问题,则需要发布代码。

+0

或Curl工作得很好:)我正在与Slack团队讨论。它在返回字符串时正在工作。我在我的应用程序的Slack配置控制台中更改了一些内容,因此我将在理解后尽快发布解决方案的详细信息。感谢您的帮助。 – Vlad

+0

我的答案在下面,我也编辑了我的问题,以防其他人需要它 – Vlad