Giter VIP home page Giter VIP logo

custom-pmr-pin's Introduction

Custom PMR PIN

Application that can receive PSTN calls (Webex Connect) with custom IVR, and direct the caller to a Webex PMR (by way of Webex Calling).

This project was developed to provide a method for PSTN callers to join PMRs using a single static DID and a static 7 digit PIN, that can be customized by each user (per PMR).

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 PMR

The Server:

  • Our python server.py is listening for POST requests from Webex Connect
  • Our python server.py is monitoring the Webex Calling Queue
  • Retrieving/Storing configuration information from/to MongoDB

Flow Diagram

PSTN Flow

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)
  • Webex Connect
  • Webex Calling
  • Webex Integration with the following scopes:
meeting:preferences_write, meeting:preferences_read, spark:people_read
spark:organizations_read, spark:people_read, spark:people_write, spark-admin:licenses_read, spark-admin:people_read, spark-admin:people_write, spark-admin:xsi

Installation Steps:

pip3 install aiohttp
pip3 install python-dotenv
pip3 install wxcadm
pip3 install motor
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:
DEBUG_MODE=False
DEV_MODE=True

#For Handling User Web Portal
MY_APP_PORT=8080
MY_WEBEX_CLIENT_ID=
MY_WEBEX_SECRET=
MY_WEBEX_REDIRECT_URI="https://<yourserver>.<domain>/oauth"
MY_WEBEX_SCOPES="spark%3Akms%20spark%3Apeople_read%20meeting%3Apreferences_write%20meeting%3Apreferences_read"

#For Handling XSI Manager
#Scopes Required: 
MY_SERVICE_APP_CLIENT_ID=
MY_SERVICE_APP_SECRET=
MY_SERVICE_APP_REFRESH_TOKEN=

MY_CALL_QUEUE_TARGET="<identifier>@<subdomain>.cisco-bcld.com"
MY_MONGO_URI="mongodb+srv://<username>:<password>@<name>.<subdomain>.mongodb.net/customPMRPIN?authSource=admin&retryWrites=true&w=majority"
MY_MONGO_DB="customPMRPIN"
  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 [email protected] for questions. Or for Cisco internal, reach out to us on Webex App via our bot [email protected] & choose "Engagement Type: API/SDK Proof of Concept Integration Development".

custom-pmr-pin's People

Contributors

tahanson-cisco avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.