Slackでのチャットをリアルタイムに翻訳するものを作った
Posted by <

みなさん、こんにちは。あんどうです。

最近、フィリピンの人と英語でチャットをしつつ仕事をしているのですが、自分で英語を書くよりも機械翻訳の方が伝わるのでないかと考えました。

そこで、今回はチャットをリアルタイムに翻訳してくれるプログラムを作りました。

準備するもの

Micro Soft Translator
Microsoftが提供している翻訳APIです。なんと、毎月200万文字まで無料
アカウントの無料登録が必要です。)

・SlackのAPI
詳細は下で書きます。

製作の流れ

1.Microsoftの翻訳APIを触ってみる

2.SlackのAPIを触ってみる

3.1と2を組み合わせてカスタマイズ

1.Microsoftの翻訳APIを触ってみる

こちらのサイトを参考に下記のPHPを動かしてみました。

[code lang=”php”]
<?php
const APPID = ‘your APPID’;
$text = ‘彼はベンですか?いいえ彼はベンではありません。’;
$to = ‘en’;

$ch = curl_init(‘https://api.datamarket.azure.com/Bing/MicrosoftTranslator/v1/Translate?Text=%27′.urlencode($text).’%27&To=%27′.$to.’%27′);
curl_setopt($ch, CURLOPT_USERPWD, APPID.’:’.APPID);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
$result = explode(‘<d:Text m:type="Edm.String">’, $result);
$result = explode(‘</d:Text>’, $result[1]);
$result = $result[0];
echo $text." -> ".$result;
?>
[/code]

実行した結果

実行結果

動きました。

2.SlackのAPIを触ってみる

次はSlackのAPIを触ってみます。

今回はここにある「Outgoing WebHooks」というAPIを使いました。
https://slack.com/services/new

このAPIでは、Slack内の特定のチャンネルで発言があった場合にその発言内容や発言者の情報をもと送信してくれます。

さらに、受け取ったプログラムでjsonを表示すると、それをBotからの返信としてSlackに書き込みしてくれます。こんな感じ。

[code]
{text:"@message@"}
[/code]

3.1と2を組み合わせてカスタマイズ

ステップ1:送信者の判別

誰が書いたのかを判断する。日本人なら日本語->英語に、フィリピン人なら英語->日本語に

ステップ2:マイクロソフトのAPIを使って翻訳

ステップ3:少しだけセキュリティに気を付ける

アクセストークンが取得したものと違った場合は「無効なトークンです」と返すように。

ステップ4:Slackへ書き込み

翻訳されたものを出力としてSlackへ書いてもらいます。

 

完成したプログラムがこちら

[code lang=”php”]<?php
const APPID = ‘Your_App_ID’;
$text = $_POST["text"];
//投稿者が日本人の場合
if ($_POST["user_name"] == "Japanese_User_Name" ){
$to = ‘en’;
}
//投稿者が英語を書く人の場合
elseif ($_POST["user_name"] == "English_Post_User_Name") {
$to = ‘ja’;
}
$ch = curl_init(‘https://api.datamarket.azure.com/Bing/MicrosoftTranslator/v1/Translate?Text=%27′.urlencode($text).’%27&To=%27′.$to.’%27′);
curl_setopt($ch, CURLOPT_USERPWD, APPID.’:’.APPID);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = explode(‘<d:Text m:type="Edm.String">’, $result);
$result = explode(‘</d:Text>’, $result[1]);
$result = $result[0];
if ($_POST["token"] != "Your_Slack_Token"): ?>
<h2>無効なトークンです</h2>
<?php endif ?>
{"text":"<?php echo $_POST["user_name"] ?> said : <?php echo $result ?>"}
[/code]

使ってみた

完成しましたので実際に使ってみました。

translate_image

短い文章であればある程度使えますが、少し長くなると全くダメですね。

githubに公開しました。

上記のソースコードだけですので、公開するほどでもないのですがgithubにもアップしておきます。

https://github.com/takuya-andou/slack_translate/

24件のトラックバック

  • 匿名
    2026年1月30日

    鸡巴去吸

    去吸鸡巴

  • 匿名
    2026年1月30日

    操蛋的狗屁

    去死吧,垃圾

  • 匿名
    2026年1月30日

    婊子养的傻逼

    神经病婊子

  • 匿名
    2026年1月30日

    神经病一样的垃圾

    神经病婊子

  • 匿名
    2026年1月30日

    狗杂种傻逼

    群婊子垃圾狗屎玩意儿

  • 匿名
    2026年1月30日

    狗屁玩意儿

    蠢货

  • 匿名
    2026年1月30日

    神经病一样的垃圾

    操你妈的贱人

  • 匿名
    2026年1月30日

    蠢货

    真他妈烦

  • 匿名
    2026年1月30日

    真他妈烦

    去舔鸡巴

  • 匿名
    2026年1月30日

    都给我滚你妈的

    蠢货

  • 匿名
    2026年1月30日

    廉价婊子

    操蛋的贱种

  • 匿名
    2026年1月30日

    蠢逼婊子

    神经病婊子

  • 匿名
    2026年1月30日

    神经病婊子

    去吸鸡巴

  • 匿名
    2026年1月31日

    纯他妈是狗屁

    操蛋的垃圾货

  • 匿名
    2026年1月31日

    鸡巴去吸

    操蛋的狗屁

  • 匿名
    2026年1月31日

    神经病婊子

    蠢货

  • 匿名
    2026年2月3日

    滚他妈的垃圾

    去吸鸡巴吧,杂种

  • 匿名
    2026年2月3日

    神经病婊子

    神经病婊子

  • 匿名
    2026年2月3日

    操蛋的贱种

    去吸鸡巴吧,杂种

  • 匿名
    2026年2月3日

    操蛋的垃圾货

    操蛋的狗屁

  • 匿名
    2026年2月3日

    廉价婊子

    他妈的贱货

  • 匿名
    2026年2月3日

    烂到他妈极点的垃圾

    该死的垃圾玩意儿

  • 匿名
    2026年2月3日

    鸡巴去吸

    狗杂种傻逼

  • 匿名
    2026年2月4日

    垃圾

    去死吧,垃圾