fbpx

잔디 메시지 번역 봇 만들기 – 구글, 파파고 API 활용법

잔디 메시지를 번역할 수 있는 방법이 있을까요?
대만, 말레이시아, 두바이, 일본 등 여러 국가에서 다국어를 사용하는 토스랩 멤버들 사이에서도 많이 문의해주셨던 그 번역봇 만들기 방법. 지금 공개합니다. 

 

< 잔디 팀의 한영/영한 번역봇 예시 > 

 

* 구글 번역 API 활용하기 

 

ㅣ준비물

잔디의 Incoming Webhook URL 과 Outgoing Webhook URL2개의 값이 필요합니다.

Outgoing Webhook URL 을 쉽게 생성하기 위해서 Google Apps Script을 활용하였습니다.

 

1. 잔디 커넥트 Incoming Webhook 만들기 

1-1) 번역봇을 연결하려는 대화방 상단에 ‘잔디 커넥트’ 아이콘을 클릭해 연동하기를 시작합니다. 맨 하단에 ‘Webhook 수신 (Incoming Webhook) 연동 항목 추가하기를 완료합니다. 

1-2) [설정 저장하기] 버튼을 클릭해 잔디 커넥트 항목 생성을 완료합니다.

  • 웹훅 URL에 있는 Incoming Webhook URL은 ‘복사하기’ 버튼을 클릭해 복사합니다.
  • 번역봇을 연동할 토픽을 선택합니다. 별도 토픽을 새로 만들어야 할 경우, ‘토픽 생성하기’ 버튼을 클릭합니다.
  • 연동 서비스 프로필 설정에서 메시지 프로필 이미지와 이름을 설정합니다. 저는 구글 번역 로고를 이미지로 입력했습니다.

 

2. 구글 앱스 스크립트 (Google Apps Script) 만들기 

번역봇을 만들기 위해 Outgoing Webhook URL을 생성해야 합니다. 이 과정이 쉽지 않아, 구글 앱스 스크립트를 활용하고자 합니다.

2-1) 구글 앱 목록 에서 Apps Marketplace 더보기를 클릭해 Apps Marketplace로 이동합니다. 

 

2-2)  Google Apps Script 를 검색 후 설치를 완료해주세요. 아래 이미지를 따라서 버튼을 클릭해주세요. 

2-3) 구글 스프레드시트를 이용해 스크립트 편집기를 작성합니다. 

구글 드라이브로 이동 –  Google 스프레드시트 – 빈 스프레드시트 생성합니다. 
구글번역 스프레드시트 로 시트 제목 변경 –  ‘도구’ 메뉴의 ‘스크립트 편집기’ 클릭 합니다. 

2-4) 구글 스크립트의 제목을 구글번역 GAS으로 변경했습니다.  

01.png

기본적으로 생성되어 있는 trans.gs 에 아래 코드 예시 전체를 복사해 붙여넣기 해주세요. 

※ 단, 아래 부분에서 Incoming Webhook URL 은 1-2) 순서에서 만들어 복사해놓은 Webhook URL 값으로 변경합니다. 

var jandi_incoming_url = "https://wh.jandi.com/connect-api/webhook/15401647/b8b8231e899b2b41934c354ae96504a0"; 
<trans.gs>
function doPost(e) {
    var jsonString = e.postData.getDataAsString();
    var jsonData = JSON.parse(jsonString);
    var requestString = jsonData.data;

    // text, source(한국어), target(영어)
    var translatedText = LanguageApp.translate(requestString, 'ko', 'en')  ;

    // jandi 설정 JCC2000 - 구글번역기v2
    var jandi_incoming_url = "https://wh.jandi.com/connect-api/webhook/15401647/b8b8231e899b2b41934c354ae96504a0"; // 수정1
    var jandi_headers = {
        "Accept": "application/vnd.tosslab.jandi-v2+json",
        "Content-type": "application/json",
    };
    var jandi_formData = {
        "body": translatedText
    };
    var jandi_options = {
        "method": "POST",
        "payload": JSON.stringify(jandi_formData),
        "headers": jandi_headers,
    };
    response = UrlFetchApp.fetch(jandi_incoming_url, jandi_options);
    Logger.log(response);
};

 

※  텍스트 원본이 ‘한국어’, 번역된 결과물을 ‘영어’로 설정했기에 ‘ko’, ‘en’ 순서로 코드 내부에 설정되어 있습니다. 더 다양한 언어로 번역을 원한다면, 구글 번역의 이 링크에서 Language Code Value를 참고해주세요. 원본과 결과물 언어 코드를 변경하면 됩니다. 

