Próbuję podłączyć polecenie Slack slash do AWS Lambda (przez bramę API AWS).
Jestem w stanie dostosować schemat "Witaj świecie" (napisany w Pythonie) w dziale "Poradnik dla sondy Lambda". Ustawiłem bramę API jako wyzwalacz, a następnie poprosił Slack WYSŁAĆ polecenie slash w końcowy API. Musiałem ręcznie dekodować ciało base64, a następnie użyć parse_qs do tekstu wiadomości, podobnego do znaków zapytania, w słowniku, gdzie mógłbym uzyskać do niego dostęp po prostu świetnie.
Mój prawdziwy lambda kod obecnie znajduje się na Javie, ale zacząłem od przykładu aplikacje java-basic z Instrukcji dla programistów. Stworzyłem aplikację, przesłane do banku i potwierdził, że wywoływana jest odpowiedni procesor. Ustawiłem inny brama API i wskazał inną drużynę Slack slash w nowej punktu końcowego. To nie można.
Historia wygląda tak:
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (ByteArrayInputStream); line: 1, column: 1]
Zakładam, że to oznacza, że Slack wysyła jeden i ten sam argument, jak ciąg kwerendy, w treści WIADOMOŚCI, i z jakiegoś powodu coś czeka wprowadzania JSON, a nie tylko tekstu. Nie rozumiem, dlaczego obsługi Python zgodził się z tworzeniem słownika wydarzeń i użyciu sondy lambda-kod do dekodowania treści WIADOMOŚCI, podczas gdy program obsługi Java nigdy nie jest wywoływana, ale umiera do tego podczas deserializacji ciała WIADOMOŚCI, myśląc, że to JSON.
Jak lambda, tak i bramy API zostały skonfigurowane z tradycyjnymi wartościami domyślnymi AFAICT.