Python을 이용하여 JSON 응답 분석

Automation 360 Python 스크립트를 이용하여 Bot을 만들 Python 함수를 실행합니다. Python 함수를 이용하여 REST 웹 서비스 GET 요청으로부터 JSON 응답을 분석합니다.

전제 조건

Bot을 만들려면 다음 사항이 갖춰져 있어야 합니다.

  • Python 프로그래밍 언어에 대한 기초적인 이해.
  • Automation Anywhere Bot 생성에 관한 기초적인 경험.
  • Python 3를 다운로드하여 설치합니다.

    Python 다운로드

    다음 중 하나를 수행합니다.

    • Python을 설치하는 동안 경로에 Python x.xx 추가를 선택해야 합니다.
      Python 설치
    • 환경 변수에 경로를 추가합니다.

프로시저

  1. Control Room에 로그인합니다.
  2. 왼쪽 창에서 자동화를 클릭합니다.
    이용 가능한 Bot 목록 및 양식이 표시됩니다.
  3. Bot 생성 아이콘을 클릭합니다.
    Bot 생성
  4. 이름 필드에 PythonTutorial을 입력합니다.
  5. 생성 및 편집을 클릭합니다.
  6. 작업 창에서 변수를 클릭하여 다음과 같은 새 변수를 생성합니다.
    1. 이름 dResponse, 유형 > 사전하위 유형 > 문자열.
    2. 이름 dRetrieveValue, 유형 > 사전하위 유형 > 임의.
    3. 이름 dResponseBody, 유형 > 문자열.
    4. 이름 sFullName, 유형 > 문자열.
    5. 이름 sLocation, 유형 > 문자열.
    6. 이름 sTotalUserCount, 유형 > 문자열.
    7. 이름 nTotalUserCount, 유형 > 숫자.
    8. 이름 nCurrentUser, 유형 > 숫자.
    9. 이름 sCurrentUser, 유형 > 문자열.
    10. 이름 prompt-assignment, 유형 > 문자열.
  7. 작업 창에서 REST 웹 서비스 > 가져오기 방법를 선택한 후, 이를 Bot 흐름의 시작 부분 아래에 놓습니다.
    1. URI 필드에 다음을 입력합니다. https://randomuser.me/api/?results=5&inc=name,email,location&nat=us
      이것은 임의의 사용자 세부 정보를 호출 애플리케이션으로 보내는 샘플 API입니다.
    2. 인증 모드 드롭다운 목록에서 인증 없음을 선택합니다.

      python-rest-sample
    3. 출력을 변수에 지정 드롭다운 목록에서 dResponse -문자열 사전을 선택합니다.
  8. 작업 창에서 문자열 > 할당 작업을 클릭하고 REST 웹 서비스 작업 아래의 캔버스로 드래그합니다.
    1. 소스 문자열 변수 값 선택 필드에 $dResponse{Body}$를 입력합니다.

      python-string-assign
    2. 대상 문자열 변수 선택 드롭다운 목록에서 dResponseBody - 문자열을 선택합니다.
  9. 작업 창에서 Python 스크립트 > 열기를 클릭하고 문자열 > 할당 작업 아래의 캔버스로 드래그합니다.
    1. Python 필드에서 수동 입력을 선택합니다.

      python-script-open
    2. 여기에 스크립트 입력 필드에 다음 코드를 복사하여 붙여 넣습니다.
      import json
      
      def get_node_count(response):
          #parse response as json
          response_dict=json.loads(response)
          # Create list from JSON body
          response_body = response_dict['results']
          #return the count of entries in JSON body as string
          lengthasstring = str(len(response_body))
          return lengthasstring
      
      def get_full_name(dictRequest):
          itemCount = int(dictRequest['count'])
          #parse response as json
          response_dict=json.loads(dictRequest['response'])
          # Create list from JSON body
          response_body = response_dict['results']
          #Extract values to return
          return response_body[itemCount]['name']['first'] + " " + response_body[itemCount]['name']['last'] 
      
      def get_location(dictRequest):
          itemCount = int(dictRequest['count'])
          #parse response as json
          response_dict=json.loads(dictRequest['response'])
          # Create list from JSON body
          response_body = response_dict['results']
          #Extract values to return
          return response_body[itemCount]['location']['city'] + ", " + response_body[itemCount]['location']['state']
    3. Python 런타임 버전 필드에서 기본값을 3으로 유지합니다.
  10. 작업 창에서 Python 스크립트 > 함수 실행을 클릭하고 Python 스크립트 > 열기 작업 아래의 캔버스로 드래그합니다.
    1. Python 세션 필드에서 기본값을 유지합니다.
    2. 실행할 함수 이름 입력 필드에 get_node_count를 입력합니다.
    3. 함수에 대한 인수 드롭다운 목록에서 dResponseBody - 문자열을 선택합니다.

      python-execute
    4. 출력을 변수에 지정 드롭다운 목록에서 sTotalUserCount - 문자열을 선택합니다.
  11. 작업 창에서 사전 > Put을 클릭하고 Python 스크립트 > 열기 작업 아래의 캔버스로 드래그합니다.
    1. 사전 변수 필드에서 dRetrieveValue -Dictionary를 선택합니다.
    2. 이 키와 연결 필드에 response를 입력합니다.
    3. 새 값 드롭다운 목록에서 dResponseBody - 문자열을 선택합니다.
    4. 이전 값을 변수에 지정 드롭다운 목록에서 prompt-assignment - 문자열을 선택합니다.

      python-dict-open
  12. 작업 창에서 문자열 > 숫자로 변환을 클릭하고 사전 > Put 작업 아래의 캔버스로 드래그합니다.
    1. 문자열 입력 필드에 $sTotalUserCount$를 입력합니다.
    2. 출력을 변수에 지정 드롭다운 목록에서 nTotalUserCount - 숫자를 선택합니다.
      python-string-tonum
  13. 작업 창에서 루프 > 루프를 클릭합니다.
    1. 루프 유형 > 반복자의 드롭다운 목록에서 n회를 선택합니다.
    2. 시간 필드에 $$nTotalUserCount$를 입력합니다.
    3. 현재 값을 변수에 지정 드롭다운 목록에서 nCurrentUser - 숫자를 선택합니다.
      python-loop
  14. 작업 창에서 숫자를 클릭하고 감소를 선택한 다음, 루프 작업 안에 놓습니다.
    1. 수 입력 필드에 $nCurrentUser$를 입력합니다.
    2. 감소 값 입력 필드에 1을 입력합니다.
    3. 출력을 변수에 지정 드롭다운 목록에서 nCurrentUser - 숫자를 선택합니다.
      python-num-decrement
  15. 작업 창에서 숫자를 클릭하고 To 문자열을 선택한 다음, 이를 숫자 > 감소 아래 루프 작업 안에 놓습니다.
    1. 숫자 입력 필드에 $nCurrentUser$를 입력합니다.
    2. 소수점 이하 수 입력 필드에 0을 입력합니다.
    3. 출력을 변수에 지정 드롭다운 목록에서 sCurrentUser - 문자열을 선택합니다.
      python-num-tostring
  16. 작업 창에서 사전 > Put을 클릭하고 이를 루프 작업 안에 놓습니다.
    1. 사전 변수 필드에서 dRetrieveValue -Dictionary를 선택합니다.
    2. 이 키와 연결 필드에 count를 입력합니다.
    3. 새 값 드롭다운 목록에서 sCurrentUser - 문자열을 선택합니다.
    4. 이전 값을 변수에 지정 드롭다운 목록에서 prompt-assignment - 문자열을 선택합니다.
      python-dict-put
  17. 작업 창에서 Python 스크립트 > 함수 실행을 클릭하고 이를 루프 작업 안에 놓습니다.
    1. Python 세션 필드에서 기본값을 유지합니다.
    2. 실행할 함수 이름 입력 필드에 get_full_name를 입력합니다.
    3. 함수에 대한 인수 드롭다운 목록에서 dRetrieveValue - 사전을 선택합니다.
    4. 출력을 변수에 지정 드롭다운 목록에서 sFullName - 문자열을 선택합니다.
      python-script-execute
  18. 작업 창에서 Python 스크립트 > 함수 실행을 클릭하고 이를 루프 작업 안에 놓습니다.
    1. Python 세션 필드에서 기본값을 유지합니다.
    2. 실행할 함수 이름 입력 필드에 get_location를 입력합니다.
    3. 함수에 대한 인수 드롭다운 목록에서 dRetrieveValue - 사전을 선택합니다.
    4. 출력을 변수에 지정 드롭다운 목록에서 sLocation - 문자열을 선택합니다.
      python-script-execute-location
  19. 작업 창에서 메시지 상자를 클릭하고 이를 루프 작업 안에 놓습니다.
    1. 표시할 메시지 입력 필드에 다음을 입력합니다.
      Full Name: $sFullName$ Location: $sLocation$
    2. 메시지 상자 닫기까지 남은 시간 > 를 선택하고 5를 입력합니다.
      python msgbox
  20. 작업 창에서 Python 스크립트 > 닫기를 클릭하고 이를 루프 작업 밖에 놓습니다.
    1. Python 세션 필드에서 기본값을 유지합니다.
      python close
  21. 저장을 클릭하여 Bot을 저장한 다음 실행을 클릭합니다.
    Bot이 실행되고, 실행을 성공적으로 마치기 전에 각각 약 5초 동안 위치와 함께 사용자 5명의 전체 이름을 표시합니다.

Bot 오류 메시지가 표시되면 솔루션에 대한 다음 섹션을 참조하십시오. Getting Bot Error while executing Python Script/Function (A-People login required), Getting Bot Error or True value in message box while executing Python Script (A-People login required), 또는 An unexpected error occurred while executing Python Script command; Error code: bot.execution.error (A-People login required).