def findUserById(self, id): # save to dynamodb dynamodb = boto3.resource('dynamodb', region_name='us-east-1') table = dynamodb.Table( aws_helper.getEnvVar(BoiBotEnvVars.ALEXA_USER_TABLE)) print('querying for user: '******'found ' + str(response)) if 'Items' in response.keys() and len(response['Items']) > 0: user = response['Items'][0] else: response = table.get_item(Key={ aws_helper.getEnvVar(BoiBotEnvVars.ALEXA_USER_ID_COLUMN): id }) print('found ' + str(response)) user = response['Item'] self.decryptFields(user) return user
def validateRequest(self, request, event): # Make sure the request is not old (per Amazon standard) if aws_helper.getEnvVar( 'TestMode') == 'true' or self.check_request_freshness(event): # Check that the request was signed properly if aws_helper.getEnvVar( 'TestMode') == 'true' or aws_sig_checker.checkSignature( request): return True else: print('Signature is NOT valid!') else: print('warning, request is old!!') return False
def __getLexResponse(self, serviceResponses): if self.lexResponse == None: # speak to lex user = '******' + str(self.userSession.get('sessionId', '0')) user = (user + '.anonymous') if self.jwt == None else user print('speaking to lex as user: '******'Intent ' + lex_helper.getIntent(self.lexResponse) + ' requires authorization.') raise Exception('Authorization required') return self.lexResponse
def getAllResponseTemplates(self): intentName = self.fulfillmentData['intent'] boiResponses = aws_helper.findItemsByKey( intentName, 'intent', aws_helper.getEnvVar(BotActionEnvVars.BOI_RESPONSE_TABLE), 'priority') matchingResponses = OrderedDict() for resp in boiResponses: matchingResponses[(resp.get('rule', 'default'))] = resp.get( 'response', 'No response key.') return matchingResponses
def getAppUrlPrefix(self): return aws_helper.getEnvVar('AppUrlPrefix')