Snažím se připojit Slack slash-příkaz k AWS Lambda (prostřednictvím AWS API Gateway).
Byl jsem schopen se přizpůsobit Hello, World blueprint (napsaný v Pythonu) v Lambda tutorial sekce. Jsem nastavit API brána jako spoušť, pak měl Slack PSÁT slash-příkaz k API endpoint. Musel jsem ručně dekódovat base64 těla, pak použijte parse_qs převést řetězec dotazu-jako PŘÍSPĚVEK subjektu do slovníku, kde bych mohl pak přístup je v pořádku.
Mé skutečné Lambda kód je v současné době v Javě, ale začal jsem s java-základní ukázka aplikace od Vývojářů Průvodce. Postavil jsem aplikaci, nahrál jar, a potvrdil správnou handler byl nazýván. Založil jsem další API gateway a ukázal jiný Slack slash-příkaz na nový endpoin. To se nezdaří.
Log vypadá takto:
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]
Hádám, že tohle znamená, Slack posílá stejný dotaz string jako argument ve funkci těla, a z nějakého důvodu, něco očekává JSON vstup, ne jen text. Nechápu, proč Python kontakt byl v pořádku s budování událost, slovník a dělat Lambda dekódovat POST tělo, vzhledem k tomu, že Java handler se nikdy dostat volal, ale umírá dříve, než to, když se pokoušejí rekonstruovat PO těle, myslel, že je to JSON.
Obě Lambdy a API brány byly zřízeny s obvyklým výchozí, AFAICT.