コード例 #1
0
def update(intent_request):
    formName  = Lamda.getSlots(intent_request)[FORMNAME]
    if(PROJECTNAME in Lamda.getSlots(intent_request)):
        projectName = Lamda.getSlots(intent_request)[PROJECTNAME]
    else:
        projectName = None
    if(CONTRACTNAME in Lamda.getSlots(intent_request)):
        contractName = Lamda.getSlots(intent_request)[CONTRACTNAME]
    else:
        contractName = None
    
    if(RECORD in Lamda.getSlots(intent_request)):
        recordName = Lamda.getSlots(intent_request)[RECORD]
    else:
        recordName = None
        
    # moduleId = Masterworks.GetModuleId(formName); 
    # pid, parentId = Masterworks.GetPIDParentIdForModule(moduleId) 
    moduleId = Masterworks.GetModuleId(str(formName))
    print moduleId
    if moduleId is not None:
        sessionAttributes = intent_request['sessionAttributes'] if intent_request['sessionAttributes'] is not None else {}
        # pid, parentId = Masterworks.GetPIDParentIdForModule(moduleId)
        
        if recordName is not None:
            
            if(moduleId == "BDGTEST"):
                print projectName
                if projectName != None :
                    instanceId, pid, parentId = Masterworks.GetFormInstanceId(moduleId, recordName, projectName); 
                    if(instanceId is not None and pid is not None and parentId is not None):
                        url = CreateUrl(moduleId, pid, parentId, instanceId)
                        sessionAttributes["url"] = url 
                        return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
                    else:
                         return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           RECORD,
                           {'contentType': 'PlainText', 'content':'Given Record name does not exists.Please specify the correct Record Name'})
                
                else:
                    return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           PROJECTNAME,
                           {'contentType': 'PlainText', 'content':'In which Project would you like to create the'+str(formName) +'record?'})
                           
            elif(moduleId == "CONTDWR"):
                if(projectName is not None and contractName is not None):
                    instanceId, pid, parentId = Masterworks.GetFormInstanceId(moduleId, recordName, projectName, contractName); 
                    if(instanceId is not None and pid is not None and parentId is not None):
                        url = CreateUrl(moduleId, pid, parentId, instanceId)
                        sessionAttributes["url"] = url 
                        return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
                    else:
                         return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           RECORD,
                           {'contentType': 'PlainText', 'content':'Given Record name does not exists. Please specify the correct record name.'})
                
                elif(projectName is None):
                    return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           PROJECTNAME,
                           {'contentType': 'PlainText', 'content':'In which Project would you like to create the '+str(formName) +' record?'})
            
                elif(contractName is None):
                    return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           CONTRACTNAME,
                           {'contentType': 'PlainText', 'content':'In which Contract would you like to create the '+str(formName) +' record?'})
            
            else: 
                instanceId, pid, parentId = Masterworks.GetFormInstanceId(moduleId, recordName, 0, 0)
                if(instanceId is not None):
                    url = CreateUrl(moduleId, 0, 0, instanceId)
                    sessionAttributes["url"] = url 
                    return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
                else:
                    return Lamda.elicit_slot(intent_request['sessionAttributes'],
                           intent_request['currentIntent']['name'],
                           intent_request['currentIntent']['slots'],
                           RECORD,
                           {'contentType': 'PlainText', 'content':'Given Record name does not exists. Please specify the correct record name.'})
                
        else:
            if(moduleId == "BDGTEST"):
                columnName = "Budget Estimate Name"
            elif(moduleId == "FNDMGMT"):
                columnName = "Fund source name"
            elif(moduleId == "CONTDWR"):
                columnName = "DPR Number"
            return Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       RECORD,
                       {'contentType': 'PlainText', 'content':'Please specify the '+columnName+ ' of the record you want to update.'})
            
            
        sessionAttributes["url"] = url 
        return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
    else:
        return Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       "Form",
                       {'contentType': 'PlainText', 'content':'Enter the Form you want to take action on'})
