3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SlackAdvent Calendar 2022

Day 16

Slack上でDeepL翻訳をする為のアプリを誰でもインストールできる形にしてみた

Last updated at Posted at 2022-12-16

本当は次世代プラットフォームについて書くつもりだったのですが、瀬良さんが良質コンテンツを大量投下してくれていて、それを追っかけているだけで色んなことが分かるようになるので、是非皆さんも試してみてください。
一連のpostの中でこちらを読んで、試してみたのですが、次世代プラットフォームを使ったデプロイは本当に簡単なので、やってみる価値はあると思います。boltでの運用よりはレスポンスが遅いですが、そこまで問題にはならないでしょう。

この中にしれっと書いてあったのですが、ファイル翻訳に対応していた!!全く気付いていませんでした。

そう言えば、ファイル翻訳やってみたかったんだよねと思ってソースコードを覗いてみると、bolt for pythonで書かれているじゃないですか。

こちらをそのままデプロイすると、ファイル翻訳をしてくれるようになるのですが、メッセージの翻訳はしてくれません。
実運用を考えると同じアプリでメッセージの翻訳もしたかったりします。ということで拡張してみましたという話。

テキスト翻訳部分を追加してみよう

ソースコードはこちら

やってみると分かるのですが、PDFファイルの変換はそれなりに時間がかかります。
テキスト+PDFファイルを翻訳する場合は、先にテキスト翻訳をスレッドに投げておきたいので、ファイル変換が始まる前に以下の処理をいれています。

    #message部分の翻訳とpost
    text = parent_message.get('text')
    try:
        result = translator.translate_text(text, target_lang=lang) #text翻訳はこの形でリクエストを投げます
    except Exception as e:
        print(e)
        if locale == 'ja-JP':
            translated = "DeepL APIでエラーが起きたため翻訳出来ませんでした。<https://www.deepl.com/ja/pro-account/summary|DeepLのサイトでAPIキーを確認してください>。"
        else:
            translated = "DeepL APIでエラーが起きたため翻訳出来ませんでした。DeepL Could not be translated due to an error in the API.<https://www.deepl.com/ja/pro-account/summary|Check your API key on the DeepL website>"
    else:
        print("翻訳完了-----")
        print(result)
        translated = result.text
    post_message = client.chat_postMessage(
        channel=channel,
        thread_ts=thread_ts,
        text=translated,
        reply_broadcast=True #スレッド内のみで良い場合はここをFalseにしてください
    )
    #//message部分の翻訳とpost

ということで、シンプルなアップデートでテキスト翻訳にも対応できるようになりますので、お試しください。
一部return処理を抜いていますので変更詳細についてはこちらを御覧ください

前も思ったことですが files_upload には reply_broadcast オプションが無いんですよね〜。

自分でデプロイするのは難しいという人向け

いくら簡単ですといっても、boltで作るアプリはどこかにデプロイしなければいけませんし、維持コストがかかります。
加えて、この形ですと、1アプリについて1つのワークスペース限定でしか使えません。
app = App(token=os.environ["SLACK_BOT_TOKEN"]) ←bot tokenはインストール先毎に変わるからです
そうすると、我々のように複数のワークスペース(といってもエンタープライズグリッドに2つのWSがあるだけですが)で使おうとするとこのままでは使えません。

誰でも使えるような形にするために、昨年作ったFlaskのテンプレートに乗っけてみました。

APIキーはワークスペース毎に保存することができるようになってます。

Slack DeepL Translator.png

使い方は同じで、スタンプ押すだけですね。

Slack DeepL Translator (1).png

Slack DeepL Translatorマニュアルはこちら

インストールはこちらから

データの保護について

翻訳にかけるテキストやPDFファイルについては、利用者のAPI Keyを使ってDeepLに届けられますが、当アプリケーションがそれらの情報をDBに保存するような仕組みにはなっていませんので安心してご利用頂けます。

It's magic

ファイル翻訳が手軽にできる事を見た、弊社スタッフから出た言葉です。

以上、どなたでもご利用頂けますのでご活用ください!

OpenAIのAPIを使えるようにしてみました

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?