티스토리 뷰
개요
Slack Slash Command 로 영한 번역을 해보자.
이를 위해 Google 의 Cloud Functions 와 Translation API 를 이용해본다.
목차
구구절절이 적다보니 하나의 게시물에 모두 적으면 정신이 없다.
아래와 같이 세 부분으로 나누어서 하나씩 정리해가며 포스팅 해본다.
첫번째 포스팅. Slack Slash Command 를 만들고, 로컬 PC 에서 서버를 구동해본다. - 겸사겸사 Slack Slash Command 로 전달되는 내용을 들여다본다. 두번째 포스팅. 로컬 PC 에서 Translation API 를 호출해본다. - 비용과 API 사용법을 알아보자 세번째 포스팅. 구현한 내용을 Cloud Functions 에 올려서 서비스한다. - 별도의 서버 구축없이 위의 기능을 돌려보자. 비용도 확인해본다. |
첫번째 포스팅: https://jusths.tistory.com/136 두번째 포스팅: https://jusths.tistory.com/137 |
구현 코드 보기
GitHub 링크: https://github.com/nicewook/slack-translate/
- 마지막 포스팅의 구현은 master 브랜치를 참고하면 된다.
최종 구현의 동작 프로세스 다시 보기
1) Slack 에서 /tr <English sentence to translate> 를 치면
2) Cloud Functions 에서는 English sentence (혹은 한글 문장) 을 추출하여, Translation API 를 이용하여 번역후
3) Slack 에 회신해준다.
구현1. Goggle Cloud Functions 준비
완전히 새로운 Project 를 생성한 다음, Translation API 와 Cloud Functions 를 설정해보겠음
링크: https://cloud.google.com/functions/docs/quickstart-go
|
1) project id 는 jhs-slack-project 로 만들었음 |
|
2) billing enable - 링크: https://cloud.google.com/billing/docs/how-to/modify-project |
|
3) Cloud Functions API enable
|
|
4) Cloud Translation API enable GCP Console 의 검색창에서 Translation 으로 검색하여 들어가서 API 를 Enable 하면 된다. |
구현2. Cloud Functions Deploy 하기
소스코드의 api 폴더로 들어가 아래와 같이 실행하면 된다.
$gcloud functions deploy xxxxxx --entry-point TranslateEnglish2Korean --runtime go111 --trigger-http --set-env-vars PROJECT_ID=jhs-slack-project
|
준비: GCP 를 CLI 에서 접근할 수 있도록 gcloud SDK 를 설치하고 로그인 해두어야 함
1) 기존에 다른 project 로 설정되어 있어서 jhs-slack-project 로 다시 설정함
2) Local PC 에서 실습했던 환경변수들이 설정되어 있지 않은 것을 알 수 있다.
3) 위에 언급했던 대로 gcloud 를 이용하여 Cloud Functions 를 deploy 하였다
4) 중요한 것은 httpsTrigger 항목이다. - deploy 가 되면 자동으로 url 이 생성되는데 - Slack Slash Command 가 HTTP POST Request 를 이 url 로 보내면 되는 것이다. |
GCP Console 로 들어가서 Cloud Functions 메뉴에서 확인해보자
1) General 탭을 보면 Memory 256 MB 기본으로 생성된 것을 알 수 있고, 환경변수 PROJECT_ID 가 jhs-slack-project 로 잘 설정되어 있다.
2) Source 탭을 보면 코드가 올라가 있는 것이 보인다. Function to execute 는 TranslateEnglish2Korean 함수이다.
|
|
구현3. Slack Slash Command 만들기
이미 해본 것이지만 전체적 개념을 잡기위해 한번 더 만들어보자.
https://api.slack.com/apps 링크로 들어가서 새로운 app 을 만들자.
|
간단히 이름과 Workspace 를 설정하고 생성하였다. |
|
Slack Slash Command 를 새로 생성해주었다.
1) 이번에는 Command 를 /tt 로 해주었다.
2) Request URL 항목이 중요한데,
- 위에 Cloud Functions deploy 시에 생성된 url 을 입력해주면 된다. - 즉, Slack Slash command 로 만들어져 전송되는 HTTP POST Request 를 - Cloud Functions 의 url 로 보내겠다는 것이다. |
|
그리고 Workspace 에 생성한 app 을 install 해주면 된다. |
|
1) 마지막으로 생성한 Slack App 의 Signing Secret 을
2) Cloud Functions 의 환경변수로 넣어주면 된다.
아래와 같이 동작 확인
|
Cloud Functions 참고. 비용
- 월 200만 무료 호출에 월 100만초 무료 컴퓨팅 시간, 그리고 월 5GB 의 무료 인터넷 송신 트래픽이면 무료라 생각하면 되겠다.
|
|
'golang' 카테고리의 다른 글
Don't communicate by sharing memory, share memory by communicating (0) | 2019.07.19 |
---|---|
Concurrency Is Not Parallelism (0) | 2019.07.19 |
Slack Slash Command - 영한 번역(2) (0) | 2019.07.15 |
Slack Slash Command - 영한 번역(1) (0) | 2019.07.12 |
gRPC SSL/TLS 3. 실제 구현 (9) | 2019.07.01 |
- Total
- Today
- Yesterday
- github
- 제이펍
- strange
- postgres
- solid
- 영화
- pool
- folklore
- 2023
- 독서후기
- notion
- 독서
- Bug
- 노션
- golang
- JIRA
- ChatGPT
- Gin
- intellij
- agile
- Shortcut
- OpenAI
- go
- API
- websocket
- 인텔리제이
- 잡학툰
- bun
- 체호프
- 클린 애자일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |