Slack slash-zespół przez bramę API AWS AWS Lambda (Python vs Java)

0

Pytanie

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.

amazon-web-services
2021-11-24 01:37:03
1

Najlepsza odpowiedź

0

Ja rozwiązałem problem, przełączając się na korzystanie przykład HandlerStream. Następnie mogę dostać "ciało" zdarzenia, Base64.decodeBase64, a następnie rozpakować opcje formularza za pomocą UriParameterMap.parse.

Następnie taktuję przychodzący tekst, uzyskany za pomocą polecenia Slack slash, a następnie zwracam ciąg znaków JSON, który czeka na Slack.

2021-12-05 17:48:35

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................