def PollDataFeed(datafeedId): datafeedEP = config.SymphonyBaseURL + '/agent/v2/datafeed/' + datafeedId + '/read' #datafeedEP = config.SymphonyBaseURL + '/agent/v4/datafeed/' + datafeedId + '/read' response = callout.SymphonyGET(datafeedEP) # Messages coming from the API are formatted as an array of JSON objects # Thus, I need to break up the array, parse the individual objects, and pass # the list of python objects back to the engine messageItems = [] if response.Success: for respItem in response.ResponseData: # Hopefully this will try: if respItem.v2messageType and respItem.v2messageType == 'V2Message': detail = msg.MessageDetail(respItem) detail.Sender = user.GetSymphonyUserDetail( detail.FromUserId) detail.ChatRoom = stream.GetStreamInfo(respItem.streamId) botlog.LogSymphonyInfo(detail.GetConsoleLogLine()) if detail.Sender and detail.Sender.IsValidSender: detail.InitiateCommandParsing() messageItems.append(detail) elif respItem.v2messageType != 'V2Message': botlog.LogConsoleInfo('Non-chat Message Type: ' + respItem.v2messageType) else: botlog.LogConsoleInfo('Non-chat Message Type: unknown') except SystemExit: botlog.LogConsoleInfo('Exiting Symphony Zendesk Bot.') #messaging.SendSymphonyMessage(_configDef['BotStreamForPing'], "Exiting Symphony Zendesk Bot.") except Exception as ex: errorStr = "Symphony REST Exception (system): " + str(ex) #messaging.SendSymphonyMessage(_configDef['BotStreamForPing'], "Symphony REST Exception (system): " + str(ex)) # stackTrace = 'Stack Trace: ' + ''.join(traceback.format_stack()) exInfo = sys.exc_info() stackTrace = 'Stack Trace: ' + ''.join( traceback.format_exception(exInfo[0], exInfo[1], exInfo[2])) botlog.LogSystemError(errorStr) botlog.LogSystemError(stackTrace) botlog.LogConsoleInfo(response.ResponseText) #messaging.SendSymphonyMessage(_configDef['BotStreamForPing'], response.ResponseText) elif response.ResponseCode == 204: return [] else: botlog.LogConsoleInfo("datafeed.py error - Response Code: " + str(response.ResponseCode)) botlog.LogConsoleInfo("Response Message: " + response.ResponseText) #messaging.SendSymphonyMessage(_configDef['BotStreamForPing'], "datafeed.py error - Response Code: " + str(response.ResponseCode) + " Response Message: " + response.ResponseText) # if the response is not successful, return None. This way, I can tell the datafeed call was bad # and attempt to reconnect to the server. return None return messageItems
def GetSymphonyUserDetail(userId): userQueryEP = config.SymphonyBaseURL + '/pod/v2/user?uid=' + str(userId) + '&local=true' response = callout.SymphonyGET(userQueryEP) if response.Success: userObj = response.ResponseData return SymphonyUser(user=userObj) else: return SymphonyUser(user=None)
def GetStreamInfo(streamId): chatRoom = SymphonyChatRoom(streamId) streamEP = config.SymphonyBaseURL + '/pod/v1/streams/' + streamId + '/info' symresponse = agent.SymphonyGET(streamEP) if symresponse.Success: chatRoom.Active = symresponse.ResponseData.active chatRoom.CrossPod = symresponse.ResponseData.crossPod chatRoom.Type = symresponse.ResponseData.streamType.type if chatRoom.Type == 'ROOM': chatRoom.Name = symresponse.ResponseData.roomAttributes.name else: chatRoom.Name = 'Non-room' return chatRoom
def GetSymphonyMessages(endpoint): response = callout.SymphonyGET(endpoint) # Messages coming from the API are formatted as an array of JSON objects # Thus, I need to break up the array, parse the individual objects, and pass # the list of python objects back to the engine messageItems = [] if response.Success: for respItem in response.ResponseData: # Hopefully this will try: if respItem.v2messageType and respItem.v2messageType == 'V2Message': detail = msg.MessageDetail(respItem) detail.Sender = user.GetSymphonyUserDetail( detail.FromUserId) detail.ChatRoom = stream.GetStreamInfo(respItem.streamId) botlog.LogSymphonyInfo(detail.GetConsoleLogLine()) if detail.Sender and detail.Sender.IsValidSender: detail.InitiateCommandParsing() messageItems.append(detail) elif respItem.v2messageType != 'V2Message': botlog.LogConsoleInfo('Non-chat Message Type: ' + respItem.v2messageType) else: botlog.LogConsoleInfo('Non-chat Message Type: unknown') except SystemExit: botlog.LogConsoleInfo('Exiting Ares.') except Exception as ex: errorStr = "Symphony REST Exception (system): " + str(ex) # stackTrace = 'Stack Trace: ' + ''.join(traceback.format_stack()) exInfo = sys.exc_info() stackTrace = 'Stack Trace: ' + ''.join( traceback.format_exception(exInfo[0], exInfo[1], exInfo[2])) botlog.LogSystemError(errorStr) botlog.LogSystemError(stackTrace) botlog.LogConsoleInfo(response.ResponseText) return messageItems
def GetSymphonyUserId(emailAddress): userEP = config.SymphonyBaseURL + '/pod/v1/user?email=' + emailAddress response = callout.SymphonyGET(userEP) return response.ResponseData.id
def getAttchment(streamID, messageID, attachmentID): attEP = config.SymphonyBaseURL+'/agent/v1/stream/'+streamID+'/attachement?messageId='+messageID+'&fileId='+attachmentID return callout.SymphonyGET(attEP)