Let's get started!
We will be using the following technologies:
Python/Flask
Python/requests
Google Cloud SDK
Firebase Cloud Function
Slack Web API
Step 0: Slack Webhook URL
Get your Slack Custom Integration Web hook.
Navigate to https://YOUR_COMPANY.slack.com/apps/manage/custom-integrations
Click on Incoming Webhooks
Add configuration
Choose a channel and then press "Add Incoming WebHooks integration
Note down the Webhoook URL. This will be used in the Python script below
Step 1: Download Google Cloud CLI
Start off by downloading and installing the Google Cloud CLI https://cloud.google.com/sdk/docs/#install_the_latest_cloud_tools_version_cloudsdk_current_version
Follow the instructions to install and setup your environment.
Make sure you run gcloud auth login to authenticate your terminal with Google.
Step 2: Writing the Python Code
In your project folder, create a new directory called functions
and create all the needed files and folders.
mkdir functions
cd functions
mkdir dingdong
cd dingdong
touch main.py
touch requirements.py
Open up requirements.txt in your favourite editor and add the following dependencies. I use nano, so for me the command would be nano requirements.txt
:
CacheControl==0.12.5
cachetools==2.1.0
certifi==2018.10.15
chardet==3.0.4
Click==7.0
docopt==0.4.0
enum34==1.1.6
firebase-admin==2.13.0
Flask==1.0.2
google-api-core==1.5.0
google-auth==1.5.1
google-cloud-core==0.28.1
google-cloud-firestore==0.30.0
google-cloud-storage==1.13.0
google-resumable-media==0.3.1
googleapis-common-protos==1.5.3
idna==2.7
itsdangerous==1.1.0
Jinja2==2.10
mailchimp==2.0.9
MarkupSafe==1.0
msgpack==0.5.6
protobuf==3.6.1
pyasn1==0.4.4
pyasn1-modules==0.2.2
pytz==2018.5
requests==2.20.0
rsa==4.0
six==1.11.0
urllib3==1.24
Werkzeug==0.14.1
Open up main.py in your favourite editor and lets start adding the actual code.
Pythonimport flask
import json
import requests
SLACK_URL = 'ENTER YOUR SLACK URL'
def create_slack_message(request):
message = request.form.get('message')
payload = {
'username': 'DING DONG',
'icon_emoji': ':ghost:',
'text': 'Ding Dong! Kindly open the door. "{}"'.format(message)
}
r = requests.post(SLACK_URL, json.dumps(payload))
return 'Thank You! One of my colleagues will open the door shortly!', 200
def render_form():
return """
<html>
<form method="post">
<input
style="width: 100%" type="text" name="message"
placeholder="Please enter a message"
/>
<input
style="width: 100%; margin-top:40px;"
type="submit" value="Ding Dong!"
>
</form>
</html>
"""
def dingdong(request):
if request.path == '/' or request.path == '':
if request.method == 'POST':
return create_slack_message(request)
else:
return render_form(), 200
return 'URL not found', 404
❕ Make sure you replace the SLACK_URLvariable with your Slack Webhook URL
Step 3: Creating a Firebase App
Go to console.firebase.google.com and create a firebase app Once you've created an app move back to your console and while standing in the functionsdirectory, execute the following command:
gcloud beta functions deploy dingdong - runtime python37 - trigger-http - project YOUR_FIREBASE_PROJECT_NAME
❕ Make sure to change YOUR_FIREBASE_PROJEcT_NAME with your actual firebase project name.
After the deployment is complete, the terminal will show you your https trigger url. It should be something like:
https://us-central1-YOUR_PROJECT_NAME.cloudfunctions.net/dingdong
Step 4: Generating a QR Code 🤳🏼
Paste your Cloud Function url
Press "Create QR Code"
Download and Print your QR Code
Edit:
There are several other QR Generators as well. I recently got "Free QR Code Generator" recommended by Fabiola Castro.
Thats it, folks! If you have any questions or thoughts, please feel free to reach out to us either by email or our Instagram!