A Python app to serve Conveyor room requests and run approvals through Slack

Overview

CONVEYOR FOR SLACK

This is a friendly little Python app that will allow you to integrate your instance of Conveyor with your Slack workspace.

In order to make use of this, you will need an account with both Conveyor and Slack. Conveyor does not have a dev portal, but for Slack you will need to use their developer portal/API interface.

I built this using Bolt for Python, so most of the Slack interactions are handled by built in shortcuts. I used Flask as my server to handle the requests, as Bolt's built in server is really just meant for local testing and basic http. Other than that, the libraries involved are fairly simple and straightforward--requests, json, logging, etc. You can load those into your virtualenv from the requirements.txt in this repo.

This can do some basic but enjoyable things for you--

The main purpose of this tool is simply to push new room access requests into Slack, and allow people who are authorized Conveyor users to approve or reject those requests. This includes sourcing any special optional permissions group that you have, so different customers can be granted different permissions.

POV, u r using conveyor-for-slack and it is rad: image This is an example of what a room requests looks like when shared to Slack. It includes the email address of the person requesting, the timestamp, and whatever message they included with their request. The text at the top is a link to that specific request in Conveyor. Below, the privileges are pulled directly from the Conveyor API so that as our privileges change, so does the menu.

If you choose to accept the request, it is logged and the request goes through to the Conveyor API to be processed and the customer is granted access.

image If you choose to hit reject, a modal will pop up requesting a note about why. We chose to implement this so that anyone can answer questions about why a request was rejected without having to track down the original responder. This is not optional and must be filled out for the response to go through. This can easily be removed by pulling out the modal step in the @app.action("reject") section.

image Once the request has been processed and a 200 has been received from Conveyor, the original message in Slack is updated to reflect that the request was either approved or rejected, who did it, and when. Where applicable, the note is included. This is intended for transparency and self-service so that sales reps can search the Conveyor request channel and see whether or not their customer has had their request taken care of and what the response was.

To get this up and running,

you will need to:

  • get your Conveyor API key from your integrations menu
  • create a Slack app to install this to on your workspace in your Slack API apge
  • get your Slack signing secret and bot token from the API page
  • get your channel ID for where you want your app to post
  • set up a server either locally or in your infra
  • assign that URL to your Slack app in the interactions page
  • update the .env file with your assorted secrets

From there, you can pretty much start the up and be good to go. For my deployment at my company, mine is in a Docker container on Nomad, with Consul and some other fun frippery providing commuication with the outside world. So everything is orchestrated and all needed aspects are launched in the Dockerfile.

If you're running a local server, such as nginx, you'll need to start your nginx server on the correct port that you gave your Bolt/Flask app, and then run python3 app.py to launch the app.

I recommend going through and looking at some of the error messages. I had them custom tailored to me and my team, so when I changed them for mass consumption, they got a little sterile. Also, see if you want nearly as verbose of logging as I like to have.

Please fork the hell out of this, but...

Also please be aware that I will probably not ever look at any submitted PRs to this repo. I wrote this for my company to make my colleagues' lives easier, and also because I thought it was fun. I'll be maintaining it, and likely adding more features, within my professional GitHub organization, but updates will be ported over here only infrequently. This isn't to be an ass, just honesty. I'm not gonna think about it, and I don't want to leave you hanging. However, the great folks at Conveyor didn't have an API when I first wanted to do this, and they were amazing about being willing to spin something up to see what could happen. I would really love to see more companies and devs using their API. Their team was so great to work with, and I hope you will enjoy working with this too!

Owner
Vivienne
Security, Python, Node, all things back end. Hackbright Academy part-time SWE student, vulnerability management engineer full-time.
Vivienne
This is RequestTrackerBot and it used for tracking request made by user in a group

This is a Request Tracker Bot repo, It is for those who upload content like movies, anime, etc. It can be used for tracking request of content that your members asked for.

Abhijeet 27 Dec 29, 2022
A simple Telegram bot which handles images in whole different way

zeroimagebot thezeroimagebot 🌟 I Can Edit Dimension Of An image which is required by @stickers 🌟 I Can Extract Text From An Image 🌟 !!! New Updates

RAVEEN KUMAR 4 Jul 01, 2021
Track to Detect and Segment: An Online Multi-Object Tracker (CVPR 2021)

