Microsoft Power Automate에 폴링 트리거 사용

폴링 트리거는 기본적으로 새 데이터를 찾기 위해 주기적으로 서비스를 호출하는 이벤트입니다. 폴링 트리거는 새 데이터를 사용할 수 있는지 확인하기 위해 이벤트를 시작하는 반면, 웹후크는 서비스에서 푸시하는 새 데이터에 응답한다는 점에서 차이가 있습니다. 흐름에서 새 데이터를 사용할 수 있다는 것이 확인되면 이 데이터로 작업을 할 수 있습니다. 이 자습서에서는 폴링 트리거를 사용하여 새 데이터를 사전에 검색하는 방법을 보여줍니다.

필수 구성 요소

폴링 트리거의 작동 원리

폴링 트리거는 상태를 설정하면 시작되며 정기적으로 업데이트를 확인합니다. 트리거는 그런 다음 마지막 상태 업데이트 이후의 모든 새 데이터를 요청합니다. 또한 트리거는 요청 간의 상태 컨텍스트를 유지합니다.

다음 예에서 폴링 트리거가 새 데이터를 가져오는 방법을 간략히 볼 수 있습니다.

폴링 트리거가 데이터를 가져오는 방법

  1. 흐름 런타임이 커넥터의 API에 대한 트리거의 초기 호출을 수행합니다.

  2. 그런 다음 커넥터가 백 엔드 서비스를 호출합니다.

  3. 백 엔드 서비스가 모든 현재 데이터를 다시 커넥터로 반환합니다.

  4. 그러면 커넥터가 202 승인 메시지, 다시 시도 간격 및 현재 상태를 포함하는 위치 헤더를 반환합니다. 다시 시도 간격은 초 단위입니다. 이 첫 번째 호출은 항상 데이터의 예비 상태를 설정하는 데 사용됩니다.

  5. 다시 시도 간격이 시간 초과되면 흐름 런타임이 위치 헤더 및 현재 상태를 사용하여 커넥터에 대한 또 다른 호출을 합니다. 이 예에서는 1과 같습니다.

  6. 이제 커넥터는 올바른 데이터 세트가 반환될 수 있도록 적절한 필터링을 수행할 적절한 API를 호출하기 위해 이 상태가 1과 같다는 사실을 알고 있습니다. 이 예의 커넥터는 이 상태를 만든 날짜가 특정 타임스탬프보다 크다고 알려주는 필터링된 쿼리로 변환합니다.

  7. 이 예에서는 만든 날짜 이후로 새 데이터가 없으므로 빈 값 세트가 다시 커넥터로 전송됩니다.

  8. 그러면 커넥터가 202 승인 메시지, 다시 시도 간격 및 상태가 변경되지 않은 위치 헤더를 반환합니다.

  9. 다시 시도 간격이 또 다시 시간 초과되면 흐름 런타임에서 동일한 위치 헤더 및 상태를 사용하여 커넥터에 대한 또 다른 호출을 합니다.

  10. 마찬가지로, 커넥터는 만든 날짜를 사용하여 적절한 필터링을 합니다.

  11. 이번에는 만든 날짜 이후에 새 데이터가 있으므로, 백 엔드는 모든 새 데이터 값을 다시 커넥터로 반환합니다.

  12. 그러면 커넥터는 200 OK 메시지, 다시 시도 간격, 새 상태 값이 포함된 위치, 만든 날짜 이후에 사용할 수 있게 된 모든 새 데이터를 포함하는 값의 배열을 반환합니다. 이 시점에서 흐름이 시작됩니다.

UI에서 폴링 트리거 만들기

이 섹션에서는 Power Automate UI에서 폴링 트리거를 만드는 방법을 보여줍니다. 이 절차에서는 예제 TripPin 서비스를 시작 지점으로 사용합니다. TripPin 서비스는 사람 목록과 사람들의 출장 정보를 포함하는 매우 간단한 REST API입니다.

TripPin 서비스를 사용하려면 먼저 서비스에 필요한 URL을 동적으로 만들어야 합니다. 브라우저의 주소 표시줄에 https://services.odata.org/TripPinRESTierService를 입력합니다. 그러면 이 데모에 필요한 메타데이터가 반환됩니다. 나중에 사용할 수 있도록 메타데이터를 복사하여 파일에 저장합니다.

