Пользовательская команда Slack с AWS API Gateway - 500_service_error

Я бы разработал специальную команду Slack, возвращающую ответ от лямбда-выражения Amazon через API Gateway. Все шло хорошо, и вдруг я не мог позвонить, не вернувшись

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

Через Curl статус ответа - «200», и я все еще правильно получаю json-ответ моей лямбды.

  • Есть ли у вас какие-нибудь представления о потенциальном происхождении этой ошибки?
  • Есть ли способ отлаживать пользовательское приложение для Slack?

Спасибо


person Vlad    schedule 17.08.2017    source источник


Ответы (2)


Я обсуждал с командой Slack, которая может проверить для вас свои внутренние журналы:

«К сожалению, у нас пока нет доступной консоли отладки для разработчиков»

«Я могу подтвердить, что Slack получает ошибку сервера 500 при подключении к вашей конечной точке команды Slash. К сожалению, у меня действительно нет дополнительной информации с нашей стороны»

Настоящая проблема - это преобразование тела вызова из формы в json на уровне шлюза API. Slack отправляет тело формы, которое необходимо преобразовать в json для lamda. Я читал эту тему https://forums.aws.amazon.com/thread.jspa?messageID=673012&tstart=0#673012:

  • Но в зависимости от информации, которую отправлял Slack, он мог иногда прерываться с определенными символами параметров.
  • Я обновил шаблон AWS, чтобы исправить проблемы со шлюзом API https://gist.github.com/vpasquier/ecded1546c0b736ecf4a5670b4328269

В будущем будет хорошо иметь журналы функций Slack, иметь полезную нагрузку JSON вместо формы и в то же время напрямую включать журналы Cloudwatch для API Gateway, чтобы проверять случайные ошибки :)

Спасибо

person Vlad    schedule 19.08.2017
comment
Спасибо, что опубликовали решение, которое вы разработали для вашей конкретной проблемы со службой поддержки Slack. Но из-за отсутствия функции отладки в Slack единственной доступной на данный момент возможностью отладки является имитация запроса Slack к вашему приложению с помощью подхода, который я описал в своем ответе. - person Erik Kalkoken; 19.08.2017

Похоже на проблемы в вашем приложении. Если вы хотите протестировать свое приложение, вы можете просто имитировать POST-запрос, который Slack отправляет, когда вы вызываете команду.

Это можно сделать с помощью простой HTML-формы или, если вам нужно что-то более сложное, используйте https://www.hurl.it/ или почтальоном. Hurl - это веб-страница, а почтальон - это настольное приложение. Оба позволяют отправлять пользовательские запросы GET и POST на любой URL-адрес. Postman - более продвинутое решение, позволяющее проводить структурированное тестирование.

Ниже приведен пример POST-запроса от Slack для команд с косой чертой (из официальной документации). Очевидно, вы захотите отрегулировать его в соответствии с вашей конфигурацией.

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

К другой вашей точке. Если вам нужна конкретная помощь по вашей конкретной проблеме, вам необходимо опубликовать свой код.

person Erik Kalkoken    schedule 17.08.2017
comment
Или Curl тоже хорошо работает :) Я сейчас обсуждаю с командой Slack. Он работал при возврате строки. Я изменил несколько вещей в консоли конфигурации Slack для своего приложения, поэтому я опубликую здесь подробности решения вскоре после понимания. Спасибо за помощь. - person Vlad; 18.08.2017
comment
Мой ответ ниже, я тоже редактировал свой вопрос на случай, если он понадобится другим людям - person Vlad; 19.08.2017