// text, source(한국어), target(영어) 
var translatedText = LanguageApp.translate(requestString, 'ko', 'en') ;

 

2-5) 코드 설정이 완료되었으면, 스크립트 게시를 해주세요.

‘게시’ 메뉴 – 웹 앱으로 배포 – 접근 범위를 설정 후 ‘Deploy’ 버튼 클릭- 권한검토 후 계정 로그인 – ‘확인되지 않은 앱’ 화면 표시되면 ‘고급’ – ‘구글번역 GAS(으)로 이동(안전하지 않음)’ 후 – ‘허용’ 버튼 클릭

이렇게 해서 만들어진  Current web app URL 이 , 잔디 커넥트에 입력할 Outgoing Webhook URL 입니다.

3. 잔디 커넥트 Outgoing Webhook 만들기 

3-1) 번역봇을 연결하려는 대화방 상단에 ‘잔디 커넥트’ 아이콘을 클릭해 연동하기를 시작합니다. 맨 상단에 ‘Webhook 발신 (Outgoing Webhook) 연동 항목 추가하기를 완료합니다. 

 

3-2) [설정 저장하기] 버튼을 클릭해 잔디 커넥트 항목 생성을 완료합니다.

  • 웹훅 URL에 2-5)번에서 만든 Outgoing Webhook URL을 입력합니다.
  • 원하는 시작 키워드를 입력합니다.  ex) /구글, /번역, /한영 등 

yy01.png

 

3-3) 드디어 잔디 메시지 구글 번역봇 만들기가 완료되었습니다! 

‘구글번역소’ 라고 제가 만든 토픽에는 위에서 만든 2개의  Incoming Webhook 과 Outgoing Webhook 이 나란히 연동되어 있는 것을 확인할 수 있습니다. 

이제 번역을 해볼게요~ 원문 언어는 한국어, 번역 결과 언어는 영어로 설정했기에 아래 예시처럼 입력하면 됩니다. 저는 시작 키워드를 ‘/구글’이라고 설정했습니다. 

/구글 <번역하고싶은말>

< 잔디에 번역된 구글 번역봇 예시> 

 

성공적으로 번역이 완료되셨나요? 번역 속도가 매우 빠른데요! 해외 멤버들과 연락 또는 업무시 활용하시길 바랄게요.

 


* 파파고 번역 API 활용하기 

 

ㅣ준비물

아래 총 6개의 값이 필요합니다.

  • 파파고 번역 API의 Client IDClient Secret
  • 파파고 언어감지 API의 Client IDClient Secret
  • 잔디 커넥트의 Incoming Webhook URL 과 Outgoing Webhook URL
    • Outgoing Webhook URL 을 쉽게 생성하기 위해서 Google Apps Script을 활용하였습니다.

 

l 동영상 설명으로 보기 

 

 

1. 파파고 번역 API 이용신청

1-1) 파파고 번역 소개 사이트 접속 후 ‘오픈 API 이용 신청’ 버튼 클릭 : https://developers.naver.com/products/nmt/

1-2) 네이버 로그인오픈 API 이용 신청 – 휴대폰 인증회사 이름 입력

1-3) 애플리케이션 이름을 입력한 뒤, 사용 API, 비로그인 오픈 API 서비스 환경을 설정합니다. 

  • 저는 ‘파파고번역’ 이라고 애플리케이션 이름을 지었습니다. 
  • 사용 API는 ‘Papago 번역’ 선택
  • 서비스 환경은 ‘Web 설정’ 선택 후, 아래 2개 웹 서비스 URL을 추가합니다. 
    • https://jandi.com
    • https://google.com

 

1-4) 등록이 완료되면, 내 애플리케이션 중 번역 APIClient IDClient Secret 을 확인합니다. 

 

2. 파파고 언어감지 API 이용신청

2-1) 파파고 언어감지 사이트 접속 후 ‘애플리케이션 등록’ https://developers.naver.com/apps/#/register

  • 저는 ‘파파고언어감지’ 라고 애플리케이션 이름을 지었습니다. 
  • 사용 API는 ‘Papago 언어감지’ 선택
  • 서비스 환경은 ‘Web 설정’ 선택 후, 아래 2개 웹 서비스 URL을 추가합니다. 
    • https://jandi.com
    • https://google.com