コード例 #2
0
ファイル: ScalarCellRetrieval.py プロジェクト: pvt-16/Chatbot
def scalarCellRetrieval(intent_request):
    '''
    dataFilter={}
    dataFilter['username']='******'
    dataFilter['password']='******'
    dataFilter['c']=''
    dataFilter['role']='Administrator'
    '''
    output_session_attributes = intent_request[
        'sessionAttributes'] if intent_request[
            'sessionAttributes'] is not None else {}
    pageName = intent_request['currentIntent']['slots']['Form']
    #parentInfo=intent_request['currentIntent']['slots']['Project']
    #contractInfo=intent_request['currentIntent']['slots']['Contract']
    columnInfo = intent_request['currentIntent']['slots']['Column']
    recordID = intent_request['currentIntent']['slots']['record']
    ws = intent_request['currentIntent']['slots']['ws']
    source = intent_request['invocationSource']
    moduleID = Masterworks.GetModuleId(
        intent_request['currentIntent']['slots']['Form'])

    formInstanceID, pid, parentId = Masterworks.GetFormInstanceId(
        moduleID, recordID)

    #print formInstanceID
    if (source == 'DialogCodeHook'):
        print "hello4"
        pageNames = [
            "Global Fund List", "Budget Estimates", "Daily Progress Report"
        ]
        '''
        if pageName is not None and pageName not in pageNames:
            validation_result= Lamda.build_validation_result(False,
                                           'Form',
                                           'Please select Valid Form')
            if not validation_result['isValid']:
                #intent_request['currentIntent']['slots']['validation_result']['violatedSlot'] = None
                return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                   intent_request['currentIntent']['name'],
                                   intent_request['currentIntent']['slots'],
                                   "Form",
                                   {'contentType': 'PlainText', 'content': 'Enter Valid Form'})
        
        if pageName is not None and columnInfo is None:
            return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                   intent_request['currentIntent']['name'],
                                   intent_request['currentIntent']['slots'],
                                   "Column",
                                   {'contentType': 'PlainText', 'content': 'Enter column of Form'})
        #return Lamda.delegate(output_session_attributes,intent_request['currentIntent']['slots'])
        '''
        '''
        if pageName is not None and formInstanceID is None:
                return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                   intent_request['currentIntent']['name'],
                                   intent_request['currentIntent']['slots'],
                                   "record",
                                   {'contentType': 'PlainText', 'content': 'Enter Record ID'})
        '''
        if (pageName == 'Global Fund List'):
            intent_request['currentIntent']['slots']['Project'] = 0
        if (pageName == 'Budget Estimates' or pageName == 'Global Fund List'):
            intent_request['currentIntent']['slots']['Contract'] = 0
        if (pageName is None and recordID is not None):
            if (pageName == 'Budget Estimates'):
                return Lamda.elicit_slot(
                    output_session_attributes,
                    intent_request['currentIntent']['name'],
                    intent_request['currentIntent']['slots'],
                    'Project',
                    {
                        'contentType':
                        'PlainText',
                        'content':
                        'Please enter Project Name of {} '.format(pageName)
                    },
                )
            elif (pageName == 'Daily Progress Report'):
                return Lamda.elicit_slot(
                    output_session_attributes,
                    intent_request['currentIntent']['name'],
                    intent_request['currentIntent']['slots'],
                    'Contract',
                    {
                        'contentType':
                        'PlainText',
                        'content':
                        'Please enter Contract Name of {}'.format(pageName)
                    },
                )

        print pageName
        print "pusjndjf"
        print formInstanceID
        print columnInfo
        print ws
    if (pageName is not None and formInstanceID is not None
            and columnInfo is not None and ws is not None):
        scalarData = {
            'moduleId': moduleID,
            'columnName': intent_request['currentIntent']['slots']['Column'],
            'instanceID': formInstanceID,
            'WorkSpaceEnabled': ws
        }
        responseFilter = requests.get(BaseURL + "api/Auro/GetScalarCellData",
                                      params=scalarData)
        #print json.loads(responseFilter.content)
        print responseFilter.status_code
        #print json.loads(responseFilter.content)['FilterName']
        if (responseFilter.status_code == 200
                or responseFilter.status_code == 202):
            return Lamda.close(output_session_attributes, "Fulfilled",
                               "{}".format(responseFilter.content))
        return Lamda.elicit_slot(
            output_session_attributes,
            intent_request['currentIntent']['name'],
            intent_request['currentIntent']['slots'],
            'ws',
            {
                'contentType': 'PlainText',
                'content': 'Want to save in Work Space?'
            },
        )
    return Lamda.delegate(output_session_attributes,
                          intent_request['currentIntent']['slots'])
