Azure 기능을 사용하여 YouTube 리뷰 알림
클릭 https://docs.microsoft.com/azure/azure-functions/ Microsoft Azure에서 서버 없는 기능을 활성화하는 방법에 대한 자세한 내용을 확인하십시오.
만약 우리 조직에 유튜브 영상 채널이 하나 있다면, 사용자는 그것에 대해 의문이나 의심을 제기할 수 있다.만약 한 사람만 통로를 검사한다면, 정기적으로 통지하면 충분할 것이다.그러나 만약 우리가 사용자가 우리의 동영상에 댓글을 올릴 때 다른 사람에게 통지하고 싶다면 무슨 일이 일어날까요?
본고에서 우리는 Azure Functions 및 두 개의 제3자 API를 사용하여 JavaScript 서버 없는 응용 프로그램을 만들어서 유튜브 채널의 모든 동영상에 새로운 댓글을 추가할 때 이메일을 보낼 것이다.어플리케이션에서 호출하여 Google Developer Project 를 사용하여 API 키를 가져옵니다.
알림을 자동으로 가져오는 유사한 기능이 없기 때문에, 이 점을 실현하기 위해 서버 없는 프로그램을 만들 것입니다.이것은 시간표(초, 분 또는 시간)에 따라 실행되며, 특정 채널의 모든 동영상에 새로운 댓글이 있는지 검증할 것입니다.이를 위해 YouTube API를 호출합니다.새 의견을 받으면 이 응용 프로그램은 SendGrid API 을 사용하는 사용자 목록에 알림 이메일을 보냅니다.
최종 소스 코드를 보려면 에서 저장소를 볼 수 있습니다.
이 프레젠테이션에 필요한 의존 항목을 Node's package manager 로 설치합니다.
YouTube API 키를 얻기 위한 구글 개발자 프로젝트 만들기
API 키를 얻기 위해 SendGrid 계정 만들기
SendGrid는 전자 메일을 보내는 데 사용되는 강력한 도구이지만 사용자의 상호작용을 추적할 수도 있다.마케팅 활동을 작성하고 보고서를 생성하며 다양한 유형의 통계를 볼 수 있습니다.
Sign Up on SendGrid . 계정을 만들려면 신용카드가 필요 없습니다.무료층은 본 강좌를 완성하기에 충분하다.
이후 필요한 경우 우리는 우리가 나중에 응용 프로그램에서 어떤 전자 우편 계정을 우리가 통지한 발신자로 사용할 것인지, 그리고 이 계정과 관련된 상세한 정보를 밝히기 위해 정보를 추가해야 한다.
Verify a Single Sender
Azure 계정 만들기
는 응용 프로그램의 구축, 테스트, 배치와 관리에 사용되는 클라우드 컴퓨팅 서비스이다.그것은 우리의 응용 프로그램을 돕기 위해 서로 다른 제품을 제공한다.우리의 프로젝트에 대해 우리는 Microsoft Azure, Azure의 서버 없는 응용 프로그램 서비스를 사용할 것이다.이 함수를 만들기 위해 다른 언어를 지원합니다.우리는 JavaScript를 사용할 것입니다.
Azure Functions . 제공된 많은 서비스는 모두 무료층이 있고 다른 기능도 시용 기간이 있다.너는 이 시범을 위해 어떤 비용도 지불할 필요가 없다.
Azure 기능 확장 설치
내가 사용하는 IDE는 입니다.이것은 기능이 강한 편집기로, 많은 플러그인과 사용자 정의 항목이 있다.이 프레젠테이션에서 사용할 것을 권장합니다. Visual Studio Code 이 프레젠테이션은 우리의 업무를 더욱 쉽게 할 뿐만 아니라, 이 기능을 만들고 배치하는 데 도움을 줄 것입니다.
Azure Functions Extension
설치 확장 후 왼쪽 메뉴에 Azure 아이콘이 있어야 합니다.이것을 클릭하고 Azure 계정으로 로그인하면 IDE가 개인 계정으로 연결됩니다.
마지막으로 로컬 디버깅을 사용하기 위해서는 설치가 필요합니다.
이제 인코딩할 때가 됐어!
Azure 기능 핵심 도구 새로운 Azure 기능 항목 만들기
Visual Studio 코드의 동일한 메뉴에 로그인하여 Azure 구독을 볼 수 있습니다.폴더가 있는 아이콘과'새 항목 만들기'라고 쓰여진thunder를 누르고 다음 절차를 따르십시오.
여기 있다 NPM 패키지 설치
YouTube API를 호출하려면 를 사용합니다.Azure 기능을 사용할 수 있도록 터미널에서
npm install --save googleapis
패키지를 설치해야 합니다.SendGrid API의 경우 전자 메일을 보낼 수 있는 NPM 패키지도 제공합니다.
npm install --save @sendgrid/mail
를 실행하여 Google APIs Node.js Client [메일 서비스]를 설치합니다.SendGrid v3 Web API 환경 변수 정의
우리는 일부 키 값을 환경 변수로 저장해야 한다.
local.settings.json
파일로 이동하여 이 키를 값에 추가합니다."YouTubeAPIKey": "[YOUTUBE_API_KEY]", // The API Key generated in your Google Developer Project.
"YouTubeChannelID": "[YOUTUBE_CHANNEL_ID]", // The ID of the YouTube channel you want to watch.
"SendGridAPIKey": "[SENDGRID_API_KEY]", // SendGrid API Key.
"EmailFrom": "[SENDER_EMAIL]", // The sender email for the notifications.
"EmailTo": "[RECEIVER_EMAIL]" // The receiver email for the notifications.
채널 ID는 추적하려는 YouTube 채널의 식별자입니다.보시면 채널의 URL이 https://www.youtube.com/channel/[ChannelID]
처럼 보입니다."EmailTo"
여러 전자 메일 주소를 포함할 수 있습니다.쉼표 ","로 구분해야 합니다.또한 Azure 스토리지 계정에 대한 연결을 설정해야 합니다.이렇게 하려면 이전에 생성된 연결 문자열을 키의 값
AzureWebJobsStorage
으로 붙여넣으십시오.함수
이제 프로젝트 디렉토리의
index.js
파일로 이동합니다.우리는 응용 프로그램을 작성하기 시작할 것이다.우선 YouTube와 SendGrid API 클라이언트를 초기화합니다.우리는 이전 절에 설치된 NPM 패키지와 우리가 정의한 환경 변수를 사용할 것이다.함수의 코드는 다음과 같습니다.
const { google } = require("googleapis");
const sendGridClient = require("@sendgrid/mail");
const youtubeClient = google.youtube({
version: "v3",
auth: process.env["YouTubeAPIKey"],
});
sendGridClient.setApiKey(process.env["SendGridAPIKey"]);
그 후에 특정 채널의 모든 동영상에 게시된 마지막 댓글 목록을 얻기 위해 유튜브 API를 호출할 것입니다. const response = await youtubeClient.commentThreads.list({
part: "snippet,replies",
allThreadsRelatedToChannelId: process.env["YouTubeChannelID"],
maxResults: 100,
order: "time",
});
여기에서는 다음 사항을 고려해야 합니다.order: "time"
최신의 순서에서 최신의 순서로 설정합니다. if (response.data) {
const lastRun = new Date(myTimer.scheduleStatus.last);
response.data.items.forEach(function (comment) {
const topLevelComment = comment.snippet.topLevelComment.snippet;
const topLevelCommentDate = new Date(topLevelComment.publishedAt);
if (topLevelCommentDate.getTime() > lastRun.getTime()) {
sendEmail(
topLevelComment.authorDisplayName,
topLevelComment.textDisplay,
`https://www.youtube.com/watch?v=${topLevelComment.videoId}&lc=${comment.id}`
);
}
if (comment.snippet.totalReplyCount > 0) {
comment.replies.comments.forEach(function (reply) {
const replyDate = new Date(reply.snippet.publishedAt);
if (replyDate.getTime() > lastRun.getTime()) {
sendEmail(
reply.snippet.authorDisplayName,
reply.snippet.textDisplay,
`https://www.youtube.com/watch?v=${reply.snippet.videoId}&lc=${reply.id}`
);
}
});
}
});
}
분석을 해보겠습니다. if (response.data) {
우리가 어떤 결과를 얻었을 때만 우리는 이 함수를 계속 집행할 수 있다. const lastRun = new Date(myTimer.scheduleStatus.last);
Azure 함수는 timerTrigger 함수의 실행과 관련된 데이터를 포함하는
를 공개했다.우리는 그것을 사용하여 마지막 실행 시간을 얻고 주석 날짜/시간과 비교할 수 있다.만약 평론이 비교적 새롭다면, 우리는 사용자에게 통지하지 않았다고 가정하기 때문에, 우리는 이메일을 보낼 것이다.API에서 얻은 모든 의견을 비교해야 합니다. response.data.items.forEach(function (comment) {
const topLevelComment = comment.snippet.topLevelComment.snippet;
const topLevelCommentDate = new Date(topLevelComment.publishedAt);
if (topLevelCommentDate.getTime() > lastRun.getTime()) {
sendEmail(
topLevelComment.authorDisplayName,
topLevelComment.textDisplay,
`https://www.youtube.com/watch?v=${topLevelComment.videoId}&lc=${comment.id}`
);
}
댓글에 대한 답변도 있고요. if (comment.snippet.totalReplyCount > 0) {
comment.replies.comments.forEach(function (reply) {
const replyDate = new Date(reply.snippet.publishedAt);
if (replyDate.getTime() > lastRun.getTime()) {
sendEmail(
reply.snippet.authorDisplayName,
reply.snippet.textDisplay,
`https://www.youtube.com/watch?v=${reply.snippet.videoId}&lc=${reply.id}`
);
}
});
}
우리는 sendEmail
라는 함수를 두 번 호출하여 주석의 사용자, 본문, 직접 URL을 매개 변수로 보냈다는 것을 알아야 합니다.전자 메일을 보내기 위해 SendGrid API를 호출하는 함수를 만듭니다.주 함수에서 함수를 작성하는 코드입니다. function sendEmail(user, comment, url) {
let body = "There is a new comment in one of your videos\n";
body += `User: ${user}\n`;
body += `Comment: ${comment}\n`;
body += `Url: ${url}`;
const msg = {
to: process.env["EmailTo"],
from: process.env["EmailFrom"],
subject: "There is a new comment in your YouTube Channel",
text: body,
};
sendGridClient
.send(msg)
.then(() => {
console.log("Email sent");
})
.catch((error) => {
console.log(error.response.body);
});
}
우리가 말한 바와 같이 sendEmail
사용자, 의견 및 URL을 수신합니다.그런 다음 전자 메일 본문을 만들고 모든 전자 메일 세부 정보를 포함하는 msg
을 실례화합니다.그런 다음 초기화된 클라이언트를 사용하여 SendGrid API를 호출하여 사용자에게 이메일을 보냅니다.이것이 바로 Azure 기능의 모든 코드입니다.로컬에서 실행하고 통합 디버거를 사용하여 Visual Studio 코드에서 직접 디버깅할 수 있습니다(F5 키를 눌러 디버깅).로컬 디버깅을 할 때에도timerTrigger를 만들었다고 가정하면 지정한 시간 간격을 따를 것입니다.따라서 더 좋은 방식으로 디버깅을 하려면 함수를 더 자주 실행할 수 있는 비교적 작은 시간 간격을 정의해야 할 수도 있습니다.
타이머 객체 Azure에 기능 배포
Azure 기능 확장을 사용하면 Visual Studio 코드에서 쉽게 배포할 수 있습니다.
마지막 한마디
이 프레젠테이션에서 우리는 자바스크립트와 Visual Studio 코드를 사용하여 Azure 함수 (시간 트리거) 를 만들고, 디버깅하고, 배치하는 방법을 배웠다.우리는 YouTube와 SendGrid API와의 기본적인 통합을 개발했다.
다음 단계는 함수에 소모된 자원을 분석하고 Azure에서 작업할 때 평가 하는 것이다.이 기능을 보존하고 싶지 않으면 자원을 정리할 수 있습니다.Azure: Functions explorer의 Function App을 마우스 오른쪽 단추로 클릭하고 Delete Function App을 선택하십시오.
Reference
이 문제에 관하여(Azure 기능을 사용하여 YouTube 리뷰 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fgiuliani/notify-youtube-comments-with-azure-functions-1ib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)