TripPin 서비스를 설정하고 폴링 트리거를 만들려면 다음을 수행합니다.

  1. Power Automate에서 데이터 > 사용자 지정 커넥터 탭을 선택합니다.

  2. 사용자 지정 커넥터 창에서 새 사용자 지정 커넥터를 선택한 다음, 빈 페이지에서 만들기를 선택합니다.

  3. 사용자 지정 커넥터 만들기 대화 상자에서 사용자 지정 커넥터의 이름을 입력하고(이 예제에서는 폴링 테스트), 계속을 선택합니다.

  4. 일반 페이지에서 설명 및 호스트를 지정합니다. 이 예제에서는 TripPin 메타데이터에 반환된 services.odata.org URL을 호스트로 사용합니다.

    매개 변수
    설명 "TripPin은 출장 웹 사이트 예제입니다."
    호스트 "services.odata.org"

    설명 및 호스트 추가

  5. 보안 페이지에서 인증 유형으로 인증 없음을 선택합니다.

    폴링 인증

  6. 정의 페이지에서 + 새 트리거를 선택하고 트리거에 대한 설명을 작성합니다. 이 예제에서는 개인의 일정에 새 출장이 추가될 때 발생하는 트리거를 만듭니다.

    새 트리거 만들기

    매개 변수
    Summary(요약) "새 출장 추가 시 트리거"
    설명 "새 출장 추가 시 트리거"
    작업 ID "OnNewTrip"
    표시 "none"(추가 정보는 아래 목록 참조)
    트리거 형식 "폴링"

    흐름에서 작업 및 매개 변수의 표시 영역 속성에는 다음 옵션이 있습니다.

    • 없음: 흐름에 정상적으로 표시
    • 고급: 추가 메뉴 아래에 숨겨져 있습니다.
    • 내부: 사용자에게 표시되지 않습니다.
    • 중요: 사용자에게 항상 먼저 표시됩니다.
  7. 요청 영역에는 작업에 대한 HTTP 요청을 기반으로 정보가 표시됩니다. 샘플에서 가져오기를 선택합니다.

    정의 페이지 - 샘플에서 가져오기

  8. 샘플에서 가져오기 창에서 폴링 트리거에 대한 요청을 정의합니다. 동사로는 GET을 선택합니다. 서비스에 필요한 URL을 동적으로 만들 때 받은 메타데이터에서, 메타데이터의 URL 주소를 샘플에서 가져오기 창의 URL에 복사합니다. 주소 뒤에 /People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc를 추가합니다. 예:

    https://services.odata.org/TripPinRESTierService/(S(<service number>))/People('{Person}')/Trips?$filter=TripId gt 0&$orderby=TripId desc

    참고

    URL에서 <service number> 대신 메타데이터의 실제 숫자를 사용해야 합니다.

    이 URL 예제에서는 개별 사용자에 대한 요청을 만들 것이며, {Person}은 사용자가 흐름에서 지정할 수 있는 런타임 변수입니다. 다음으로, 사용자가 입력하는 특정 인물의 출장 정보를 가져오도록 지정합니다.

    그러나 모든 출장 정보를 가져오려는 것은 아니고, 출장 정보가 마지막으로 폴링된 이후의 새 출장 정보만 가져오려 합니다. $filter=TripId gt 0 식은 이전에 폴링한 TripIds보다 출장의 TripIds를 반환하여 새 출장 정보를 가져옵니다. 여기서 사용되는 숫자 0은 폴링 트리거가 발생할 때마다 자동으로 업데이트됩니다.

    또한 $orderby=TripId desc 식은 데이터 순서가 TripId를 기준으로 내림차순으로 반환됨을 나타냅니다. 내림차순 반환을 트리거에서 요구하기 때문입니다. 즉, 가장 최근의 매개 변수(이 예에서는 TripId)가 데이터 배열의 첫 번째 반환 값이 되도록 백 엔드 서비스에서 반환된 결과는 트리거 매개 변수에서 역순으로 정렬되어야 합니다.

    샘플에서 가져오기 메뉴

    가져오기 단추를 선택하여 샘플 데이터를 가져옵니다. 이제 요청 영역에 동사, URL, 경로 및 쿼리 매개 변수가 표시됩니다.

  9. 요청 영역에서 $filter 쿼리 매개 변수를 선택한 다음, 편집을 선택하여 매개 변수 대화 상자를 엽니다.

    filter 매개 변수 편집

  10. $filter매개 변수 대화 상자에서 표시 유형 선택 영역을 내부로 설정합니다. 이 매개 변수는 커넥터에서 내부적으로만 사용되므로 사용자가 변경할 수 없습니다. 표시 유형 설정에 대한 자세한 내용은 x-ms-visibility OpenAPI 확장을 참조하세요.

    뒤로를 선택하여 요청 영역으로 돌아갑니다.

    filter 매개 변수 편집

  11. 요청 영역에서 $orderby 쿼리 매개 변수를 선택한 다음, 편집을 선택하여 매개 변수 대화 상자를 엽니다.

  12. $orderby매개 변수 대화 상자에서 필수입니까? 선택 영역을 로, 표시 유형 선택 영역을 내부로 설정합니다. 마찬가지로 이렇게 설정하면 사용자가 이 매개 변수를 변경할 수 없습니다.

    또한 기본값 상자의 값에 TripId desc를 입력합니다. 이렇게 설정하면 결과가 역순으로 제공됩니다.

    뒤로를 선택하여 이전 영역으로 돌아갑니다.

    orderby 매개 변수 편집

  13. 응답 영역에는 작업에 대한 HTTP 응답을 기반으로 정보가 표시됩니다. 기본 응답 추가를 선택합니다.

    기본 폴링 응답 추가

  14. 폴링 트리거에 대한 응답을 정의한 다음 가져오기를 선택합니다. 아래에 제공된 샘플을 응답 본문에 사용합니다. 이 샘플은 응답의 스키마를 자동으로 빌드합니다.

    폴링 응답 본문 추가

    
    {
        "@odata.context":"https://services.odata.org/TripPinRESTierService/(S(<service number>))/$metadata#Collection(Microsoft.OData.Service.Sample.TrippinInMemory.Models.Trip)",
        "value":[
            {
                "TripId":2,
                "ShareId":"9ce142c3-5fd6-4a71-848e-220ebf1e9f3",
                "Name":"Honeymoon",
                "Budget":2650,
                "Description":"Happy honeymoon trip",
                "Tags":[
                    "Travel",
                    "honeymoon"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            },
            {
                "TripId":1,
                "ShareId":"f94e9116-8bdd-4dac-ab61-08438d0d9a71",
                "Name":"Trip in Beijing",
                "Budget":2000,
                "Description":"Trip from Shanghai to Beijing",
                "Tags":[
                    "Travel",
                    "Beijing"
                ],
                "StartsAt":"2014-02-01T00:00:00Z",
                "EndsAt":"2014-02-04T00:00:00Z"
            }
        ]
    }   
    

    참고

    URL에서 <service number> 대신 메타데이터의 실제 숫자를 사용해야 합니다.

  15. 트리거 구성 영역에서 TripPin의 상태 변화를 모니터링하는 데 사용되는 매개 변수를 선택합니다. 이 예제에서는 $filter 매개 변수를 입력합니다.

    이 예에서는 선택한 쿼리 매개 변수를 전달할 값을 지정하세요에 다음 식을 사용합니다.

    TripId gt @{triggerBody().value[0].TripId}

    이 식은 트리거가 실행될 때마다 최신 결과를 가져오는 데 사용됩니다. 여기서 사용하는 식에서는 TripId가 나머지 식에서 반환된 값보다 크면 트리거가 실행됩니다. TripId가 식의 나머지 부분에서 반환된 값보다 크지 않으면 트리거가 발생하지 않습니다.

    트리거 데이터가 들어 있는 컬렉션 선택에서 @triggerBody().value를 선택합니다. 백 엔드 서비스에서 반환되는 트리거 데이터를 포함하는 배열입니다.

    폴링 트리거 구성

  16. 마법사 위쪽에서 커넥터 만들기를 선택합니다.

폴링 트리거 사용

이제 모든 항목이 구성되었으므로 흐름에서 폴링 트리거를 사용할 수 있습니다. 이 섹션에서는 특정 인물에 대한 새 출장이 기록될 때마다 백 엔드 서비스의 변경 내용을 폴링하는 흐름을 만듭니다.

  1. flow.microsoft.com의 페이지 왼쪽에서 만들기를 선택합니다.

  2. 비어 있는 상태에서 시작에서 인스턴트 흐름을 선택합니다.

  3. 인스턴트 흐름 빌드 대화 상자에서 건너뛰기 버튼을 선택합니다.

  4. 검색 상자에 새 출장이 추가될 때 트리거를 입력합니다.

    검색 상자의 검색 텍스트를 보여주는 스크린샷.

    목록에서 트리거로 사용할 항목을 선택합니다.

  5. 사람 흐름 상자에 출장을 검사하려는 사람으로 russellwhyte를 입력한 다음, + 새 단계를 선택합니다.

    사람 상자와 새 단계 버튼을 보여주는 스크린샷.

  6. 작업 선택 대화 상자에서 기본 제공 탭을 선택한 다음, 날짜/시간을 선택합니다.

    작업 선택 대화 상자를 보여주는 스크린샷.

  7. 날짜/시간에서 현재 시간을 선택합니다.

    현재 시간 버튼을 보여주는 스크린샷.

  8. 저장을 선택하여 새 흐름을 저장합니다.

확인 및 문제 해결

모든 항목이 올바르게 설정되었는지 확인하려면 내 흐름을 선택한 다음, 새 출장이 추가될 때 트리거 -> 현재 시간 흐름을 선택하여 실행 기록을 살펴봅니다. 흐름이 아직 실행되지 않았기 때문에 현재 기록에는 아무 것도 표시되지 않습니다.

흐름을 테스트하려면 Postman 애플리케이션을 열고 TripPin에 새 데이터를 추가해야 합니다.

  1. Postman에서 실행 패드 탭 옆에 있는 + 아이콘을 선택합니다.

  2. 제목 없는 요청에서, 왼쪽의 드롭다운 상자에서 POST를 선택한 다음, 요청 URL 입력 상자에 다음 주소를 입력합니다.

    https://services.odata.org/TripPinRESTierService/(S(<Service number))/People('russellwhyte')/Trips

    참고

    URL에서 <service number> 대신 메타데이터의 실제 숫자를 사용해야 합니다.

  3. POST 요청에서 본문 탭을 선택한 다음, 원시를 선택합니다. 원시 오른쪽에 있는 드롭다운에서 JSON을 선택합니다.

  4. 텍스트 상자에 다음 텍스트를 입력합니다.

    {
         "TripId": 190,
         "ShareId": "9d9b2fa0-efbf-490e-a5e3-bac8f7d47354",
         "Name": "Trip in US",
         "Budget": 5000,
         "Description": "Trip from San Francisco to New York City",
         "Tags": [
             "business",
             "New York meeting"
         ],
         "StartsAt": "2014-01-01T00:00:00Z",
         "EndsAt": "2014-01-04T00:00:00Z"
    }
    
  5. 보내기를 선택하여 TripPin 사이트에 POST 메시지를 보냅니다.

    POST 메시지 보내기

    응답이 201 Created 상태로 반환됩니다.

이제 내 흐름을 열 때 새 출장이 추가될 때 트리거 -> 현재 시간 흐름을 선택하면 트리거가 발생했다는 실행 기록을 볼 수 있습니다.

트리거가 발생함

참고

Postman에서 같은 사람에 대해 또 다른 POST 요청을 실행할 때에는 JSON 본문에서 TripId 값을 변경해야 합니다. 그렇지 않으면 409 충돌 오류가 발생합니다.

요약

모든 항목이 올바르게 구성된 경우 TripPin에 새 출장이 추가될 때마다 Microsoft Power Automate에서 알림을 받게 됩니다.

다음 단계

피드백 제공

커넥터 플랫폼 관련 문제 또는 새로운 기능 아이디어에 대한 피드백을 주셔서 정말 감사합니다. 피드백을 제공하려면 문제 제출 또는 커넥터 관련 도움말 보기로 이동하여 피드백 유형을 선택하십시오.