2-2) 등록이 완료되면, 내 애플리케이션 중 언어감지 APIClient IDClient Secret 을 확인합니다. 

3. 잔디 커넥트 Incoming Webhook 만들기 

3-1) 번역봇을 연결하려는 대화방 상단에 ‘잔디 커넥트’ 아이콘을 클릭해 연동하기를 시작합니다. 맨 하단에 ‘Webhook 수신 (Incoming Webhook) 연동 항목 추가하기를 완료합니다. 

3-2) [설정 저장하기] 버튼을 클릭해 잔디 커넥트 항목 생성을 완료합니다.

  • 웹훅 URL에 있는 Incoming Webhook URL은 ‘복사하기’ 버튼을 클릭해 복사합니다.
  • 번역봇을 연동할 토픽을 선택합니다. 별도 토픽을 새로 만들어야 할 경우, ‘토픽 생성하기’ 버튼을 클릭합니다.
  • 연동 서비스 프로필 설정에서 메시지 프로필 이미지와 이름을 설정합니다. 저는 파파고 번역 로고를 이미지로 입력했습니다.

 

4. 구글 앱스 스크립트 (Google Apps Script) 만들기 

번역봇을 만들기 위해 Outgoing Webhook URL을 생성해야 합니다. 이 과정이 쉽지 않아, 구글 앱스 스크립트를 활용하고자 합니다.

4-1) 구글 앱 목록Apps Marketplace 더보기로 이동합니다. 
4-2)  Google Apps Script 를 검색 후 설치를 완료해주세요. 아래 이미지를 따라서 버튼을 클릭해주세요. 

4-3) 구글 스프레드시트를 이용해 스크립트 편집기를 작성합니다. 

구글 드라이브로 이동 –  Google 스프레드시트 – 빈 스프레드시트 생성합니다. 
파파고 스프레드시트 로 시트 제목 변경 –  ‘도구’ 메뉴의 ‘스크립트 편집기’ 클릭 합니다. 

4-4) 구글 스크립트의 제목을 파파고 GAS으로 변경했습니다.  

기본적으로 생성되어 있는 코드.gs 에 아래 코드 예시 전체를 복사해 붙여넣기 해주세요. 

※ 단, 아래 부분에서  아래 5가지를 나에게 맞게 수정합니다.

  • 언어감지 Client-ID와 Secret은 2-2) 순서에서 만들어진 값을 복사해서 변경합니다
  • 번역 Client-ID와 Secret은 1-4) 순서에서 만들어진 값을 복사해서 변경합니다. 
  • Incoming Webhook URL3-2) 순서에서 만들어 복사해놓은 Webhook URL 값으로 변경합니다.
'X-Naver-Client-Id': 'cLyzFIhaPv5KUANZguJW', // 언어감지 값으로 수정1 
'X-Naver-Client-Secret': 'n5Z7bfGxBh' // 언어감지 값으로 수정2
'X-Naver-Client-Id': '4TRvx0ssKWxoJOuKtoRZ', // 번역 값으로 수정3
'X-Naver-Client-Secret': '499dQpNZ4J' // 번역 값으로 수정4
var jandi_incoming_url = "https://wh.jandi.com/connect-api/webhook/15401647/b4ba7afd206bdc65ac94e51609071fae"; // 수정5

<코드.gs>

