Skip to content

Instantly share code, notes, and snippets.

@gecko655
Last active February 22, 2018 07:15
Show Gist options
  • Save gecko655/dfd1b7ef563ee5810caa3e3828133d55 to your computer and use it in GitHub Desktop.
Save gecko655/dfd1b7ef563ee5810caa3e3828133d55 to your computer and use it in GitHub Desktop.
SlackでMicrosoft Translator APIとGoogle App Scriptを使って自動翻訳するやつ
var BOT_NAME = 'translator_bot'
var SLACK_OUTGOING_TOKEN = PropertiesService.getScriptProperties().getProperty("slack_outgoing_token");
var SLACK_API_TOKEN = PropertiesService.getScriptProperties().getProperty("slack_api_token");
var SlackApp = SlackApp.create(SLACK_API_TOKEN)
var MS_API_TOKEN = PropertiesService.getScriptProperties().getProperty("ms_api_token");
var PRIMARY_LANGUAGE = "ko"
var SECONDARY_LANGUAGE = "ja"
function doPost(e) {
if(e.parameter.token != SLACK_OUTGOING_TOKEN) return null;
if(e.parameter.user_name == 'slackbot') return null;
var text = e.parameters.text;
var translated = translate(text);
SlackApp.postMessage(e.parameter.channel_id, e.parameter.user_name+' said: '+translated, {
username : BOT_NAME,
icon_emoji : ":speaking_head_in_silhouette:"
});
}
function translate(text) {
var token_url = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken";
var token_options = {
"method": "post",
"headers": {
"Accept": "application/jwt",
"Ocp-Apim-Subscription-Key": MS_API_TOKEN
}
};
var access_token = UrlFetchApp.fetch(token_url, token_options).getContentText("UTF-8");
var translate_options = {
"headers": {
"Authorization": "Bearer " + access_token
}
};
var detect_url = "http://api.microsofttranslator.com/v2/Http.svc/Detect?text=" + encodeURIComponent(text);
var language_xml = UrlFetchApp.fetch(detect_url, translate_options).getContentText();
var language = XmlService.parse(language_xml).getRootElement().getText();
var from = language;
var to = PRIMARY_LANGUAGE;
if (language.indexOf(PRIMARY_LANGUAGE) >= 0) {
to = SECONDARY_LANGUAGE;
}
var translate_url = "http://api.microsofttranslator.com/v2/Http.svc/Translate?from=" + from + "&to=" + to + "&category=generalnn&text=" + encodeURIComponent(text);
var translated_xml = UrlFetchApp.fetch(translate_url, translate_options).getContentText();
var translated = XmlService.parse(translated_xml).getRootElement().getText();
return translated;
}
@gecko655
Copy link
Author

gecko655 commented Feb 9, 2017

起動までの準備

  1. Google App Script Editorを開き、適当なファイルを作成する。
  2. SlackApi Libraryのインポート (参考: http://qiita.com/soundTricker/items/43267609a870fc9c7453 )
  3. Keyをファイル -> プロジェクトのプロパティ -> スクリプトプロパティに設定

2017-02-09 11 11 05

2017-02-09 10 59 52
2017-02-09 10 58 10

  1. PRIMARY_LANGUAGE, SECONDARY_LANGUAGEを設定
  • PRIMARY_LANGUAGE, SECONDARY_LANGUAGEのどちらでもない言語は、PRIMARY_LANGUAGEに翻訳される
  1. Webアプリケーションとして公開する
    2017-02-09 11 21 18
    2017-02-09 11 21 37

大いに参考にした記事:
http://qiita.com/sosuke/items/ece4aee023fade0c2d23

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment