本当は次世代プラットフォームについて書くつもりだったのですが、瀬良さんが良質コンテンツを大量投下してくれていて、それを追っかけているだけで色んなことが分かるようになるので、是非皆さんも試してみてください。
一連の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マニュアルはこちら
インストールはこちらから
データの保護について
翻訳にかけるテキストやPDFファイルについては、利用者のAPI Keyを使ってDeepLに届けられますが、当アプリケーションがそれらの情報をDBに保存するような仕組みにはなっていませんので安心してご利用頂けます。
It's magic
ファイル翻訳が手軽にできる事を見た、弊社スタッフから出た言葉です。
以上、どなたでもご利用頂けますのでご活用ください!
OpenAIのAPIを使えるようにしてみました