Skip to content

A "Trade Floor" application that can receive PSTN calls (Webex Connect) with custom IVR, and direct the caller to a Webex Meeting (by way of Webex Calling). Can also receive SIP calls from devices using a static dial string and direct them to the Webex Meeting as well.

License

Notifications You must be signed in to change notification settings

wxsd-sales/meeting-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meeting Manager

A "Trade Floor" application that can receive PSTN calls (Webex Connect) with custom IVR, and direct the caller to a Webex Meeting (by way of Webex Calling). Can receive SIP calls from devices using a static dial string and direct them to the Webex Meeting as well.

This project was developed to provide a couple of methods for audio users to join a Webex Meeting without using the native Webex Meeting clients, and without being prompted to enter meeting access codes, or host pins.

Vidcast Overview

Overview

The PSTN Flow:

  • Caller dials a Webex Connect number which triggers a Webex Connect Flow.
  • Webex Connect Flow collects DTMF input, and sends an HTTP POST with the caller number and entered digits to our server
  • Webex Connect Flow patches the call to Webex Calling Queue (empty)
  • Our server monitors the Webex Calling Queue using XSI
  • When a call enters the Queue that matches the POST we received from the Webex Connect Flow, we transfer the call to the Webex Meeting

The SIP Flow:

The Server:

  • Our python server.py is listening for POST requests from Webex Connect and the Cisco Expressway
  • Our python server.py is monitoring the Webex Calling Queue
  • It is also managing the scheduled meetings via the Webex Meetings REST API
  • Retrieving/Storing configuration information from/to MongoDB
  • Managing a playwright chromium subprocess to join the meetings and mute/unmute, admit/remove participants as needed

Flow Diagram

PSTN Flow
PSTN Flow

SIP Flow
SIP Flow

The Server
Python Server

Setup

Prerequisites & Dependencies:

  • Developed on MacOS Ventura (13.2.1) & Ubuntu 22.04
  • Developed on Python 3.8.1 & 3.8.3
  • Other OS and Python versions may work but have not been tested
  • Mongo DB (i.e. Atlas)
  • Cisco Expressway
  • Webex Connect
  • Webex Calling
  • Webex Integration with the following scopes:
meeting:recordings_read meeting:admin_preferences_write spark:all meeting:admin_preferences_read meeting:participants_read meeting:admin_participants_read meeting:preferences_write spark-admin:people_write meeting:transcripts_read spark:people_write spark:organizations_read meeting:schedules_write meeting:controls_read meeting:admin_config_write meeting:admin_schedule_read spark-compliance:meetings_write meeting:admin_schedule_write meeting:schedules_read spark-admin:xsi meeting:recordings_write meeting:preferences_read spark:kms meeting:controls_write meeting:admin_recordings_write spark:xsi meeting:participants_write spark-admin:licenses_read meeting:admin_config_read meeting:transcripts_write spark-admin:people_read

Installation Steps:

pip3 install playwright
playwright install
playwright install-deps

pip3 install python-dotenv
pip3 install pymongo==3.10.1
pip3 install pymongo[srv] 
pip3 install tornado==4.5.2
pip3 install requests
pip3 install requests-toolbelt
pip3 install wxcadm
pip3 install cachetools
  1. Clone this repo, and create a file named .env in the repo's root directory.
  2. Populate the following environment variables to the .env file:
MY_APP_PORT=8080
DEV_MODE=false
PYTHON_PROC_NAME=python3
MY_COOKIE_SECRET="SOME_SECRET_STRING"

WEBEX_INTEGRATION_CLIENT_ID="CLIENT_ID"
WEBEX_INTEGRATION_CLIENT_SECRET="CLIENT_SECRET"
WEBEX_INTEGRATION_REFRESH_TOKEN="REFRESH_TOKEN_FOR_ADMIN_USER_IN_YOUR_ORG_USING_THIS_INTEGRATION"

MY_MONGO_URI="mongodb+srv://yourusername:yourpassword@yourcluster.abcde.mongodb.net/YOURDB?authSource=admin&retryWrites=true&w=majority"
MY_MONGO_DB="YOURDB"
  1. Run python3 server.py

Live Demo

Check out our Vidcast recording, here!

*For more demos & PoCs like this, check out our Webex Labs site.

License

All contents are licensed under the MIT license. Please see license for details.

Disclaimer

Everything included is for demo and Proof of Concept purposes only. Use of the site is solely at your own risk. This site may contain links to third party content, which we do not warrant, endorse, or assume liability for. These demos are for Cisco Webex usecases, but are not Official Cisco Webex Branded demos.

Support

Please contact the Webex SD team at wxsd@external.cisco.com for questions. Or for Cisco internal, reach out to us on Webex App via our bot globalexpert@webex.bot & choose "Engagement Type: API/SDK Proof of Concept Integration Development".

About

A "Trade Floor" application that can receive PSTN calls (Webex Connect) with custom IVR, and direct the caller to a Webex Meeting (by way of Webex Calling). Can also receive SIP calls from devices using a static dial string and direct them to the Webex Meeting as well.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published