Skip to main content

Symphony REST API - Python Client

Project description

symphony-api-client-python

The Python client is built in an event handler architecture. If you are building a bot that listens to conversations, you will only have to implement an interface of a listener with the functions to handle all events that will come through the Data Feed.

Install: pip install sym-api-client-python

Note this repo is in constant development

Configuration

Create a config.json file in your project which includes the following properties

    {
      "sessionAuthHost": "COMPANYNAME-api.symphony.com",
      "sessionAuthPort": 8444,
      "keyAuthHost": "COMPANYNAME-api.symphony.com",
      "keyAuthPort": 8444,
      "podHost": "COMPANYNAME.symphony.com",
      "podPort": 443,
      "agentHost": "COMAPNYNAME.symphony.com",
      "agentPort": 443,
      "botCertPath": "PATH",
      "botCertName": "BOT-CERT-NAME",
      "botCertPassword": "BOT-PASSWORD",
      "botEmailAddress": "BOT-EMAIL-ADDRESS",
      "appCertPath": "",
      "appCertName": "",
      "appCertPassword": "",
      "proxyURL": "",
      "proxyUsername": "",
      "proxyPassword": "",
      "authTokenRefreshPeriod": "30",
      "authType": "RSA"
    }

Example main class

from sym_api_client_python.configure.configure import Config
from sym_api_client_python.auth.auth import Auth
from sym_api_client_python.clients.SymBotClient import SymBotClient
from sym_api_client_python.listeners.imListenerTestImp import IMListenerTestImp
from sym_api_client_python.listeners.roomListenerTestImp import RoomListenerTestImp

#debug logging --> set to debug --> check logs/example.log
import logging
logging.basicConfig(filename='example.log', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', filemode='w', level=logging.DEBUG)
logging.getLogger("urllib3").setLevel(logging.WARNING)
#main() acts as executable script --> run python3 hello.py to start Bot...
def main():
    print('hi')
    #pass in path to config.json file to Config class
    configure = Config('config.json')
    #parse through config.json and extract decrypt certificates
    configure.connect()
    #if you wish to authenticate using RSA replace following line with: auth = rsa_Auth(configure) --> get rid of auth.authenticate
    auth = Auth(configure)
    #retrieve session and keymanager tokens:
    auth.authenticate()
    #initialize SymBotClient with auth and configure objects
    botClient = SymBotClient(auth, configure)
    #initialize datafeed service
    DataFeedEventService = botClient.getDataFeedEventService()
    #initialize listener classes and append them to DataFeedEventService class
    #these listener classes sit in DataFeedEventService class as a way to easily handle events
    #coming back from the DataFeed
    imListenerTest = IMListenerTestImp(botClient)
    DataFeedEventService.addIMListener(imListenerTest)
    roomListenerTest = RoomListenerTestImp(botClient)
    DataFeedEventService.addRoomListener(roomListenerTest)
    #create data feed and read datafeed recursively
    DataFeedEventService.startDataFeed()

if __name__ == "__main__":
main()

Example RoomListener implementation

class RoomListenerTestImp(RoomListener):

    def __init__(self, SymBotClient):
        self.botClient = SymBotClient

    def onRoomMessage(self, message):
        print('room message recieved', message)
        #sample code for developer to implement --> use MessageClient and
        #data recieved from message event to reply with a #reed
        streamId = message['payload']['messageSent']['message']['stream']['streamId']
        messageId = message['payload']['messageSent']['message']['messageId']
        message = dict(message = '<messageML><hash tag="reed"/></messageML>')
        self.botClient.messageClient.createMessage(streamId, message)

    def onRoomCreated(self, roomCreated):
        print('room created', roomCreated)

    def onRoomDeactivated(self, roomDeactivated):
        print('room Deactivated', roomDeactivated)

    def onRoomMemberDemotedFromOwner(self, roomMemberDemotedFromOwner):
        print('room member demoted from owner', roomMemberDemotedFromOwner)

    def onRoomMemberPromotedToOwner(self, roomMemberPromotedToOwner):
        print('room member promoted to owner', roomMemberPromotedToOwner)

    def onRoomReactivated(self, roomReactivated):
        print('room reactivated', roomReactivated)

    def onRoomUpdated(self, roomUpdated):
        print('room updated', roomUpdated)

    def onUserJoinedRoom(self, userJoinedRoom):
        print('USER JOINED ROOM', userJoinedRoom)

    def onUserLeftRoom(self, userLeftRoom):
        print('USER LEFT ROOM', userLeftRoom)

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

sym_api_client_python-0.1.8.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

sym_api_client_python-0.1.8-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file sym_api_client_python-0.1.8.tar.gz.

File metadata

  • Download URL: sym_api_client_python-0.1.8.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.8 CPython/2.7.10

File hashes

Hashes for sym_api_client_python-0.1.8.tar.gz
Algorithm Hash digest
SHA256 aefeed08d88497a23bfd88f5f3f1c9c0e16ce2e4563f457e34e2b786776b3a8f
MD5 1a9b75bf655b417c333eb4006f8a03b0
BLAKE2b-256 9dab1b6bc594814d395e62b7ac45e2e356c7663a8fd07ee5819d1beac32df644

See more details on using hashes here.

File details

Details for the file sym_api_client_python-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: sym_api_client_python-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.8 CPython/2.7.10

File hashes

Hashes for sym_api_client_python-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 175fdfb55a05d352c64a98c81bfb3059581023d22f3c1508c17a63b641b3a4f1
MD5 b1191d82dfb2609a31a300816c14bedd
BLAKE2b-256 03b6ce4d6320098c61fb4e1b455f11b9a086eb789c39a9ae59e718749f0cfe46

See more details on using hashes here.

Supported by

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