コード例 #3
0
def navigate(intent_request):
    if (FORMNAME in Lamda.getSlots(intent_request)):
        formName = Lamda.getSlots(intent_request)[FORMNAME]
    else:
        formName = None
    if (PROJECTNAME in Lamda.getSlots(intent_request)):
        projectName = Lamda.getSlots(intent_request)[PROJECTNAME]
    else:
        projectName = None
    if (CONTRACTNAME in Lamda.getSlots(intent_request)):
        contractName = Lamda.getSlots(intent_request)[CONTRACTNAME]
    else:
        contractName = None

    if (RECORD in Lamda.getSlots(intent_request)):
        recordName = Lamda.getSlots(intent_request)[RECORD]
    else:
        recordName = None

    sessionAttributes = intent_request['sessionAttributes'] if intent_request[
        'sessionAttributes'] is not None else {}
    moduleId = Masterworks.GetModuleId(str(formName))
    print moduleId

    if (intent_request['invocationSource'] == 'DialogCodeHook'):
        if (moduleId is None):
            Lamda.elicit_slot(
                intent_request['sessionAttributes'],
                intent_request['currentIntent']['name'],
                intent_request['currentIntent']['slots'], "Form", {
                    'contentType': 'PlainText',
                    'content': 'Enter the Form you want to take action on'
                })

        if ((moduleId == "BDGTEST" or moduleId == "CONTDWR")
                and projectName is None):
            return Lamda.elicit_slot(
                intent_request['sessionAttributes'],
                intent_request['currentIntent']['name'],
                intent_request['currentIntent']['slots'], PROJECTNAME, {
                    'contentType':
                    'PlainText',
                    'content':
                    'In which Project would you like to create the ' +
                    str(formName) + ' record?'
                })

        if (moduleId == "CONTDWR" and contractName is None):
            return Lamda.elicit_slot(
                intent_request['sessionAttributes'],
                intent_request['currentIntent']['name'],
                intent_request['currentIntent']['slots'], CONTRACTNAME, {
                    'contentType':
                    'PlainText',
                    'content':
                    'In which Contract would you like to create the ' +
                    str(formName) + ' record?'
                })

    if (recordName is not None):
        instanceId, pid, parentId = Masterworks.GetFormInstanceId(
            moduleId, recordName, projectName)
        if (instanceId is not None and pid is not None
                and parentId is not None):
            url = CreateFormUrl(moduleId, pid, parentId, instanceId)
            sessionAttributes["url"] = url
    else:
        pid, parentId = Masterworks.GetPIDParentIdForModule(
            moduleId, projectName, contractName)
        url = CreateListUrl(moduleId, pid, parentId)
        sessionAttributes["url"] = url

    return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
