Cloudflare Workers로 Slack 봇 구축
This article was published on Wednesday, October 12, 2022 by @ The Guild Blog
Cloudflare Workers로 Slack 봇 구축
소개
크거나 작은 회사는 복잡한 시스템입니다. 모든 회사는 효율적으로 작업할 수 있는 올바른 방법을 찾아야 합니다. 일상 업무를 효율적으로 관리하는 데 도움이 되는 많은 응용 프로그램이 있습니다.
최근에 우리는 The Guild 직원 시스템 프로세스에서 최적화되지 않은 일부를 발견했습니다.
그래서 우리는 몇 가지 솔루션에 대해 생각했고 우리에게 도움이 되고 다른 사람들에게도 가치가 있을 수 있는 내부 도구를 만들기로 결정했습니다.
이러한 솔루션 중 하나는 Cloudflare Workers의 GitHub Slack 봇 알림이었습니다.
Cloudflare 작업자란 무엇입니까?
Cloudflare Workers는 서버리스 실행 환경을 제공하는 플랫폼입니다. 이 환경에서는 전체 응용 프로그램을 만들 수 있습니다.
이 플랫폼은 전 세계 클라우드 네트워크에서 실행됩니다.
Cloudflare Workers로 무엇을 할 수 있나요?
Workers 플랫폼에는 설계하려는 배포 흐름에 직접 통합할 수 있는 새로운 도구 세트와 멋진 API가 함께 제공됩니다. 높은 수준에서 멋진 기능을 많이 만들 수 있습니다.
시작하기 - 설치 설정
Cloudflare는 쉽고 빠른 설치를 제공합니다 - You can find it here .
모든 요구 사항을 설치 및 설정한 후 Slack 봇을 만들기 위해 수행한 작업에 대해 이야기해 보겠습니다.
모든 Cloudflare 패키지를 설치하고
wrangler init
를 실행하면 다음index.ts
파일이 생성됩니다.export default {
async fetch(request) {
return new Response('Hello World!')
}
}
이 함수는 작업자 URL의 변경 사항을 가져옵니다.
The Guild는 Cloudflare Workers로 무엇을 구축하고 있나요?
Cloudflare는 일부 기능을 예약하는 옵션도 제공합니다. 이 함수를 인덱스 파일에 추가할 수 있습니다.
```ts 파일명="index.ts"
비동기 예약(
컨트롤러: ScheduledController,
환경: 환경,
ctx: 실행 컨텍스트
): 약속하다 {
실행 대기(env);
}
The `run` function is our main function that gets the `ENV` environment variable secret and executes the code we create.
Here you can see the `run` function, we can write any code we want to schedule in the Cloudflare Workers. We create a Slack bot that sends a daily message about all open pull requests.
```ts filename="index.ts"
export async function run(env: Env) {
const slack = createSlackClient(env.SLACK_TOKEN)
// We use Slack Client to send messages
const octokit = new Octokit({ auth: env.GH_BOT_TOKEN })
// We use Octokit to use GitHub API
// ... WRITE ANY CODE YOU WANT HERE
}
Cloudflare Worker에서 기능을 예약하려면 어떻게 해야 하나요?
설치를 마친 후 Cloudflare는
toml
파일도 생성합니다. 이 파일에는 name
, main
, compatibility_date
및 triggers
가 포함되어 있습니다. 트리거를 사용하기 위해 Cloudflare는 Cron을 지원하며 다음과 같습니다.[triggers]
crons = ["0 10 * * *"]
// This trigger will execute the function scheduled in the index
// file every day at 10:00 UTC
GitHub에서 데이터를 어떻게 가져올 수 있습니까?
GitHub에서 데이터를 가져오기 위해 GraphQL 쿼리를 생성합니다. GitHub는 몇 가지 쉽고 멋진 탐색기 도구를 제공합니다. 여기에서 다음 예제와 함께 사용할 수 있습니다.
{
organization(login: "the-guild-org") {
membersWithRole(first: 30) {
totalCount
edges {
node {
login
name
}
}
}
}
}
쿼리를 만든 후에는 데이터를 사용해야 합니다. 이를 위해 GraphQL Code Generator을 사용하여 쿼리를 기반으로 유형을 생성합니다.
schema:
- https://api.github.com/graphql:
headers:
Authorization: Bearer ${GH_BOT_TOKEN}
documents: 'src/**/*.ts'
generates:
types.ts:
config:
scalars:
URI: string
plugins:
- typescript
- typescript-operations
위의 예와 같이 스키마 경로를 정의하고 헤더에 Authorization을 추가한 다음 스키마를 생성하고
run
함수에서 사용할 유형을 생성합니다.GraphQL 코드 생성기를 사용한 이유는 무엇입니까?
Cloudflare Workers로 무엇을 할 수 있나요? (힌트? 요가)
GraphQL Yoga The Guild에서 가장 뛰어난 도구 중 하나인 GraphQL 서버를 제공합니다.
우리의 초점은 쉬운 설정, 성능 및 뛰어난 개발자 경험에 있습니다.
플랫폼에 구애받지 않는 디자인 덕분에 Yoga는 추가 패키지 없이 Cloudflare Workers에서도 GraphQL 서버를 어디에서나 실행할 수 있습니다!
Cloudflare 작업자를 GraphQL Yoga와 통합하는 방법에 대한 자세한 정보 및 자습서를 찾을 수 있습니다 - link .
Reference
이 문제에 관하여(Cloudflare Workers로 Slack 봇 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/the-guild/building-slack-bot-with-cloudflare-workers-4o8m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)