{"id":31923083,"url":"https://github.com/rocketchat/slack-compatibility-for-apps","last_synced_at":"2025-10-13T23:43:59.694Z","repository":{"id":43906397,"uuid":"247816165","full_name":"RocketChat/slack-compatibility-for-apps","owner":"RocketChat","description":"Initialize your Rocket.Chat App with bindings that makes it compatible your Slack implementation","archived":false,"fork":false,"pushed_at":"2022-12-30T21:37:37.000Z","size":279,"stargazers_count":5,"open_issues_count":7,"forks_count":1,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-05-01T11:29:38.590Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/RocketChat.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}},"created_at":"2020-03-16T21:04:18.000Z","updated_at":"2023-09-20T13:19:09.000Z","dependencies_parsed_at":"2023-01-31T17:00:45.572Z","dependency_job_id":null,"html_url":"https://github.com/RocketChat/slack-compatibility-for-apps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RocketChat/slack-compatibility-for-apps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2Fslack-compatibility-for-apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2Fslack-compatibility-for-apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2Fslack-compatibility-for-apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2Fslack-compatibility-for-apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RocketChat","download_url":"https://codeload.github.com/RocketChat/slack-compatibility-for-apps/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2Fslack-compatibility-for-apps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017232,"owners_count":26086016,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["hacktoberfest"],"created_at":"2025-10-13T23:43:55.630Z","updated_at":"2025-10-13T23:43:59.689Z","avatar_url":"https://github.com/RocketChat.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack Compatibility Layer for Rocket.Chat Apps\n\nInitialize your Rocket.Chat App with bindings that make it compatible with your Slack implementation.\n\nWould you like to have your app listed in [Rocket.Chat's Marketplace](https://rocket.chat/marketplace) but don't want to rewrite all the backend for your Slack listing?\n\nLook no further!\n\nThis \"compatibility layer\" will help you make your Rocket.Chat App talk to your backend in no time :)\n\nLearn more [in our docs](https://docs.rocket.chat/apps-development/slack-compatibility);\n\n## Some documentation about how to develop/extend scl\n\nThe moving parts of this scenario\n\n- slack app\n- slack workspace\n- slack slashcommand\n- rocket.chat app (extending the slack comp layer)\n- slack compatibility layer (scl, for short)\n- rocket.chat server\n\n## First part: rocket.chat app, scl and rocket.chat server\n\nIt is good to leave the app and slc in adjacent directories to make updates\neasier (see \"tips and tricks\").\n\nFirst, you install the scl in the rocket.chat app (can be any app, really) by\nrunning `npm install \u003cscl_directory_path\u003e` inside the app's directory. The\ninstallation process will generate a new `vendor` directory at the app's root\n(the magic happens there). Extend the app's main class with scl and we're good\nto go.\n\nHaving the scl installed in the app, you need to deploy it to your rc server.\nby running `rc-apps deploy --url \u003clocalhost_etc\u003e -u \u003cuser\u003e -p \u003cpwd\u003e`.\n\nThe scl will register a new endpoint in the app. We'll need the url later in\nthe slack app (requests will be pointed to this endpoint).\n\n```\nnpm install ../../slack-compatibility-for-apps;\nrc-apps deploy --url http://localhost:3000 -u thassio -p 123qweasd --update\n```\n\n## Second part: slack's app, workspace and slashcommand\n\nThe proper configuration of a slack app requires some tokens, but we will only\nneed an access token for now. It can be found in the apps's page at\n[the ok app](https://api.slack.com/apps/A014QAU2NQ0)\n\nWe will also need the rocket.chat app's url to configure the slack app\n\nPut the access token and the rc app's url in the `.env` file and run\n`npm run dev`. After that, run a reverse proxy app (can be ngrok) to capture\nan url to put on the slashcommands configuration. The app runs on port 5000 so\nthe command will likely be `ngrok http 5000`.\n\nThen go to *the ok app* and put the proxied url in its _slashcommand_\nconfiguration (or create a new slashcommand and then add the url, your choice).\n\n## Results\n\nWhen you run a slashcommand at slack, it will be sent to the _slack app_ using\nthe _proxied url_, then it will send a payload back to the _slack workspace_\nand to the _rocket.chat app's endpoint_. The payload should be rendered\ncorrectly at both messengers.\n\n\n## Tips and tricks\n\nWhen I update the scl, I usually go to the _rc app_ directory and run\n`npm install \u003cscl_directory_path\u003e; rc-apps deploy --url \u003clocalhost_etc\u003e -u \u003cuser\u003e -p \u003cpwd\u003e --update`.\nWay easier to do it in only one go.\n\nWhen extending the rc app's class wih the scl, do\n```\n[...]\nimport { SlackCompatibleApp as App } from './vendor/slack-compatible-layer/SlackCompatibleApp';\n\nexport class \u003cyour_app\u003e extends App {\n[...]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fslack-compatibility-for-apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocketchat%2Fslack-compatibility-for-apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fslack-compatibility-for-apps/lists"}