页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1. 需求背景与适用场景

1.1 需求背景

Smartbi NLA 本身是提供了多种客户端供用户选择的。如果常用PC,我们有基于PC浏览器的AIWeb页面;如果常用手机,我们有基于手机的App或者使用手机浏览器访问的AIChatView页面;我们还提供了基于钉钉的使用页面。AIChat本身是提供了多种客户端供用户选择的。如果常用PC,我们有基于PC浏览器的AIWeb页面;如果常用手机,我们有基于手机的App或者使用手机浏览器访问的AIChatView页面;我们还提供了基于钉钉的使用页面。

但是,这些都是Smartbi NLA平台内置的使用页面,页面样式和操作方式是基于产品内置好的。如果用户想把自然语言查询集成到用户自己的APP里面,或者集成到用户其他的平台里面,我们内置的页面样式可能不太符合用户的要求,集成起来就不自然。AIChat平台内置的使用页面,页面样式和操作方式是基于产品内置好的。如果用户想把自然语言查询集成到用户自己的APP里面,或者集成到用户其他的平台里面,我们内置的页面样式可能不太符合用户的要求,集成起来就不自然。

为了让用户在使用Smartbi自然语言查询的时候,可以自定义前端页面,我们提供了基于Java语言实现的RestFul API接口。本文主要就是介绍如何使用Smartbi NLA的接口实现自己的前端页面。AIChat的接口实现自己的前端页面。

1.2 适用场景

使用Smartbi NLA 提供的API适合以下场景开发:AIChat 提供的API适合以下场景开发:

  • 觉得Smartbi内置的对话界面不好看,可以使用Smartbi扩展包机制重新开发使用界面
  • 需要将对话嵌入到集团内部APP中,可以定制Android/IOS原生界面,或者嵌入自定义H5页面
  • 需要嵌入到其他的Web平台中,可以定制H5页面
  • 需要嵌入其聊天工具中(如:钉钉、微信等),可以定制符合聊天工具要求的页面
  • 其他使用场景,可以咨询Smartbi客服团队,获取支持

...

如果是Web页面,推荐使用Smartbi扩展包方式开发集成页面。这样可以避免跨域问题。如果需要在第三方应用中开发,需要做对所有API做服务端转发。

3. Smartbi接口调用说明

NLA接口是基于Smartbi标准远程接口实现的,Smartbi的远程接口,Smartbi接口的调用方法如下:AIChat接口是基于Smartbi标准远程接口实现的,Smartbi的远程接口,Smartbi接口的调用方法如下:


参数名

说明

接口URL

http://smartbi-server:port/smartbi/vision/RMIServlet

输入参数

className

服务类名


methodName

服务方法名


params

方法参数,以数组形式传递

返回值

返回JSON对象


retCode

返回码:0 - 正确


result

方法返回结果,不同方法返回不一样


duration

执行时间:毫秒

...

【PostMan - 登录方法测试样例】


4. API说明

Smartbi NLA提供了比较丰富的二次开发API,本次Demo只使用了一部分。这个章节,重点介绍下本次Demo使用的API。AIChat提供了比较丰富的二次开发API,本次Demo只使用了一部分。这个章节,重点介绍下本次Demo使用的API。

以下介绍的接口,调用方法和调用URL是一样的,区别仅仅是参数不同,所以对每个API不会重复介绍调用方法,具体调用方法请参考:上一章节的 “Smartbi接口调用说明”

...


URL参数名

URL参数值


输入参数

className

UserService


methodName

clickLogin


params

userName

样例:["demo","demo"]

password

返回值

retCode

0

非0表示错误

result

true

非0时是错误信息

4.2 

...

登录AIChat


URL参数名

URL参数值

说明

输入参数

className

AIChatRemoteService


methodName

loginIfSmartbiLogged


params

[]

样例:[]

返回值

retCode

0

非0表示错误

result

