2014-07-09 5 views
0

Zapier/IFTTT는 어떻게 다른 API 제공 업체를위한 트리거와 동작을 구현합니까? 이를 수행하기위한 일반적인 접근법이 있습니까? 아니면 개인별로 구현됩니까?Zapier/IFTTT는 어떻게 다른 API 공급자에 대한 트리거와 동작을 구현합니까?

구현이 REST/Oauth를 기반으로한다고 생각합니다. 상위 수준에서 일반적인 것입니다. 그러나 Zapier/IFTTT의 경우 많은 트리거 조건, 필터를 정의합니다. 이러한 조건은 필터가 다른 공급자에 따라 달라야합니다. 개인 또는 제네릭에 해당 구현이 있습니까? 개인적으로는 막대한 노동력이 있어야합니다. 일반적인 경우, 어떻게해야합니까?

답변

0

저는 Zapier에 몇 가지 API를 구현 했으므로 여기서 적어도 부분적인 대답을 제공 할 수 있다고 생각합니다. 웹 훅을 사용하지 않는 경우, Zapier는 "id"문자열을 포함하는 가장 짧은 이름의 필드에 대한 서비스의 API 응답을 검사합니다. 이 필드를 변경하면 Zapier는 작업을 트리거합니다. 이는 id가 일반적으로 증분 또는 무작위라는 가정을 기반으로합니다.

나는 id 값을 다른 필드로 옮기고 트리거에 실패하거나 너무 자주 트리거 할 때 id에 다른 값을 쓰는 방법으로이 문제를 해결해야했습니다 (10으로 나누고 ID를 쓰면 트리거 감도를 줄일 수 있음). 예를 들어,). 모호성은 예를 들어 post_id 및 mesg_id와 같은 필드가 포함 된 API 응답에서도 문제가됩니다.

간단히 말해서 시스템은 정확한 추측을하지만, 특정 서비스에 대해 안정적으로 작동하게하려면 트리거 이벤트를 구성하는 항목에 대해 코드에서 구체적으로 지정해야합니다.

1

여기의 개발자는 간단합니다. 우리는 각각을 구현합니다!

OAuth와 같은 표준은 일부 API를 다른 API로 재사용하기 쉽지만 각 API에는 고유 한 종점과 고유 요구 사항이 있다는 사실을 알 수 없습니다. 하나의 API에서 작동하는 것은 다른 API에서 반드시 작동하지는 않습니다. 내부적으로 우리는 재사용 가능한 비트만큼 프로세스를 추상화했지만 새로운 API를 추가하기 위해서는 항상 몇 가지 작업이 필요합니다.

+0

답장을 보내 주셔서 감사합니다. – zgcharley

1

여기 PipeThru 개발자 ...

등의 OAuth 인증으로 다시 사용할 수있는 각 API에 공통 요소, 일반적인 데이터 형식 (JSON, XML, 등)이 있습니다. 대부분의 API는 RESTful 구현을 위해 노력합니다. 그러나 이론은 현실과 만나고 대부분의 API는 여기 저기에 있습니다.

각 서비스는 자체 엔드 포인트를 제공하며 주어진 서비스에 대해 공통으로 동의 한 엔드 포인트 세트는 없습니다. 예를 들어, CRM 소프트웨어 내에서 사람, 사람에 대한 메모, 해당 전화 번호, 주소 및 활동을 나타내는 방법이 명확하지 않습니다. 하나의 끝점 또는 여러 끝점을 제공합니까? 각각 어떻게 업데이트하나요? 레코드와 함께 접선 기록 (사람과 같은 회사와 같은)을 제공합니까? 각각의 서비스에 대한 특정 지식과 일부 데이터 정규화가 필요합니다.

대부분의 트리거에는 새 레코드 (고유 ID) 또는 업데이트 된 필드, 일반적으로 마지막 업데이트 타임 스탬프를 확인하는 작업이 포함됩니다. 대부분의 서비스는 ISO 8601 형식으로 타임 스탬프를 제공하므로 타임 스탬프를 쉽게 파싱 할 수 있지만 모든 사람이 파싱하지는 않습니다. Dropbox는 실제로 해시 값을 표시 할 수있는 델타 API 끝점을 제공하고 Dropbox는 그 지점에서 새롭거나 변경된 모든 것을 전송합니다. 저는 더 많은 API에서 델타 및/또는 활동 종점을보고 싶어합니다.

결론 각각의 개별 서비스를 통합하려면 많은 노력과 테스트가 필요합니다.

저는 Zapier가 다른 회사의 도구에 플러그인하기위한 API를 구현했음을 지적하겠습니다. Zapier가 API를 구현하고 Zapier가 데이터를 폴링하는 대신 Zapier에 새/업데이트 된 데이터를 전송하여 Zap 중 하나를 트리거 할 수 있습니다. 나는 이것을 균열에 대한 webhooks와 같이 생각하고 싶다. 이를 통해 Zapier는 각 프로그램을 프로그래밍하지 않고도 더 많은 서비스를 지원할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. – zgcharley