コード例 #4
0
def create(intent_request):
    formName = Lamda.getSlots(intent_request)[FORMNAME]
    if (PROJECTNAME in Lamda.getSlots(intent_request)):
        projectName = Lamda.getSlots(intent_request)[PROJECTNAME]
    else:
        projectName = None
    if (CONTRACTNAME in Lamda.getSlots(intent_request)):
        contractName = Lamda.getSlots(intent_request)[CONTRACTNAME]
    else:
        contractName = None
    # moduleId = Masterworks.GetModuleId(formName);
    # pid, parentId = Masterworks.GetPIDParentIdForModule(moduleId)
    moduleId = Masterworks.GetModuleId(str(formName))
    print moduleId
    if moduleId is not None:
        sessionAttributes = intent_request[
            'sessionAttributes'] if intent_request[
                'sessionAttributes'] is not None else {}
        # pid, parentId = Masterworks.GetPIDParentIdForModule(moduleId)

        if (moduleId == "BDGTEST"):
            if (projectName is not None):
                pid, parentId = Masterworks.GetPIDParentIdForModule(
                    moduleId, projectName)
                if (pid is not None and parentId is not None):
                    url = CreateUrl(moduleId, pid, parentId)
                    sessionAttributes["url"] = url
                    return Lamda.delegate(sessionAttributes,
                                          Lamda.getSlots(intent_request))
                else:
                    return Lamda.build_validation_result(
                        False, PROJECTNAME,
                        intent_request['currentIntent']['slots'])
                    #   {'contentType': 'PlainText', 'content':'Given Project name does not exists.Please specify the correct Project Name'})

            else:
                return Lamda.elicit_slot(
                    intent_request['sessionAttributes'],
                    intent_request['currentIntent']['name'],
                    intent_request['currentIntent']['slots'], PROJECTNAME, {
                        'contentType':
                        'PlainText',
                        'content':
                        'In which Project would you like to create the ' +
                        str(formName) + ' record?'
                    })

        elif (moduleId == "CONTDWR"):
            if (projectName is not None and contractName is not None):
                pid, parentId = Masterworks.GetPIDParentIdForModule(
                    moduleId, projectName, contractName)
                if (pid is not None and parentId is not None):
                    url = CreateUrl(moduleId, pid, parentId)
                    sessionAttributes["url"] = url
                    return Lamda.delegate(sessionAttributes,
                                          Lamda.getSlots(intent_request))
                else:
                    return Lamda.build_validation_result(
                        False, PROJECTNAME,
                        intent_request['currentIntent']['slots'])
                    #  return Lamda.elicit_slot(intent_request['sessionAttributes'],
                    #   intent_request['currentIntent']['name'],
                    #   intent_request['currentIntent']['slots'],
                    #   PROJECTNAME,
                    #   {'contentType': 'PlainText', 'content':'Given Project or Contract name does not exists.Please specify the correct Project or Contract Name'})

            elif (projectName is None):
                return Lamda.elicit_slot(
                    intent_request['sessionAttributes'],
                    intent_request['currentIntent']['name'],
                    intent_request['currentIntent']['slots'], PROJECTNAME, {
                        'contentType':
                        'PlainText',
                        'content':
                        'In which Project would you like to create the ' +
                        str(formName) + ' record?'
                    })

            elif (contractName is None):
                return Lamda.elicit_slot(
                    intent_request['sessionAttributes'],
                    intent_request['currentIntent']['name'],
                    intent_request['currentIntent']['slots'], CONTRACTNAME, {
                        'contentType':
                        'PlainText',
                        'content':
                        'In which Contract would you like to create the ' +
                        str(formName) + ' record?'
                    })

        else:
            url = CreateUrl(moduleId, 0, 0)
            sessionAttributes["url"] = url
            return Lamda.delegate(sessionAttributes,
                                  Lamda.getSlots(intent_request))

        # sessionAttributes["url"] = url
        # return Lamda.delegate(sessionAttributes, Lamda.getSlots(intent_request))
    else:
        return Lamda.elicit_slot(
            intent_request['sessionAttributes'],
            intent_request['currentIntent']['name'],
            intent_request['currentIntent']['slots'], "Form", {
                'contentType': 'PlainText',
                'content': 'Enter the Form you want to take action on'
            })
コード例 #5
0
ファイル: performWF.py プロジェクト: pvt-16/Chatbot
def perform_wf_action(intent_request):
    output_session_attributes = intent_request['sessionAttributes'] if intent_request['sessionAttributes'] is not None else {}
    wf_action = get_slots(intent_request)[WF_ACTION]
    module = get_slots(intent_request)[MODULENAME]
    record = get_slots(intent_request)[FormInstance]
    
    
    #rint record,module
    moduleID= Masterworks.GetModuleId(module)
    #print moduleID
   
    
    url=Masterworks.baseUrl
    
    if module is not None and record is None:
        return Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       "record",
                       {'contentType': 'PlainText', 'content': 'Enter the {0} you want to {1}'.format(form_uniqueIdentifier_mapping[module],wf_action)})
    elif module is None:
        return Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       "Form",
                       {'contentType': 'PlainText', 'content':'Enter the Form you want to take action on'})
                       
    if moduleID=='BDGTEST' or moduleID=='CONTDWR':
        Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       "Project",
                       {'contentType': 'PlainText', 'content':'Enter the Project Name'})
                       
    if moduleID=='CONTDWR':
        return Lamda.elicit_slot(intent_request['sessionAttributes'],
                       intent_request['currentIntent']['name'],
                       intent_request['currentIntent']['slots'],
                       "Contract",
                       {'contentType': 'PlainText', 'content':'Enter the Contract Name'})
                       
    data={'username': '******',
          'password': '******',
           'role': 'Administrator',
           'c': 'as'
         }
    formInstanceID,pid, contractid = Masterworks.GetFormInstanceId(moduleID,record,get_slots(intent_request)['Project'],get_slots(intent_request)['Contract'])
    #print "form " + formInstanceID
    #print get_slots(intent_request)
        
    data1={'moduleId':str(moduleID),'formInstanceid':str(formInstanceID),'jsonParameters':'{}'}#json.dumps({'pid':pid,'parentid':contractid})
                     
    #print "data --------- " + json.dumps(data1)
    #res = requests.post(url+'api/Login', json=str(data), headers={'content':'application/json'})
    response=requests.post(url+"api/Login", json=json.dumps(data))
    
    req2 = requests.get(url+'api/Workflow/GetActions', params=data1,headers={'Authorization-Token':json.loads(response.content)['Token']})
    
    #print json.loads(req2.content)
    print req2.content
    actionId = GetValueInArray('ActionId',wf_action,json.loads(req2.content))
    performActionParams={'moduleId':moduleID,'formInstanceId':formInstanceID,'actionId':actionId,'actionName':wf_action}
    res3 = requests.post(url+'api/Workflow/PerformAction',json=json.dumps({'pid':pid,'parentid':contractid}),params=performActionParams,headers={'Authorization-Token':json.loads(response.content)['Token']})
    #return Lambda.close(output_session_attributes,"Fulfilled","Done")
    return Lamda.delegate(output_session_attributes,intent_request['currentIntent']['slots'])
