You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rasa集成的Telegram机器人其他账户正常仅本人账户运行报错

根因分析

你遇到的两类报错存在因果关联:

  1. 核心错误为ValueError: 'hu' is not in list:你的Telegram账号对应的Rasa对话追踪器(Tracker)中存在未在domain.yml中定义的意图hu(hu为匈牙利语的ISO 639-1语言代码,大概率是你的Telegram客户端自动翻译功能、或账号默认语言设置触发的异常字段被误识别为意图),Rasa的UnexpectedIntentPolicy在做动作预测时找不到对应意图,直接抛出异常,导致webhook请求处理中断,返回空响应。
  2. 后续的AttributeError: 'NoneType' object has no attribute 'text'、*AttributeError: 'NoneType' object has no attribute 'output'*报错,均是因为前序流程中断后没有返回合法的HTTP响应,同时你的账号可能发送了Rasa默认Telegram通道不支持的非文本类消息(如贴纸、动图、服务通知消息等),通道处理时没有做非空判断触发异常。

解决方法

  • 第一步:清除异常对话数据
    如果你使用的是默认内存存储对话追踪器,直接重启Rasa服务即可清除异常数据;如果你使用Redis、SQL等持久化存储,直接删除sender_id为你的Telegram用户ID的所有追踪器记录。
  • 第二步:修复意图识别异常
    如果你不需要支持匈牙利语,可在NLU处理管道中增加语言过滤规则,拦截非目标语言的请求;如果有多语言需求,在domain.yml中补全对应语言的意图定义,或在UnexpectedIntentPolicy配置中增加hu的阈值规则。
  • 第三步:兼容Telegram通道异常消息
    修改Rasa自带的Telegram通道源码,在rasa/core/channels/telegram.py的_is_user_message方法中增加非空判断,避免空消息报错,修改后代码如下:
def _is_user_message(self, msg: Any) -> bool:
    # 新增消息对象非空校验
    if not getattr(msg, "message", None):
        return False
    return msg.message.text is not None

遇到非文本消息时可直接返回固定提示,不要中断请求处理流程。

内容的提问来源于stack exchange,提问作者pygga1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:48:01