Команда Slack Slash получает 400_client_error от лямбды - PullRequest
0 голосов
/ 09 марта 2019

У меня была простая команда slack slash на heroku, которая работала нормально. Я переместил его в лямбду, но теперь он получает:

Darn - that slash command didn't work (error message: `400_client_error`). Manage the command at ?.

Ошибка не дает больше информации и не говорит о том, что не удалось.

Я могу поразить конечную точку с помощью curl, и она возвращает то, что мне кажется правильно отформатированным json:

curl -X POST \
  https://5hi90e8v8e.execute-api.us-east-2.amazonaws.com/Prod \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Postman-Token: eacb33ee-96ac-457e-a325-9fdc132f808e' \
  -H 'cache-control: no-cache'
{
    "text": "Have suggestions to improve this bot? Message <@UC8R7PA87>",
    "response_type": "in_channel"
}

Заголовки:

Date →Sat, 09 Mar 2019 01:12:02 GMT
Content-Type →application/json
Content-Length →922
Connection →keep-alive
x-amzn-RequestId →57cec19a-4208-11e9-924c-89367de80c6d
x-amz-apigw-id →WP_jLFWYiYcFiXg=
X-Amzn-Trace-Id →Root=1-5c8312e1-327ac177db85f799dcd267c1;Sampled=0

Ответ от моей старой конечной точки героку:

{
    "response_type": "in_channel",
    "text": "Have suggestions to improve this bot? Message <@UC8R7PA87>"
}

Заголовки:

Connection →keep-alive
Server →gunicorn/19.6.0
Date →Sat, 09 Mar 2019 01:01:36 GMT
Content-Type →application/json
Content-Length →946
Via →1.1 vegur

Любые идеи о том, как найти фактическую ошибку / как отладить?

1 Ответ

1 голос
/ 14 марта 2019

Возможно, проблема в AWS Gateway и как он преобразовывает запрос. Попробуйте использовать:

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  }
}

в запросе на интеграцию / шаблонах сопоставления / application / json для отладки.

...