{\"token\":\"CE3CE70AC12B70052A507D4B560E5374\"}

NLA 的token信息,这个非常重要,后续NLA所有方法需要用到这个token;AIChat 的token信息,这个非常重要,后续AIChat所有方法需要用到这个token;

非0时是错误信息

备注:登陆NLA前需要登陆成功Smartbi(通过账户密码备注:登陆AIChat前需要登陆成功Smartbi(通过账户密码/单点/其他登陆方式)

4.3 查询数据模型清单、推荐问句

...

返回参数名

返回值说明

reCode

接口调用是否成功;大于等于0 - 表示成功;负数为错误码

message

错误描述,recode=0 时,该内容为空

token

登录方法特有内容,这个非常重要,后续接口需要传递该值以验证登录

result

调用接口的返回内容,登录接口的返回内容说明如下:

"id":                          数据模型themeID

"name":                       数据模型名称

"alias":                        数据模型名称别名

"dimensions"                   NLA模型中所有维度                AIChat模型中所有维度

"measures"                    NLA模型中所有度量                   AIChat模型中所有度量

"recommendQuestions"          推荐问句

...


其他返回值可以忽略

...

返回值

{

    "code": 0,

    "result": {

        "currentRows": "",

        "currentPage": "",

        "rowsPerPage": "",

        "portletType":"",

        "html":"",

        "nl2sql":"",

         "llm":"",

         ...

    },

    "message": "",

    "token": ""

}


  • 接口返回说明

第一层result的属性

属性含义

说明

retCode

NLA请求返回码

AIChat请求返回码

0表示成功,负数表示错误,整数是路由码

message

错误信息

负数才有值

result

JSON对象

不同的retCode,返回的内容不一样,详细内容见后续表格

tokentoken信息

登录方法特有内容,这个非常重要,后续接口需要传递该值以验证登录

  • query返回 result.code=0,仅列举主要的属性(正确查询

...

返回值

{

    "reCode": 0,

    "duration": "36"

}

  • 接口调用成功后,会将点赞点踩相关信息写入NLA的数据库服务中对应表中:接口调用成功后,会将点赞点踩相关信息写入AIChat的数据库服务中对应表中:

4.7 切换图形


URL参数名

URL参数值

说明

输入参数

className

AIChatRemoteService


methodName

queryWithNl2sql


params

token

loginIfSmartbiLogged方法获取的token

nl2sql

query接口返回的n2lsql值,

注:需要将value值中转义符\去除,并且注意json格式

("{'key':'value'}"注意单引号与双引号的使用)

sourceId

数据模型ID

chartType

图形类型,

举例:ECHARTS_BAR

返回值

retCode

0

非0表示错误

result



...

4.10 清除对话历史(开启新对话)

Smartbi NLA 是可以启用“多轮对话”和“单轮对话”的,具体操作方法在对话式分析主页面中勾选,这里不详细描述。在启用多轮对话的时候,AIChat 是可以启用“多轮对话”和“单轮对话”的,具体操作方法在对话式分析主页面中勾选,这里不详细描述。在启用多轮对话的时候,

有时需要清空对话历史(也就是开启新的对话)。开启新对话需要使用该API实现。

...

返回参数名

返回值说明

retCode

接口调用是否成功;0 - 表示成功;负数为错误码

5. 页面集成

SmartBi NLA提供三种页面集成的方式 AIChat提供三种页面集成的方式

5.1 页面集成方式一

名称

请求地址

http://smartbi-nlaAIChat-server:port/smartbi/vision/AIChatView2.html?question=今年各城市销量&userName=admin&password=admin

参数说明

question:问句,可以选填

userName:用户名

password:密码

请求URL:http://smartbi-nlaAIChat-server:port/smartbi/vision/AIChatView2.html?userName=admin&password=admin

...

5.2 页面集成方式二

名称

请求地址

http://smartbi-nlaAIChat-server:port/smartbi/vision/login.jsp?username=admin&password=admin&surl=/smartbi/smartbix/#/sdk

参数说明

userName:用户名

password: 密码

surl :/smartbi/smartbix/#/sdk

请求URL:http://smartbi-nlaAIChat-server:port/smartbi/vision/login.jsp?username=admin&password=admin&surl=/smartbi/smartbix/#/sdk

...