Revue - Sendy 동기화: Sendy 통화
이 글에서는 previous article에서 생성한 두 개의 데이터 세트(미가입 사용자와 가입 사용자)를 살펴보고 Sendy에 추가/제거하고자 합니다.
나와 함께 코딩하고 싶다면 오늘은 this is the starting point code.
Node.js에서 Sendy API 호출하기
이전 기사에서 우리는 이미 프로젝트와 종속 항목을 설정하여 이러한 항목을 이 항목에 활용했습니다.
그러나 Sendy's API via our API platform을 쿼리했을 때 다음 키가 필요하다는 것을 알게 되었습니다.
검색한 후에는
.env
파일에 추가하십시오.REVUE_API_TOKEN={YOUR_TOKEN}
SENDY_API_KEY={YOUR_TOKEN}
SENDY_LIST={LIST_ID}
우리가 할 수 있기를 원하는 첫 번째 일은 사용자 구독을 취소하는 것입니다.
예를 들어 Revue에서 가져온 하나의 항목부터 시작하겠습니다.
[
{
"id": 999999,
"list_id": 305882,
"email": "[email protected]",
"first_name": null,
"last_name": null,
"last_changed": "2022-01-08T04:30:04.492Z"
}
]
여기서는 이메일 주소만 있으면 됩니다.
Sendy API를 호출하기 위해 POST를 수행하려는 데이터 속성을 설정하기 위해 양식 데이터를 사용해야 한다는 것도 배웠습니다.
배열을 받아 사용할 수 있는 양식 데이터로 바꾸는 도우미 함수를 만들어 봅시다.
Note: You can use the
form-data
package, but I prefer native solutions as seen below
const convertToFormData = (data) => {
const formData = new URLSearchParams();
Object.keys(data).forEach((key) => {
formData.set(key, data[key]);
});
return formData;
};
이 함수는 개체에서 키를 가져오고 URL 검색 매개변수로 설정하여 개체를 변환합니다.
양식 데이터로 사용할 수 있습니다.
이 기능을 다음과 같이 사용할 수 있습니다.
const data = {
api_key: 'test',
key1: 'testing',
};
console.log(convertToFormData(data));
// URLSearchParams { 'api_key' => 'test', 'key1' => 'testing' }
그런 다음 계속해서 Sendy API를 호출할 수 있는 함수를 정의할 수 있습니다.
이 함수를 다시 전역화하여 쉽게 재사용할 수 있습니다.
const callSendyAPI = async (endpoint, body) => {
const response = await fetch(`https://sendy.daily-dev-tips.com/${endpoint}`, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
method: 'POST',
body,
}).then((res) => res.status);
return response;
};
Revue와 비교할 때 가장 큰 차이점은
POST
방식을 사용한다는 것입니다.또한 양식 데이터를 수락하고 전달하도록 콘텐츠 유형을 설정합니다.
이 함수를 호출하기 전에 항상 Sendy로 보내야 하는 데이터로 기본 개체를 만들 수 있습니다. (API 키 및 목록 ID)
const sendyDefaults = {
api_key: process.env.SENDY_API_KEY,
list: process.env.SENDY_LIST,
};
함수를 호출하기 위해 기본 함수에서 호출할 수 있습니다.
(async () => {
const unsubscribeSendy = await callSendyAPI(
'/unsubscribe',
convertToFormData({
...sendyDefaults,
email: '[email protected]',
})
);
console.log(unsubscribeSendy);
})();
보시다시피 spread operator을 사용하여 기본값을 사용하고 여기에 email 속성을 추가합니다.
응답이 일반 텍스트이므로 이 코드를 실행할 때만 상태 코드를 얻습니다.
하지만 내 Sendy 설치를 보면 동작이 진행되는 것을 볼 수 있습니다!
루핑 Revue 구독하지 않은 사용자
구독 취소가 작동하는 것을 알고 있으므로 이제 두 가지를 결합하고 구독 취소 리뷰를 반복하여 이 요청을 Sendy에 보낼 수 있습니다.
(async () => {
const revueUnsubscribed = await callRevueAPI('subscribers/unsubscribed');
for (const unsubscriber of revueUnsubscribed) {
const unsubscribeSendy = await callSendyAPI(
'/unsubscribe',
convertToFormData({
...sendyDefaults,
email: unsubscriber.email,
})
);
console.log(unsubscribeSendy);
}
})();
이 코드는 구독하지 않은 Revue 사용자를 반복하고 Sendy에서 구독을 취소합니다.
구독 사용자
우리가 구축하고 있는 통합의 주요 이점은 사람들이 Revue를 통해 가입하고 Sendy 뉴스레터에 자동으로 추가될 수 있다는 것입니다.
이를 달성하기 위해 구독 취소와 유사한 접근 방식을 사용할 수 있지만 단순히 다른 필드를 전달할 수 있습니다.
const subscribeSendy = await callSendyAPI(
'/subscribe',
convertToFormData({
...sendyDefaults,
email: '[email protected]',
silent: true,
})
);
console.log(subscribeSendy);
실행 시
200
코드를 얻어야 합니다. Sendy에서 보면 사용자가 구독 중이어야 합니다.Looping Revue 구독 사용자
Revue에서 구독한 모든 사람들을 반복해서 Sendy에 추가해 보겠습니다.
Note: This script will handle try and subscribe people every time. We currently don't check if they are already in the system.
(async () => {
const revueSubscribed = await callRevueAPI('subscribers');
for (const subscriber of revueSubscribed) {
const subscribeSendy = await callSendyAPI(
'/subscribe',
convertToFormData({
...sendyDefaults,
email: subscriber.email,
silent: true,
})
);
console.log(subscribeSendy);
}
})();
그리고 그게 다야. 이 코드를 실행하면 모든 Revue 구독자가 Sendy에 추가됩니다.
Note: You might want to wait and do an import into Revue first to sync the existing subscribers both ways.
GitHub에서 이 문서의 코드를 찾을 수 있습니다.
읽어주셔서 감사합니다. 연결합시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(Revue - Sendy 동기화: Sendy 통화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/revue-sendy-sync-sendy-calls-p77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)