Customize the timing of OBTP on your shared Webex devices.
Conventionally, you can configure the OBTP to show up 5 minutes before the meeting time at an organizational level (via. Webex Control Hub settings). However, this proof-of-concept application lets you set any custom value (in seconds) for the OBTP to appear, that too at a device level. For example:
Your organization has a shared Webex device in a large conference room. You find that 5 minutes isn't sufficient for your team to settle in and start the meeting. With this PoC, you can configure the OBTP to appear 30 minutes before the meeting start time on that specific device. This ensures everyone has ample time to join and prepare for the meeting, resulting in a smoother and more efficient start.
The target audience for this PoC are individuals or teams who want to have greater control over the timing of the OBTP. This PoC support any type of room booking, regardless of what platform (Webex, Google Meet, Microsoft Teams, Zoom) they are tied to.
At it's core, the application is a collection of background processes that run on a predefined schedule.
These processes, collectively, retrieve a user's calendar events and create corresponding bookings for those on devices that are mapped to the user.
The front end serves as a way to "map" or "unmap" calendar accounts to shared devices. All bookings are done via a bot account that has admin privileges to the shared devices (on Webex Control Hub).
These instructions assume that you have:
- Administrator access to an Azure AD Tenant and Webex Control Hub.
- Set the target devices as shared devices.
- Docker installed and running on a Windows (via WSL2), macOS, or Linux machine.
Open a new terminal window and follow the instructions below to setup the project locally for development/demo.
-
Clone this repository and change directory:
git clone https://github.com/WXSD-Sales/early-one-button-to-push && cd early-one-button-to-push
-
Copy
.env.example
file as.env
(you may also change the database credentials within this new file):cp .env.example .env
-
Review and follow the Quickstart: Register an application with the Microsoft identity platform guide.
- Select the following Microsoft Graph API permissions:
API / Permissions name Type Description Calendars.Read Delegated Read user calendars email Delegated View users' email address offline_access Delegated Maintain access to data you have given it access to openid Delegated Sign users in profile Delegated View users' basic profile User.Read Delegated Sign in and read user profile - Use these Redirect URIs:
https://localhost/auth/azure/callback
http://localhost/auth/azure/callback
- Take note of your Azure Tenant ID,
Application ID and, Client Secret. Assign these values to the
AZURE_TENANT_ID
,AZURE_CLIENT_ID
, andAZURE_CLIENT_SECRET
environment variables within the.env
file respectively.
- Select the following Microsoft Graph API permissions:
-
Review and follow the Creating a Webex Bot guide to create a Webex Bot.
- Take note of your Bot ID and Bot access token. Assign these values to the
WEBEX_BOT_ID
andWEBEX_BOT_TOKEN
environment variables within the.env
file respectively. - You will also need to add this bot to all shared device that you wish to use. To do this, sign in to Webex Control Hub (admin.webex.com) > Workspaces > Your Workspace Name > Edit API Access > Search for your bot and grant 'Full Access'.
- Take note of your Bot ID and Bot access token. Assign these values to the
-
Install Composer dependencies for the application:
docker run --rm \ -u "$(id -u):$(id -g)" \ -v $(pwd):/var/www/html \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer install --ignore-platform-reqs
-
Start the Docker development environment via Laravel Sail:
./vendor/bin/sail up -d
-
Generate the application key:
./vendor/bin/sail php artisan key:generate
-
Initialize the database for the application:
./vendor/bin/sail php artisan migrate:fresh
-
Install NPM dependencies for the application:
./vendor/bin/sail npm install
-
Run Laravel Mix:
./vendor/bin/sail npm run dev
Lastly, navigate to http://localhost
in your browser to complete the setup by mapping devices
to calendar accounts. To stop, execute ./vendor/bin/sail down
on the terminal.
A video where I demo this PoC is available on Vidcast — https://app.vidcast.io/share/cef825db-f4e2-42b5-a686-25b5e14ea4e3 and Youtube — https://youtu.be/saAgLuW8qG4&t=60s.
Everything included in this repository is for demo and Proof of Concept (PoC) purposes only. Use of the PoC is solely at your own risk. This project may contain links to external content, which we do not warrant, endorse, or assume liability for. This project is for Cisco Webex use-case, but is not official Cisco Webex branded project.
Please reach out to the WXSD team at wxsd@external.cisco.com or contact me on Webex (ashessin@cisco.com).