使用 Easegress 实现 Telegram 翻译机器人

介绍

Easegress 是 MegaEase 开发的新一代流量型网关产品,它完全架构于云原生技术之上,避免了传统反向代理在高可用、流量编排、监控、服务发现等方面的不足,具有云原生、高可用、动态流量编排、可观测、可扩展等特点。

最近,Easegress 发布了 2.0 版本,再次大幅增强了流量编排功能,使用户无需编写任何代码,就可以通过编排多个 API 来实现一个超级 API。本文,我们会通过编排一个 Telegram 翻译机器人来演示一下这个功能。这个机器人可以自动将收到的消息翻译为中文、日文和英文,并且,除了文字消息,还支持翻译语音和图片消息。

准备

由于机器人需要接收 Telegram 消息通知,并调用第三方 API,所以我们需要提前准备好以下各项:

根据这篇文档安装好 Easegress 的最新版本,并请确保外部应用至少可以通过 80、88、443 或 8443 端口中的一个访问到这个 Easegress 实例。

根据这篇文档创建一个 Telegram 机器人,设置好名字(本文中使用的是 EaseTranslateBot),记下它的 token,并设置一个 WebHook,WebHook 的地址指向上一步中安装的 Easegress 实例。我们的机器人将通过这个 WebHook 接收新消息通知。

AWS 的 Access Key ID 和 Access Key Secret,并确保可以通过这个 Access Key 使用 AWS 的翻译 API。

Google Cloud 的 Token,并确保可以通过这个 Token 使用 Google Cloud 的语音识别(Speech Recognize)API 和 OCR(Image Annotation)API。

您也可以使用其它厂商的翻译、语音识别或 OCR API,但这需要您对后文中的示例做相应调整。

实现原理

下图展示了这个机器人的工作流程。
在这里插入图片描述

收到 Telegram 服务器通过 WebHook 发来的新消息通知后,机器人首先检查消息类型,并分别进行如下处理:

文字消息:直接提取消息文本;

语音消息:这种情况下,消息体中只有语音文件的 ID,所以需要先调用 Telegram 的 API 将 ID 转换成文件地址,然后下载这个文件,并把其内容发给 Google 语音识别服务,将其转换为文本;

图片消息:前半部分基本与语音消息相同,但会将图片内容发给 Google 的 Image Annotation 服务,将其转换为文本。

经过以上处理,三种消息就都变成了文本,之后,就可以调用 AWS 的翻译服务,将其依次翻译为不同的目标语言,本文示例使用的目标语言是中文、日文和英文。

Pipeline

首先,我们来看一下 Pipeline 编排出来的总体流程:

flow:
#Telegram 要求每个请求都返回应答,但我们不会处理所有请求,所以,
#我们把 ResponseBuilder 放在最前面以确保能够返回应答。

  • filter: buildFinalResponse

#检测消息类型,并跳转到对应的位置。

  • filter: detectMessageType
    jumpIf:
    result0: processText # 文字
    result1: processVoice # 语音
    result2: processPhoto # 图片
    “”: END # 忽略消息,直接结束处理流程

#文字消息

  • filter: requestBuilderExtractText
    alias: processText # 别名
    namespace: extract # 所属命名空间
    jumpIf: # 条件跳转,如果一切正常就开始翻译,
    “”: translate # 否则会自动结束处理流程

#语音消息

  • filter: requestBuilderGetVoiceFile # 构造将语音文件 ID 转换成文件路
    alias: processVoice # 径的请求
    namespace: extract
  • filter: proxyTelegram # 发送请求,得到文件路径
    namespace: extract
  • filter: requestBuilderDownloadFile # 构造下载语音文件的请求
    namespace: extract
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值