コード例 #6
0
def scalarCellRetrieval(intent_request):
    dataFilter = {}
    dataFilter['username'] = '******'
    dataFilter['password'] = '******'
    dataFilter['c'] = ''
    dataFilter['role'] = 'Administrator'
    output_session_attributes = intent_request[
        'sessionAttributes'] if intent_request[
            'sessionAttributes'] is not None else {}
    pageName = intent_request['currentIntent']['slots']['Form']
    #parentInfo=intent_request['currentIntent']['slots']['Project']
    #contractInfo=intent_request['currentIntent']['slots']['Contract']
    columnInfo = intent_request['currentIntent']['slots']['Column']
    recordID = intent_request['currentIntent']['slots']['record']
    source = intent_request['invocationSource']

    if source == 'DialogCodeHook':
        print "hello4"
        pageNames = [
            "Global Fund List", "Budget Estimates", "Daily Progress Report"
        ]
        '''
        if pageName is not None and pageName not in pageNames:
            validation_result= Lamda.build_validation_result(False,
                                           'Form',
                                           'Please select Valid Form')
            if not validation_result['isValid']:
                #intent_request['currentIntent']['slots']['validation_result']['violatedSlot'] = None
                return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                   intent_request['currentIntent']['name'],
                                   intent_request['currentIntent']['slots'],
                                   "Form",
                                   {'contentType': 'PlainText', 'content': 'Enter Valid Form'})
        '''
        if pageName is not None and columnInfo is None:
            return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                     intent_request['currentIntent']['name'],
                                     intent_request['currentIntent']['slots'],
                                     "Column", {
                                         'contentType': 'PlainText',
                                         'content': 'Enter column of Form'
                                     })

        if pageName is not None and recordID is None:
            return Lamda.elicit_slot(intent_request['sessionAttributes'],
                                     intent_request['currentIntent']['name'],
                                     intent_request['currentIntent']['slots'],
                                     "record", {
                                         'contentType': 'PlainText',
                                         'content': 'Enter Record ID'
                                     })

    if (pageName is not None and recordID is not None
            and columnInfo is not None):
        #masterworkshelper = http_helper("http://781bcb8c.ngrok.io/")
        response = requests.post(BaseURL + "api/Login",
                                 json=json.dumps(dataFilter))
        print response.status_code
        print json.loads(response.content)['Token']
        print 'Hello5'
        moduleID = Masterworks.GetModuleId(
            intent_request['currentIntent']['slots']['Form'])
        scalarData = {
            'moduleId': moduleID,
            'columnName': intent_request['currentIntent']['slots']['Column'],
            'instanceID': intent_request['currentIntent']['slots']['record']
        }
        responseFilter = requests.get(BaseURL + "api/Auro/GetScalarCellData",
                                      headers={
                                          'Authorization-Token':
                                          json.loads(response.content)['Token']
                                      },
                                      params=scalarData)
        print json.loads(responseFilter.content)
        print responseFilter.status_code
        #print json.loads(responseFilter.content)['FilterName']
        if (responseFilter.status_code == 200):
            return Lamda.close(
                output_session_attributes, "Fulfilled",
                "Value is {0}".format(json.loads(responseFilter.content)))
        return Lamda.close(output_session_attributes, "Fulfilled", "sorry")
    return Lamda.delegate(output_session_attributes,
                          intent_request['currentIntent']['slots'])