Last active
February 22, 2018 07:15
-
-
Save gecko655/dfd1b7ef563ee5810caa3e3828133d55 to your computer and use it in GitHub Desktop.
SlackでMicrosoft Translator APIとGoogle App Scriptを使って自動翻訳するやつ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
起動までの準備
大いに参考にした記事:
http://qiita.com/sosuke/items/ece4aee023fade0c2d23