Skip to main content

Simple ringcentral chatbot framework python extension that add `bot info` command support.

Project description

ringcentral-chatbot-python-ext-bot-info

Simple ringcentral chatbot python extension that add bot info command support.

screen

Table of contents

Prerequisites

  • Python3.6+ and Pip3
  • Nodejs 8.10+/npm, recommend using nvm to install nodejs/npm
  • Create the bot App: Login to developer.ringcentral.com and create an public Server/Bot app with permissions: ReadContacts, ReadMessages, ReadPresence, Contacts, ReadAccounts, SMS, InternalMessages, ReadCallLog, ReadCallRecording, WebhookSubscriptions, Glip

Quick start

# use virtualenv
pip3 install virtualenv # might need sudo

# init virtual env
virtualenv venv --python=python3

# use env
source ./venv/bin/activate

# install deps
pip install -r requirements.txt
npm i

# run ngrok proxy
# since bot need https server,
# so we need a https proxy for ringcentral to visit our local server
./bin/proxy
# will show:
# Forwarding https://xxxxx.ngrok.io -> localhost:8989

# create env file
cp .sample.env .env
# then edit .env, set proper setting,
# and goto your ringcentral app setting page, set OAuth Redirect URI to https://https://xxxxx.ngrok.io/bot-oauth
RINGCENTRAL_BOT_SERVER=https://xxxxx.ngrok.io

## for bots auth required, get them from your ringcentral app page
RINGCENTRAL_BOT_CLIENT_ID=
RINGCENTRAL_BOT_CLIENT_SECRET=

# run local dev server
./bin/start

Test bot

Building and Deploying to AWS Lambda

AWS Lambda with API Gateway and DynamoDB would give us a flexible way to deploy the bot.

*Be aware that AWS Lambda ONLY works in linux on an x64 architecture. For non-linux os, we need docker to build dependencies, should install docker first.

Get an AWS account, create aws_access_key_id and aws_secret_access_key and place them in ~/.aws/credentials, like this:

[default]
aws_access_key_id = <your aws_access_key_id>
aws_secret_access_key = <your aws_secret_access_key>

For more information, refer to https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html

cp dev/lambda/serverless.sample.yml devlambda/serverless.yml

Edit lambda/serverless.yml, and make sure you set the proper name and required env.

# you can define service wide environment variables here
  environment:
    NODE_ENV: production
    # ringcentral apps

    ## bots
    RINGCENTRAL_BOT_CLIENT_ID:
    RINGCENTRAL_BOT_CLIENT_SECRET:

    ## common
    RINGCENTRAL_SERVER: https://platform.devtest.ringcentral.com
    RINGCENTRAL_BOT_SERVER: https://xxxx.execute-api.us-east-1.amazonaws.com/default/poc-your-bot-name-dev-bot

    # db
    DB_TYPE: dynamodb
    DYNAMODB_TABLE_PREFIX: rc_bot2
    DYNAMODB_REGION: us-east-1

Deploy to AWS Lambda with bin/deploy

# install serverless related modules
npm i

# Run this cmd to deploy to AWS Lambda, full build, may take more time
bin/deploy

## watch Lambda server log
bin/watch
  • Create API Gateway for your Lambda function, shape as https://xxxx.execute-api.us-east-1.amazonaws.com/default/poc-your-bot-name-dev-bot/{action+}
  • Make sure your Lambda function role has permission to read/write dynamodb(Set this from AWS IAM roles, could simply attach AmazonDynamoDBFullAccess and AWSLambdaRole policies to Lambda function's role)
  • Make sure your Lambda function's timeout more than 5 minutes
  • Do not forget to set your RingCentral app's redirect URL to Lambda's API Gateway URL, https://xxxx.execute-api.us-east-1.amazonaws.com/default/poc-your-bot-name-dev-bot/bot-oauth for bot app.

The bot create process

create

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file ringcentral_bot_framework_extension_botinfo-0.0.3.tar.gz.

File metadata

  • Download URL: ringcentral_bot_framework_extension_botinfo-0.0.3.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for ringcentral_bot_framework_extension_botinfo-0.0.3.tar.gz
Algorithm Hash digest
SHA256 05fe86c7817b06092530330d59f837d33c2e856d9710587140064a7d2b01438f
MD5 a2a3e6b6b026a5a509d2a6451d6321cc
BLAKE2b-256 929291a899723f027e4f94b01e6c288837395f067715fd9ad3a7a357cd182b0d

See more details on using hashes here.

File details

Details for the file ringcentral_bot_framework_extension_botinfo-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for ringcentral_bot_framework_extension_botinfo-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e8023f31d3e1ae2e4b01dcd22034ffa15e431173521f9f4c4cfd26699ac2661e
MD5 9c25eb0ccc8e3e39e9fa4bb92c1b1912
BLAKE2b-256 414c8f4b347390dd0d6b82e3d39bb685ff06fe49bb12fc3e7898b50d9bcc4bfa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page