function doPost(e) {
    var jsonString = e.postData.getDataAsString();
    var jsonData = JSON.parse(jsonString);
    var requestString = jsonData.data;

  // papago 언어감지
    var language_url = "https://openapi.naver.com/v1/papago/detectLangs";
    var language_headers = {
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
       'X-Naver-Client-Id': 'cLyzFIhaPv5KUANZguJW', // 수정1
       'X-Naver-Client-Secret': 'n5Z7bfGxBh' // 수정2
    };
    var language_formData = { 'query': requestString }
    var language_options = {
        "method": "POST",
        "payload": language_formData,
        "headers": language_headers,
        "muteHttpExceptions": true
    };
    var language_response = UrlFetchApp.fetch(language_url, language_options);
    var languagejsonData = JSON.parse(language_response);
    var _language_message = JSON.stringify(languagejsonData.langCode);
    var language_message = _language_message.slice(1,-1);    

    // papago 번역 
    var papago_url = "https://openapi.naver.com/v1/papago/n2mt";
    var papago_headers = {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'X-Naver-Client-Id': '4TRvx0ssKWxoJOuKtoRZ', // 수정3
        'X-Naver-Client-Secret': '499dQpNZ4J' // 수정4
    };
    var papago_formData = {        
        'source': language_message,
        'target': 'en',
        'text': requestString
    };
    var papago_options = {
        "method": "POST",
        "payload": papago_formData,
        "headers": papago_headers,
        "muteHttpExceptions": true
    };
    var papago_response = UrlFetchApp.fetch(papago_url, papago_options);
    var papagojsonData = JSON.parse(papago_response);
    var _message = JSON.stringify(papagojsonData.message.result.translatedText);
    var message = _message.slice(1, -1);
    // jandi 설정
    var jandi_incoming_url = "https://wh.jandi.com/connect-api/webhook/279/2abcf0524717d198befdc28ce5e8adcd"; //수정5  
    var jandi_headers = {
        "Accept": "application/vnd.tosslab.jandi-v2+json",
        "Content-type": "application/json",
    };
    var jandi_formData = {
        "body": message
    };
    var jandi_options = {
        "method": "POST",
        "payload": JSON.stringify(jandi_formData),
        "headers": jandi_headers,
    };
    response = UrlFetchApp.fetch(jandi_incoming_url, jandi_options);
    Logger.log(response);
};

※  텍스트 원본은 18개국어 자동 언어감지, 번역된 결과물을 ‘영어’로 설정했기에 ‘target’ : ‘en’  코드로 내부에 설정되어 있습니다. 더 다양한 언어로 번역을 원한다면, 파파고 번역의 이 링크에서 출력 결과 Code Value를 참고해주세요. 결과물 언어 코드를 변경하면 됩니다. 

var papago_formData = { 'source': language_message, 'target': 'en', 'text': requestString

아래와 같이만 지원된다고 합니다. 

source 원문 언어 <->target 번역 결과 언어 
ko<->en, 
ko<->zh-CN, 'CN'은 대문자 
ko<->zh-TW, 'TW'은 대문자 
ko<->es, 
ko<->fr, 
ko<->vi, 
ko<->th, 
ko<->id, 
en<->ja, 
en<->fr

4-5) 코드 설정이 완료되었으면, 스크립트 게시를 해주세요.

‘►실행’ 버튼 – 권한검토 – ‘확인되지 않은 앱’ 화면 표시되면 ‘고급’ – ‘파파고 GAS(으)로 이동(안전하지 않음)’ 후 – ‘허용’ 버튼 클릭

 

‘게시’ 메뉴에서 ‘웹 앱으로 배포’ – 접근 범위를 설정 후 ‘Deploy’ 버튼 클릭

 

 

이렇게 해서 만들어진  Current web app URL 이 , 잔디 커넥트에 입력할 Outgoing Webhook URL 입니다.

 

5. 잔디 커넥트 Outgoing Webhook 만들기 

5-1) 번역봇을 연결하려는 대화방 상단에 ‘잔디 커넥트’ 아이콘을 클릭해 연동하기를 시작합니다. 맨 상단에 ‘Webhook 발신 (Outgoing Webhook) 연동 항목 추가하기를 완료합니다. 

 

5-2) [설정 저장하기] 버튼을 클릭해 잔디 커넥트 항목 생성을 완료합니다.

  • 웹훅 URL에 4-5)번에서 만든 Outgoing Webhook URL을 입력합니다.
  • 원하는 시작 키워드를 입력합니다.  ex) /파파고, /번역, /한영 등 

 

5-3) 드디어 잔디 메시지 파파고 번역봇 만들기가 완료되었습니다! 

‘파파고번역소’ 라고 제가 만든 토픽에는 위에서 만든 2개의  Incoming Webhook 과 Outgoing Webhook 이 나란히 연동되어 있는 것을 확인할 수 있습니다. 

이제 번역을 해볼게요~ 원문 언어는 자동감지, 번역 결과 언어는 영어로 설정했기에 아래 예시처럼 입력하면 됩니다. 저는 시작 키워드를 ‘/파파고’이라고 설정했습니다. 

/파파고 <번역하고싶은말>

< 잔디에 번역된 파파고 번역봇 예시> 

구글과 파파고로 각각 잔디 메시지 번역 봇 만들기가 끝났습니다! 중간중간 막히면 support@tosslab.com 잔디 팀에 연락주세요. 


consult, jandi consult, jandi, messenger, 잔디, 잔디 컨설팅, 협업툴, 협업툴 컨설팅