2016-04-16 6 views
0

Ich versuche, Slack zu erweitern, indem ich eine Slack-App erstelle, die Slash-Befehle installiert, wenn die Slack-App vom Benutzer installiert wird. Wenn die Slash-Befehle von einem Slack-Chat-Benutzer ausgelöst werden, interagieren sie mit einem externen Webdienst, den ich zu entwickeln versuche.Slack Slash Befehle lösen GET-Anfrage ohne Abfrage aus parms

Gemäß den Slack-Dokumenten für Slash-Befehle (https://api.slack.com/slash-commands) wird jeder Slash-Befehl einen POST an den externen Dienst mit einem Satz von Parametern im POST-Körper auslösen, um unter anderem den Benutzer, den Slack-Kanal, etc anzuzeigen ., die die Anfrage ausgelöst hat.

Wenn ich den Web-Service gemacht Ich entwickle auf localhost zur Verfügung mit dem Internet über localtunnel (https://www.npmjs.com/package/localtunnel), localtunnel tatsächlich schafft einen virtuellen Server mit einem zufälligen Hostnamen auf localtunnel.me, zum Beispiel https://wkbtfodclm.localtunnel.me, die zu meinem localhost verbindet.

Wenn ich den Slash-Befehl in meinem Slack-Chat eintrage, sendet Slack erfolgreich eine POST-Anfrage an den Server localtunnel.me, der an meinen localhost weitergeleitet wird.

Allerdings, nachdem ich auf Heroku, die eine Domäne hat, z. B. https://example.com bereitstellen, stelle ich fest, dass der Slash-Befehl eine GET-Anfrage ohne Parameter an den Server auf Heroku sendet. Hat jemand das schon einmal erlebt?

+1

Ist es möglich, es ist die SSL-Prüfung? Siehe https://api.slack.com/slash-commands.ssl. Es sollte * ein * Parameter 'ssl_check = 1 'sein, aber basierend auf der Dokumentation würde ich erwarten, dass dies ein Abfrageparameter (Teil der URL) ist. Passt das zu dem, was Sie sehen? (Es kann hilfreich sein, die vollständige HTTP-Anfrage zu sehen, einschließlich der vollständigen URL und der Header.) – smarx

+0

Vielen Dank. Derzeit, wenn ich den Slash-Befehl auf Slack verwende, wird es den Slack-Server kontaktieren (wie erwartet), aber anstatt den externen Web-Service mit POST zu kontaktieren, kontaktiert Slack es mit GET, aber ohne Parameter usw. – nethsix

Antwort

0

Alles auf der Slack-Seite funktionierte wie erwartet. Wenn ich den Slash-Befehl verwende, kontaktiert Slack seinen Server, der dann einen POST an den externen Web-Service https://example.com (wie ich konfiguriert habe) mit allen Parametern durchführt. Der Webdienst (aufgrund der DNS-Einstellungen) leitet jedoch die Anforderungen https://example.com an https: // www .example.com um (HINWEIS: www). Dies führte dazu, dass der POST von Slack als GET ohne URL-Anfragen weitergeleitet wurde. Konfigurieren Sie den Slash-Befehl zur Verwendung https://www.example.com behoben.

Verwandte Themen