首页 > 其他分享 >使用 Easegress 实现 Telegram 翻译机器人

使用 Easegress 实现 Telegram 翻译机器人

时间:2024-11-18 15:16:01浏览次数:3  
标签:kind name Telegram 机器人 namespace Easegress API 消息

介绍

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
  • filter: proxyTelegram # 发送请求,得到文件内容
    namespace: extract
  • filter: requestBuilderSpeechRecognize # 构造调用语音识别 API 的请求
    namespace: extract
  • filter: proxySpeechRecognize # 发送请求,得到识别结果
    namespace: extract
  • filter: requestBuilderSpeechText # 保存识别结果
    namespace: extract
    jumpIf: # 条件跳转,如果一切正常就开始翻译,
    “”: translate # 否则会自动结束处理流程

#图片消息(流程与语音消息基本相同)

  • filter: requestBuilderGetPhotoFile
    alias: processPhoto
    namespace: extract
  • filter: proxyTelegram
    namespace: extract
  • filter: requestBuilderDownloadFile
    namespace: extract
  • filter: proxyTelegram
    namespace: extract
  • filter: requestBuilderImageAnnotate
    namespace: extract
  • filter: proxyImageAnnotate
    namespace: extract
  • filter: requestBuilderPhotoText # 不使用条件跳转,正常进入翻译流程
    namespace: extract

#翻译为中文

  • filter: requestBuilderTranslate # 构造调用翻译 API 的请求
    alias: translate
    namespace: zh
  • filter: signAWSRequest # 根据 AWS 的要求进行签名
    namespace: zh
  • filter: proxyTranslate # 发送请求,得到翻译结果
    namespace: zh

#翻译为英文(流程与中文翻译相同)

  • filter: requestBuilderTranslate
    namespace: en
  • filter: signAWSRequest
    namespace: en
  • filter: proxyTranslate
    namespace: en

#翻译为日文(流程与中文翻译相同)

  • filter: requestBuilderTranslate
    namespace: ja
  • filter: signAWSRequest
    namespace: ja
  • filter: proxyTranslate
    namespace: ja

#回复,将翻译结果发送给 Telegram

  • filter: requestBuilderReply # 发送消息回复的 API 的请求
    namespace: tg
  • filter: proxyTelegram # 将翻译结果发送到 Telegram
    namespace: tg
    结合前面已经解释过的“实现原理”,我们不难看懂整个流程。但要注意,因为最终的回复需要综合多个 API 的执行结果,我们使用了多个命名空间(namespace)来保存这些 API 的调用参数和执行结果,也就是发送的请求(Request)和它们返回的应答(Response)。

为了达到更好的效果,我们还在 Pipeline 上定义了一些数据:

data:
zh:
fallback: “(抱歉,我不懂这种语言。)”
text: “中文

标签:kind,name,Telegram,机器人,namespace,Easegress,API,消息
From: https://blog.csdn.net/2301_79159642/article/details/143855208

相关文章

  • ABB机器人维修时如何零点校准
    任何预防性维护计划的主要目的:1、确保系统的最大利用率。2、能够减少系统停机时间。机器人和油漆系统的设计使其能够以最小的维护率在恶劣条件下运行。但是,仍必须定期进行常规检查和预防性维护。对于工作状况良好的设备,其预防性维护量不应超过建议……任何预防性维护计划......
  • ai智能语音电话机器人能不能代替人工完成获客任务
    ai智能语音电话机器人是一款适用于电话营销场景的智能语音交互系统。我们在呼叫中心系统的基础上加入了自然语言处理、语音识别、语义理解等多项人工智能技术,通过机器人智能外呼代替人工拨打电话,达到意向客户筛选、目标客户锁定、不同客户精准分类的目的,在有效降低人力成本......
  • 人工智能机器人的情感设计
    人工智能机器人的情感设计方法,主要思想:1.情感欲望与条件人生就是情感欲望的产生和满足,人的所有言行都是在满足情感欲望。但是情感欲望需要在特定的条件下,才能满足。例如小时候大家都有踢足球的情感欲望,但是上课时不能踢足球,只有放学后才能踢足球。一旦情感欲望所需的条件满......
  • 助力实现精准医疗!集和诚手术机器人系统控制产品方案
    随着国内近几年来经济的火速发展,在市场上出现越来越多智能化、科技化的产品,手术机器人是代表性产品之一。机器人手术具有精度高、稳定性强、可进行复杂操作等优势,将引领外科手术变革。在数字化技术与医疗产业加速融合、国家对高端医疗设备产业大力倾注政策扶持的大环境下,国内手......
  • ABB机器人维修
    如何使用ABB机器人的诊断软件来检测机器人主机的故障?1.连接诊断软件:确保ABB机器人的诊断软件与机器人主机正确连接。2.进入诊断模式:在诊断软件中选择“诊断”或“维护”模式,以便访问系统状态和故障代码。3.查看ABB机器人维修故障代码:在诊断界面中查找显示的故障代码,这些代码通......
  • 如何用 Telegram 创建群聊客服聊天系统(2)
    在上一部分,我们实现了机器人能够从群聊中识别提问,并将问题转发到指定客服窗口。本篇将继续深入,解决客服如何通过群聊机器人回复客户,并将消息私聊反馈给客户的问题。我们还会进一步优化系统功能,让整个客服系统更加智能化。推荐正在找工作的朋友们:就业指导或面试指导(不......
  • 大模型呼叫中心,如何建设呼入机器人系统?
    大模型呼叫中心,如何建设呼入机器人系统?作者:开源呼叫中心系统FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc大模型呼叫中心呼入机器人系统的建设是一个涉及多个环节和领域的综合性工程。以下是一个详细的步骤指南,涵盖了从需求分析到系统优化和维护的全过程:一、......
  • 六足仿生机器人机械仿真及控制系统设计(开题报告)
    一、选题目的的理论价值和现实意义选题的理论价值:本次毕业设计是结合慧鱼机器人模型,设计机器人的控制系统与操纵机构其目的是综合运用基础理论知识达到提高自己分析问题和解决问题的能力,提高机械控制系统设计和操纵机构的设计能力,并增强动手能力与计算机编程能力。选题的......
  • 安川Yaskawa机器人DX100示教器维修的方法
        安川Yaskawa机器人DX100示教器维修的优劣势分析安川Yaskawa机器人示教编程,工业机器人维修,即操作人员经过安川机器人示教器,ABB机器人保养,手动操控机器人的关节运动,以使机器人运动到预订的方位,一起将该方位进行记载,并传递到机器人操控器中,今后的机器人可根据指令自......
  • ABB机器人DSQC639主板维修
    ABB机器人的主板,作为这一高科技产物的中枢大脑,其出色的稳定性和可靠性无疑是确保机器人能够高效、持续运作的关键所在。一旦主板遭遇故障,整个机器人的运行将可能陷入瘫痪状态,严重影响生产效率与质量。以下,将深入探讨几种常见的ABB机器人主板故障及其相应的解决之道:1.ABB机器人DS......