{"id":16750131,"url":"https://github.com/alexferl/slack-command-proxy","last_synced_at":"2025-10-03T15:31:25.299Z","repository":{"id":83557192,"uuid":"261337751","full_name":"alexferl/slack-command-proxy","owner":"alexferl","description":"A Cloud Functions proxy for Slack slash commands that does request validation and publishes the payload to Cloud Pub/Sub.","archived":false,"fork":false,"pushed_at":"2020-06-04T20:01:17.000Z","size":19,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-22T02:35:05.474Z","etag":null,"topics":["gcp-cloud-functions","gcp-pubsub","slack","slack-slash-command","slack-slash-commands"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexferl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-05T01:49:07.000Z","updated_at":"2020-06-09T12:27:59.000Z","dependencies_parsed_at":"2023-07-07T19:15:41.798Z","dependency_job_id":null,"html_url":"https://github.com/alexferl/slack-command-proxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexferl%2Fslack-command-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexferl%2Fslack-command-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexferl%2Fslack-command-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexferl%2Fslack-command-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexferl","download_url":"https://codeload.github.com/alexferl/slack-command-proxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235152071,"owners_count":18944165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gcp-cloud-functions","gcp-pubsub","slack","slack-slash-command","slack-slash-commands"],"created_at":"2024-10-13T02:27:11.095Z","updated_at":"2025-10-03T15:31:20.035Z","avatar_url":"https://github.com/alexferl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack Command Proxy\n\nA proxy for Slack [slash commands](https://api.slack.com/interactivity/slash-commands) that does \n[request validation](https://api.slack.com/authentication/verifying-requests-from-slack) and publishes the payload to\n[Cloud Pub/Sub](https://cloud.google.com/pubsub).\n\n## Using\n```shell script\ngit clone https://github.com/admiralobvious/slack-command-proxy\ncd slack-command-proxy\n```\n\n1. Modify `config.json` with your own settings.\n\n2. Create a Pub/Sub topic following this pattern:\n```shell script\ngcloud pubsub topics create slack-command-proxy-myteam-mycommand\n```\n\n3. Deploy Slack Command Proxy:\n```shell script\ngcloud functions deploy SlackCommandProxy --runtime go113 --trigger-http --set-env-vars \"GCP_PROJECT=your-project-id\" --allow-unauthenticated\n```\n\n## Why\n- You work in an environment with more than one slash command\n- You're already hosting your slash commands on GCP\n- Your slash commands are implemented in more than one programming language\n- Your slash commands are usually simple enough that you don't want to bundle a full-fledged Slack API library in your \ncode just to do request validation\n- Some of your slash commands may be written by less experienced (or who aren't primarily) developers and you'd rather \nthey don't have to deal with request validation\n- You don't wanna have to add a new service, open incoming ports and so on every time you add a new slash command\n- You want the incoming requests to have a persistence layer\n\n## Credits\n[GCP Go Samples - functions](https://github.com/GoogleCloudPlatform/golang-samples/tree/9ca9b3f27ce69c46685ea66c70acc8a44815c56a/functions/slack)\n\n[GCP Go Samples - pubsub](https://github.com/GoogleCloudPlatform/golang-samples/tree/9ca9b3f27ce69c46685ea66c70acc8a44815c56a/pubsub)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexferl%2Fslack-command-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexferl%2Fslack-command-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexferl%2Fslack-command-proxy/lists"}