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

.NET Core对接Learning Locker时Actor的mbox字段无法保存问题

问题根因

  • xAPI(即TinCan)规范明确要求mbox字段必须携带mailto:前缀,纯邮箱字符串属于非法格式,会被序列化库或Learning Locker服务端直接丢弃
  • 你当前的代码未区分匿名状态,匿名场景下仍会赋值mbox,若此时UserEmailAddress为空也会导致字段被过滤
  • 部分旧版本TinCan .NET SDK在account和mbox两种逆功能标识(IFI)同时存在时,会默认优先序列化account忽略mbox
  • 部分Learning Locker实例会配置IFI字段过滤规则,默认丢弃mbox类型的标识

解决步骤

步骤1:修正mbox赋值逻辑,补充协议前缀和匿名判断

修改代码如下:

public Agent MakeActor(bool anonymous)
{
    return new Agent
    {
        name = anonymous ? AnonymousUser : UserName,
        // 仅非匿名场景赋值mbox,且添加规范要求的mailto前缀
        mbox = anonymous ? null : $"mailto:{UserEmailAddress}",
        account = new AgentAccount
        {
            name = anonymous ? AnonymousUser : UserId.ToString(),
            homePage = new Uri(StringHelper.ResolveHostName(Name,AwsDefines.AwsDomain))
        }
    };
}

如果UserEmailAddress可能为空,可额外增加空值判断,避免赋值无效的空mbox字段。

步骤2:验证SDK序列化结果

提交statement前,将生成的Agent对象序列化为JSON,检查mbox字段是否正常存在:如果序列化结果本身没有mbox,升级你使用的TinCan .NET SDK到最新稳定版即可解决。

步骤3:调整Learning Locker配置

进入Learning Locker管理后台的「xAPI Settings」页面,确认没有开启Restrict IFIs类限制规则,如果有规则,将mbox加入允许的IFI列表即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:04