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
Release history Release notifications | RSS feed
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
Close
Hashes for sym_api_client_python-0.1.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | aefeed08d88497a23bfd88f5f3f1c9c0e16ce2e4563f457e34e2b786776b3a8f |
|
MD5 | 1a9b75bf655b417c333eb4006f8a03b0 |
|
BLAKE2b-256 | 9dab1b6bc594814d395e62b7ac45e2e356c7663a8fd07ee5819d1beac32df644 |
Close
Hashes for sym_api_client_python-0.1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 175fdfb55a05d352c64a98c81bfb3059581023d22f3c1508c17a63b641b3a4f1 |
|
MD5 | b1191d82dfb2609a31a300816c14bedd |
|
BLAKE2b-256 | 03b6ce4d6320098c61fb4e1b455f11b9a086eb789c39a9ae59e718749f0cfe46 |