Track to Detect and Segment: An Online Multi-Object Tracker (CVPR 2021) Track to Detect and Segment: An Online Multi-Object Tracker Jialian Wu, Jiale

Jialian Wu 520 Dec 31, 2022
Nyon-stream - A python script that uses webtorrent to stream nyaa videos directly to mpv

nyon-stream A rather shitty script that uses webtorrent to stream nyaa videos di

18 Feb 08, 2022
A telegram bot to read RSS feeds

Telegram bot to fetch RSS feeds This is a telegram bot that fetches RSS feeds in regular intervals and send it to you. The feed sources can be added o

Santhosh Thottingal 14 Dec 15, 2022
A simple worker for OpenClubhouse to sync data.

OpenClubhouse-Worker This is a simple worker for OpenClubhouse to sync CH channel data.

100 Dec 17, 2022
Sukoshi is a proof-of-concept Python implant that leverages the MQTT protocol for C2 and uses AWS IoT Core as infrastructure.

Sukoshi | 少し Overview Sukoshi is a proof-of-concept Python implant that leverages the MQTT protocol for C2 and uses AWS IoT Core as infrastructure. It

Steven Patterson 37 Oct 29, 2022
📈 A Discord bot for displaying the download stats of a repository made with Python, the Hikari API and PostgreSQL.

📈 axyl-stats axyl-stats is a Discord bot made with Python (with the Hikari API wrapper) and PostgreSQL, used as a download counter for a GitHub repo.

Angelo-F 2 May 14, 2022
NewpaperNews-API - Json data of the news with python

NewsAPI API Documentation BASE_URL = "https://saurav.tech/NewsAPI/" top_headline

Aryaman Prakash 2 Sep 23, 2022
Get some python in google cloud functions

[NOTE]: This is a highly experimental (and proof of concept) library so do not expect all python packages to work flawlessly. Also, cloud functions ar

Martin Abelson Sahlen 200 Nov 24, 2022
Read manga from your favourites websites on telegram.

tg-manga-bot Read manga from your favourites websites on telegram. Current Development Bot @idkpythonbot Telegram Channel tg_manga_bot Commands start

Daniel Rivero 41 Dec 22, 2022
Predict the Site EUI, given the characteristics of the building and the weather data for the location of the building.

wids_datathon_2022 Description: Contains a data pipeline used to predict energy EUI Goals: Dataset exploration Automating the parameter fitting, gener

1 Mar 25, 2022
Unofficial Coinbase Python Library

Unofficial Coinbase Python Library Python Library for the Coinbase API for use with three legged oAuth2 and classic API key usage Version 0.3.0 Requir

George Sibble 104 Dec 01, 2022
Telegram Vc Video Player Bot

Telegram Video Player Bot Telegram bot project for streaming video on telegram video chat, powered by tgcalls and pyrogram Deploy to Heroku 👨‍🔧 The

Dihan Official 11 Dec 25, 2022
An API serving data on all creatures, monsters, materials, equipment, and treasure in The Legend of Zelda: Breath of the Wild

Hyrule Compendium API An API serving data on all creatures, monsters, materials, equipment, and treasure in The Legend of Zelda: Breath of the Wild. B

Aarav Borthakur 116 Dec 01, 2022
A telegram bot to forward messages automatically when they arrived.

Telegram Message Forwarder Bot A telegram bot, which can forward messages from channel, group or chat to another channel, group or chat automatically.

Adnan Ahmad 181 Jan 07, 2023
Send Informative, Concise Slack Notifications With Minimal Effort

slack-templates Send Informative, Concise Slack Notifications With Minimal Effort slack-templates Slack Integration Available Templates Usage Report t

9 Nov 03, 2022
A simple google translator telegram bot version 2

Translator-Bot-V2 A simple google translator telegram bot version 2 Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License

Fayas Noushad 15 Oct 21, 2022
A python library for building user interfaces in discord.

blurple.py A front-end framework for discord.py Blurple.py is a framework built on top of discord.py, giving you the tools you need to build discord b

4 Oct 25, 2021
A telegram to pyrogram json bot

Pyrogram-Json-Bot A telegram to pyrogram json bot Please fork this repository don't import code Made with Python3 (C) @FayasNoushad Copyright permissi

Fayas Noushad 11 Dec 20, 2022