企业AI知识库

轻易云AI知识库是一个为企业量身打造的智能解决方案,它能够进行机器人角色设定、知识库训练、发布/分享机器人,同时还带有AI智能对话功能,可以设定多种AI行业场景。适用于企业智能客服、企业智能文档、专家顾问助理等多种企业级商业场景,具有较大的商业使用价值。

了解更多,请访问轻企AI知识库官网

AI智能体

AI智能体是轻易云知识库的核心组成部分,它通过录入文档或问答来创建知识库,让机器人学习。根据机器人训练情况,企业可以实时删除或替换文档,以保持知识库的更新和准确性。AI智能体支持多种角色设定,如客服、销售、培训师、营销人员、行业专家等,以满足不同业务需求。

了解更多,请访问轻易云知识库体验中心

用友U8+ API接口使用教程

前言

U8+和其他的公开的开放API接口有一些差异,他是需要先对接的到代理服务器,通过代理服务器进行对接,所以只要保证U8+能上网就能对接,和畅捷通T+的模式有点类似
流程:

  1. 注册成为开发者(用于创建用友U8 API应用);
  2. 注册企业账号(用于提供数据);
  3. U8服务器上配置用友服务器数据接口,并安装和运行“用友开放平台客户端”;
  4. 开发者账号创建应用,并向企业账号申请授权;
  5. 企业账号审批通过应用授权申请,并在网站后台为应用配置数据源;
  6. 开发接入。

一、开发者和企业账号
首先,开发应用需要注册一个用友开放平台的开发者账号,通过认证后,可以在管理页面创建自己的应用,填写应用的基本信息,并选择需要的接口权限后,应用就创建完成了。

然后,用户需要到授权页面向指定的企业账号发起调用申请,在这个页面里也可以看到授权状态、U8开放平台客户端的运行状态。

而作为数据源的所有者,企业也需要注册一个开放平台的账号(企业账号应该也可以直接认证成开发者),这个账号主要有三个任务:审批来自开发者的应用授权申请;为开发者的应用配置数据源(网站和服务器);通过U8服务器上的开放平台软件发布数据接口。
下图是企业账号审批、查看应用授权的界面:


二、服务器数据源配置
服务器上一共用到三个软件:

  1. EAI接口设置:身份验证和数据源配置
  2. EAI环境检测与修复工具(平时没什么用,用来检测运行环境)
  3. 用友开放平台客户端(数据代理程序,必须打开才能提供外部数据访问)


三、接入

  1. 开发者:创建应用、申请权限;
  2. 企业账号:审批应用、配置网页数据参数、配置服务器EAI数据源、运行开放平台客户端。
    完成上述工作后,就可以正式接入API并开始开发工作了。
    需要注意的是,应用程序只需要具备Internet访问能力即可,不需要直接访问U8服务器,所有数据请求会从U8开放平台代理到U8服务器上。
    用友开放平台API参考手册:https://u8open.yonyou.com/apiCenter/index

在开始前,第一步要做的就是用创建应用时的appkey和appsecret拿到Token,有了Token就可以按业务需求进行数据交互了。
除了token参数,几乎所有接口都有一个from_account参数和to_account参数,就像字面上所说,前者from_account指开发者账号,后者to_account是指数据提供方的企业账号。
Response

/// <summary>
/// 非列表类型的数据接口Response
/// </summary>
public class U8ResponseBase
{
[JsonPropertyName(“errcode”)]
public string ErrorCode { get; set; } = string.Empty;

[JsonPropertyName("errmsg")]
public string ErrorMessage { get; set; } = string.Empty;

public bool Succ => ErrorCode == "0";

}
/// <summary>
/// 列表类型的数据接口Response
/// </summary>
public class U8ResponseList : U8ResponseBase
{
[JsonPropertyName(“page_index”)]
public string PageIndex { get; set; } = “0”;

[JsonPropertyName("page_count")]
public string PageCount { get; set; } = "0";

[JsonPropertyName("row_count")]
public string RowCount { get; set; } = "0";

}

Token

public class U8ResponseToken : U8ResponseBase
{
[JsonPropertyName(“token”)]
public U8Token? Token { get; set; }
}
public class U8Token
{
[JsonPropertyName(“appKey”)]
public string AppKey { get; set; } = "";
[JsonPropertyName(“expiresIn”)]
public int ExpiresIn { get; set; }
[JsonPropertyName(“id”)]
public string Id { get; set; } = "";
/// <summary>
/// Token过期时间,取真实有效期的90%
/// </summary>
public DateTime Exp { get; set; }
}

