{"id":31847938,"url":"https://github.com/wireapp/admin-broadcast","last_synced_at":"2025-10-12T09:58:41.863Z","repository":{"id":44574989,"uuid":"338270276","full_name":"wireapp/admin-broadcast","owner":"wireapp","description":"Admin messages broadcasts across the Wire","archived":false,"fork":false,"pushed_at":"2023-03-18T13:11:31.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"staging","last_synced_at":"2024-05-09T16:41:54.157Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/wireapp.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":"2021-02-12T09:11:13.000Z","updated_at":"2023-09-25T13:34:26.000Z","dependencies_parsed_at":"2022-09-21T03:14:45.034Z","dependency_job_id":null,"html_url":"https://github.com/wireapp/admin-broadcast","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/wireapp/admin-broadcast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Fadmin-broadcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Fadmin-broadcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Fadmin-broadcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Fadmin-broadcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wireapp","download_url":"https://codeload.github.com/wireapp/admin-broadcast/tar.gz/refs/heads/staging","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wireapp%2Fadmin-broadcast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010951,"owners_count":26084841,"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-12T02:00:06.719Z","response_time":53,"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":[],"created_at":"2025-10-12T09:58:38.469Z","updated_at":"2025-10-12T09:58:41.856Z","avatar_url":"https://github.com/wireapp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Admin Broadcast Bot\n\nThis bot allows administrator to broadcast messages on Wire - the administrator writes the message to this bot and the bot broadcast that message to every conversation the bot is in.\n\n## Development\n\nThe bot is based on the JavaScript runtime [Deno](https://deno.land/) and [Oak](https://github.com/oakserver/oak) middleware.\n\n## Configuration\n\nThe bot uses few environmental variables for its configuration, the usage is in the [code](app.ts).\n\n```bash\nROMAN_URL                 # Domain where the Roman is running. By default Wire Staging https://roman.integrations.zinfra.io/ \nAUTH_CONFIGURATION_PATH   # Path to a file with admin configurations.\nPORT                      # Port on where does the app run. By default 8080.\n```\n\n### Auth configuration\n\nThe JSON is necessary for bot to be able to authenticate with Roman and allow only certain users to broadcast the messages. The structure is following.\n\n```json\n{\n  \"service_authentication from Roman\": {\n    \"admins\": [\n      \"list of user IDs - these users can broadcast\"\n    ],\n    \"appKey\": \"app_key from Roman\"\n  }\n}\n```\n\nAs an example - if you received following JSON from Roman during bot onboarding process.\n\n```json\n{\n  \"service\": \"My Broadcast Service\",\n  \"service_code\": \"4e38c13f-7975-4cf4-8745-290ecdd0c25c:199b8704-0edb-4c0d-a8a0-94260fc3434d\",\n  \"service_authentication\": \"PeCVf7c_5CxhBlNPsuABqaiC\",\n  \"app_key\": \"eyJhbGcasdOiJIUzM4NCJ9..kjshdfi3MiOiJodHRwczovL3dpcmUuYakdjfhsdjkfhC00NTZkLWFjZDktYzAxZjE1MDExY2MyIn0.dixLJQGDJTS9yRfaslkdhalsd41GaSxgo4ObmzhYXANfXjmDzhmNKkJxqhBco\"\n}\n```\n\nSay you want to enable broadcasts for users with IDs `62253374-cdda-4901-a710-48c65a5a13c7` and `8538d838-c4b4-4781-a97f-d3b18f0d81ef`. Then your configuration JSON will be following:\n\n```json\n{\n  \"PeCVf7c_5CxhBlNPsuABqaiC\": {\n    \"admins\": [\n      \"62253374-cdda-4901-a710-48c65a5a13c7\",\n      \"8538d838-c4b4-4781-a97f-d3b18f0d81ef\"\n    ],\n    \"appKey\": \"eyJhbGcasdOiJIUzM4NCJ9..kjshdfi3MiOiJodHRwczovL3dpcmUuYakdjfhsdjkfhC00NTZkLWFjZDktYzAxZjE1MDExY2MyIn0.dixLJQGDJTS9yRfaslkdhalsd41GaSxgo4ObmzhYXANfXjmDzhmNKkJxqhBco\"\n  }\n}\n```\n\n## Deployment\n\nIn order to run the Admin Broadcast Bot you need following:\n\n- a public IP address / host name, where Roman can reach the bot\n- a machine where you can run the bot\n\nThere are basically two options, how to run the bot - either on bare metal, or in the Docker container.\n\n### On bare metal\n\nFor this to work, you need to install Deno runtime - [see official docs](https://deno.land/manual/getting_started/installation).\n\n1. Clone this git repository\n2. Create auth configuration JSON as described in the previous chapter - say in the same git folder with name `config.json`\n\n```bash\ntouch config.json\n# and fill it with required values   \n```\n\n3. Set necessary environment variables\n\n```bash\nexport AUTH_CONFIGURATION_PATH=\"${PWD}/config.json\"\nexport ROMAN_URL=\"https://proxy.services.wire.com/\" # or your own Roman instance\nexport PORT=\"8080\"\n```\n\n4. Execute the application\n\n```bash\ndeno run --allow-net --allow-env --allow-read app.ts\n```\n\n### Docker Container\n\n1. Clone this git repository\n2. Create auth configuration JSON as described in the previous chapter - say in the same git folder with name `config.json`\n\n```bash\ntouch config.json\n# and fill it with required values   \n```\n\n3. Build the docker image\n\n```bash\ndocker build -t admin-broadcast .\n```\n\n4. Run the container\n\n```bash\ndocker run \\ \n-v \"${PWD}/config.json:/app/config.json\" \\  \n-e AUTH_CONFIGURATION_PATH=\"/app/config.json\" \\  \n-e ROMAN_URL=\"https://proxy.services.wire.com/\" \\  # or your own Roman instance\n-e PORT=\"8080\" \\ \n-p 8080:8080 \\ \n--name admin-broadcast --rm admin-broadcast\n```\n\n### Bot Registration\n\nIn order to use the bot in Wire you need to complete one more additional step - to register the Bot in the Roman and Wire. The tutorial how to do that\nis [here](https://github.com/wireapp/roman/blob/staging/docs/onboarding.md) - please read [Roman README.md](https://github.com/wireapp/roman/) as well.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireapp%2Fadmin-broadcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwireapp%2Fadmin-broadcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwireapp%2Fadmin-broadcast/lists"}