- AIチャットボットは、LLMを使って100以上の言語に自動で会話を翻訳できます。また、より細かく制御したい場合は、カスタム翻訳フローを構築することも可能です。
- 一般的な翻訳の仕組みは、ユーザーの言語を保存し、受信メッセージをボットの言語に翻訳して処理し、返信を再びユーザーの言語に翻訳して返すという流れです。
- DeepLは高品質な翻訳で人気ですが、Google翻訳など他の翻訳APIも同様のコードで統合できます。
今日の多言語社会では、ユーザーが自分の母国語でやり取りできることは、どんなチャットボットにも欠かせない機能です。
AIチャットボットを構築する場合、ボットの「頭脳」としてLLMを使えば翻訳は自動です。LLMエージェントは、会話を100以上の言語に自動で翻訳できます。
一方、GPTチャットボットを構築しながらカスタム翻訳機能を設定したい場合も、サポートできます。
この記事では、翻訳をカスタマイズするために必要な具体的なコーディング手順を解説します。
チャットボットの翻訳はどのように機能するのか?
私たちの方法は、ユーザーからのメッセージを受け取り、言語を特定し、そのメッセージをボットの動作言語に翻訳することを中心にしています。
このプロセスは次の通りです:
- 検出した言語を保存する
- ユーザーのメッセージをボットの言語に翻訳する
- メッセージを処理し、
- ボットの返答をユーザーの言語に再翻訳する
例えば、ユーザーがスペイン語でメッセージを送信した場合、ボットは「es」を言語変数として保存します。ソフトウェアはメッセージをボット用に英語へ翻訳し、ボットの返答を再びスペイン語に翻訳してユーザーに送信します。
ステップ1:ツールを選ぶ
今回の設定では、精度と効率で知られるDeepL翻訳サービスを使用します。
この統合は、ユーザーのメッセージをそのまま返すシンプルなエコーボットで説明します。API呼び出しには、Botpressに自動統合されているAxiosを使います。

ステップ2:必要な変数を作成する
まず、`language`というユーザー変数を作成し、初期または検出した言語を保存します。
DeepLは入力テキストの言語を検出して返してくれるため、この作業は1回のAPIリクエストで簡単に行えます。
ステップ3:インターセプションフックを作成する
受信メッセージ前のフック
Botpressに届く前にユーザーのメッセージを翻訳するため、「Before Incoming Message」フックを作成します。このフックは「Translation-In」と名付け、受信メッセージを英語に翻訳して元のメッセージを上書きし、Botpressが英語として処理できるようにします。
このフックのコード例は以下の通りです:
await axios
.post(
'https://api-free.deepl.com/v2/translate',
{
text: [event.preview],
target_lang: 'EN'
},
{
headers: {
Authorization: 'DeepL-Auth-Key {{your key here}}',
'Content-Type': 'application/json'
}
}
)
.then((response) => {
event.payload.text = response.data.translations[0].text
event.preview = response.data.translations[0].text
event.state.user.language = response.data.translations[0].detected_source_language
})
.catch(function (error) {
// Error handling
});重要な注意:APIキーを組み込む際は必ずBotpressの構成変数を使用してください。
送信メッセージ前のフック
「Before Outgoing Message」フックは「Translation-Out」と名付けます。これはボットの返答をユーザーの言語に再翻訳し、会話が常にユーザーの希望する言語で続くようにします。
実装では、送信メッセージを翻訳済みの内容で上書きします:
await axios
.post(
'https://api-free.deepl.com/v2/translate',
{
text: [outgoingEvent.preview],
target_lang: event.state.user.language
},
{
headers: {
Authorization: 'DeepL-Auth-Key {{your key here}}',
'Content-Type': 'application/json'
}
}
)
.then((response) => {
outgoingEvent.payload.text = response.data.translations[0].text
outgoingEvent.preview = response.data.translations[0].text
})
.catch(function (error) {
// Error handling
});今すぐ始めよう
AIチャットボットの大きな利点の一つは、多言語対応です。Botpressのようなプラットフォームを使えば、100以上の言語でユーザーとやり取りできるチャットボットをすぐに設定できます。
使いやすくアクセスしやすいチャットボットを求めるなら、どの翻訳サービスもBotpressに簡単に統合できます。さらに、チャネル統合を使えば、WhatsApp、Facebook Messenger、または自社ウェブサイトなど、さまざまな場所にチャットボットを展開できます。
今すぐ始めましょう。無料です。
参考リンク
よくある質問
1. DeepL以外の翻訳サービス(Google翻訳やMicrosoft Translatorなど)を利用できますか?
はい、Botpressの翻訳フックを選んだサービスのAPIリクエスト・レスポンス形式に合わせて修正すれば、他の翻訳サービスも利用できます。これらのサービスは、カスタムアクションやフック内でHTTPリクエストを使って簡単に統合できます。
2. 会話の一部だけを選択して翻訳できますか?
はい、翻訳フック内で特定のメッセージタイプやユーザー定義変数を条件分岐に使うことで、会話の一部だけを翻訳することが可能です。これにより、どの部分をいつ翻訳するか細かく制御できます。
3. 翻訳サービスに送信する前にユーザーデータを匿名化できますか?
はい、Botpressのフックやアクション内で、正規表現などを使って名前やメールアドレス、IDをマスキングするなど、メッセージを事前処理することでユーザーデータを匿名化できます。これにより、プライバシー要件を守りつつ翻訳が可能です。
4. この翻訳設定を異なるチャネル(例:WhatsApp、Messenger)で利用できますか?
はい、同じ翻訳設定をWhatsApp、Messenger、Slack、自社ウェブサイトなど複数のチャネルで利用できます。ボットがメッセージを受信できれば、プラットフォームに関係なく翻訳ロジックが機能します。
5. 分析やデバッグのために翻訳エラーを記録するにはどうすればよいですか?
Botpressで翻訳エラーを記録するには、開発時のデバッグにはconsole.error()を使い、またはエラーをカスタムBotpressテーブル、LogglyやDatadogなどのリモートログサービス、社内APIに送信することもできます。これにより、失敗の追跡やパフォーマンスの監視が可能です。





.webp)