GetToken(非列表类型的数据接口)
/// <summary>
/// 获取U8 Api Token
/// </summary>
/// <param name=“source”>调用方,仅用于记录</param>
/// <param name=“force”>不判断当前Token有效性,强制重新请求一个Token</param>
/// <returns></returns>
public static void GetToken(bool force = false)
{
//有效期剩余>10%,并且未要求强制刷新,并且上一次获取Token成功
if (Token.Exp < DateTime.Now && !force && Token.Success)
{
Console.WriteLine(“GetToken: Skip”);
return;
}
using WebClient client = new();

Token.Success = false;
try
{
    string resp = client.DownloadString($"https://api.yonyouup.com/system/token?" +
        $"from_account={STRINGS.FROM_ACCOUNT}&app_key={U8Credentials[0].AppKey}&app_secret={U8Credentials[0].AppSecret}");
    var respObj = JsonSerializer.Deserialize<U8ResponseToken>(resp);
    if (respObj?.Token is null)
    {
        Console.WriteLine("GetToken: FAILED");
        return;
    }

    Token = respObj.Token;
    Token.Success = true;
    Token.Exp = DateTime.Now.AddSeconds(Token.ExpiresIn * 0.9);
    Console.WriteLine(JsonSerializer.Serialize(Token));
}
catch (Exception ex)
{
    Console.WriteLine($"GetToken: Exception {ex.Message}");
}//失败了就等下一次

}

批量获取采购订单(列表类型的数据接口)
public static void GetPurchaseOrders(DateTime start, DateTime end)
{
if (start.Year < 2000) start = DateTime.Now.AddDays(-7);
if (end.Year < 2000) end = DateTime.Now;
if (start > end) (start, end) = (end, start);

string date_begin = start.ToString("yyyy-MM-dd");
string date_end = end.ToString("yyyy-MM-dd");
//https://api.yonyouup.com/api/purchaseorderlist/batch_get
using WebClient client = new();
int pagecount = 1;
int page = 1;
List<U8PurchaseOrderSimple> simples = new();
while (page == 1 || page <= pagecount)
{
    string resp = client.DownloadString($"https://api.yonyouup.com/api/purchaseorderlist/batch_get?from_account={STRINGS.FROM_ACCOUNT}&to_account={STRINGS.TO_ACCOUNT}&" +
    $"app_key={U8Credentials[0].AppKey}&token={Token.Id}&rows_per_page=100&page_index={page++}&date_begin={date_begin}&date_end={date_end}");
    var batch = JsonSerializer.Deserialize<U8ResponsePurchaseOrderList>(resp) ?? new();
    simples = simples.Concat(batch.Orders).ToList();
    pagecount = Convert.ToInt32(batch.PageCount);
    Console.WriteLine($"{batch.PageIndex} of {pagecount}, {simples.Count} of {batch.RowCount}\r\n{resp}");
}

}

public class U8ResponsePurchaseOrderList : U8ResponseList
{
[JsonPropertyName(“purchaseorderlist”)]
public List<U8PurchaseOrderSimple> Orders { get; set; } = new();
}

热门文章

调用聚水潭接口获取并加工数据的技术实现

2022-04-08 16:29:59

精确获取与加工MySQL数据以实现企业系统集成

2022-08-10 20:25:00

轻易云平台与金蝶云星辰V2接口调用及数据加工实践

2021-06-03 02:21:54

轻易云平台调用旺店通接口获取销售退货单数据详解

2023-09-21 08:36:42

实战分享:API接口在领星ERP与用友U8系统中的应用

2022-01-24 16:05:18

调用小满OKKICRM接口获取客户更新并进行数据清洗

2021-11-03 01:36:21

API调用与数据处理:集成汤臣倍健营销云与SQLServer

2022-02-20 05:55:29

轻松实现钉钉采购申请单与金蝶云的无缝对接

2021-09-13 18:20:57

如何使用轻易云平台实现金蝶云与旺店通数据无缝对接

2023-06-21 08:28:36

如何通过轻易云平台调用金蝶云星空接口获取费用项目信息

2023-05-15 02:01:21

金蝶云星空到MySQL的数据转换与写入策略解析

2021-08-12 03:42:31

轻易云集成平台在聚水潭到金蝶云星空ETL过程中的应用

2022-08-12 06:04:53

轻易云平台调用旺店通API获取店铺信息详解

2021-02-27 08:44:57

优化数据同步:旺店通与金蝶云星空的数据集成技术案例

2022-06-09 22:28:45

轻易云实现旺店通与金蝶云星辰V2销售出库单对接方案

2023-01-23 05:51:55

确保无数据遗漏:金蝶云和聚水潭数据集成的分页与限流处理

2021-07-13 04:23:19

钉钉API调用及数据加工技巧分享

2023-05-30 03:57:52

轻易云平台中金蝶K3-WISE物料数据的提取与清洗

2023-09-05 01:33:04

调用金蝶云星空接口获取采购数据的最佳实践

2023-01-08 00:24:09

从金蝶云星辰V2接口获取并加工数据的最佳实践

2021-01-02 19:38:31

接口配置打通金蝶云星空和金蝶云星空数据对接

2023-01-26 10:15:04

汤臣倍健营销云对接打通SQL Server小B-新版订单组合查询接口与INSERT语句接口

2023-01-26 10:15:04

旺店通·企业奇门与金蝶云星空对接集成查询销售出库单打通[旺店通][销售出库单标准新增]-v1

2023-01-26 10:15:02

金蝶云星空、旺店通·企业奇门通过接口配置数据对接

2023-01-26 10:15:02

钉钉和轻易云集成平台接口打通对接实战

2023-01-26 10:15:01