页面树结构

版本比较

标识

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

...

1、报表资源ID:配置需要推送的报表资源的id,配置之后,点击推送消息的“查看详情”可以直接跳转Smartbi,打开对应资源。

Image Added

获取报表资源id的方式如下,右键点击需要推送的报表资源,点击属性,便可以看到节点id,节点id就是报表资源id:

Image Added

Image Added

2、推送标题:配置推送此消息时,显示的标题,如截图所示红框部分:

Image Added


3、推送消息内容:配置推送此消息时,显示的消息内容,如截图所示红框部分:

Image Added

4、推送消息接收者,在Smartbi中对应的用户id、用户组id或者角色id:配置消息的接收者,若配置的是用户,则type设置为"USER";若配置的是用户组,则type设置为"GROUP";若配置的是角色,则type设置为"ROLE",id需要配置对应的用户id,用户组id或者角色id,id可通过查询t_user(用户表)、t_group(用户组表)和t_role(角色表)获取。

...

打开计划-新建计划,绑定刚刚创建的任务设置定时时间即可;

Image Added


2.5.3. 定时推送电子表格带图的应用消息

...

说明:导出的图片按任务任务的执行账号对报表执行导出,如果推送的报表资源对不同用户有不同数据权限,请使用2.45.2的普通应用消息进行推送。

 

2.5.3.1. 操作步骤

...

保存后即可测试运行把资源报表导出图片,然后推送图片到飞书。

Image Added

2.5.3.2. 任务脚本

// 把资源报表导出图片,然后推送图片到飞书,目前仅支持电子表格、web电子表格

importPackage(Packages.smartbi.sdk.service.systemconfig);

/****************** 配置 - 开始******************/

// 必须配置:电子表格ID

var reportId = 'I8a8a8d2a018584b084b0fae2018584fde1d200a0';

// 必须配置:可配置推送标题

var title = "测试电子表格";

// 可选配置:推送消息内容

var desc = "这是一段消息内容";

// 必须配置:接收者在Smartbi的用户,用户组或者角色id。

// 若配置的是用户,则type设置为"USER"; 若配置的是用户组,则type设置为"GROUP"; 若配置的是角色,则type设置为"ROLE"

// id需要配置对应的用户id,用户组id或者角色id

var sendUser = [

{type: "USER", id: "用户ID1"},

{type: "USER", id: "用户ID2"},

{type: "GROUP", id: "用户组ID"},

{type: "ROLE", id: "角色ID"}

];

// 可选配置:导出电子表格的参数信息---------------------------------------------  

// 设置格式:{id:"OutputParameter.数据集ID.参数名称",value:参数真实值,displayValue:参数显示值},参数值可

// 以设置为固定值,变量,或者默认值,默认值写法:"$默认值$",例如如:{id:"OutputParameter.I2c9019810158fc12fc1224c00158fc2e21c50069.测试",value:"$默认值$",displayValue:"$默认值$"}

var reportParamSetting = [

   //{id:"OutputParameter.I8a8a9be9018671b671b6e610018671d0e80500e8.用户",value:"SCHEDULEADMIN",displayValue:"计划管理员"}//多个参数之间以逗号分隔

];

/****************** 配置 - 结束******************/


// 以下内容无需配置

var sendUrl = "";

var systemConfigService = new SystemConfigService(connector);

var urlConfig = systemConfigService.getSystemConfig("INTEGRATED_APPLICATION_ADDRESS");

if (urlConfig !== null && urlConfig.getLongValue() !== null && urlConfig.getLongValue() !== "") {

    sendUrl = urlConfig.getLongValue();

    if(!sendUrl.endsWith('/')){

     sendUrl = sendUrl+'/';

    }

sendUrl += "vision/feishu/openresource.jsp?feishu=true&sh=false&refresh=true&showtoolbar=false&showPath=false&iPad=true&sendTarget=auto&resid=" + reportId;

}

var sendPictureSetting = {

reportId: reportId,

title: title,

desc: desc,

sendUrl: sendUrl,

sendUser: sendUser,

reportParamSetting: reportParamSetting

};


connector.remoteInvoke("FeiShuCommonModule","sendPictureToFeishu",[JSON.stringify(sendPictureSetting)]);


2.5.3.3. 配置项说明

参考2.23.2,此处仅补充一处21,此处仅补充一处2.23.2没有的配置项:1没有的配置项:

可选配置,导出电子表格的参数信息,这项配置项可以用于配置以什么参数来导出电子表格。参数id的获取方式参考下方说明:

右键点击目标电子表格,点击“血统分析”,打开数据集:

Image Added

按以下操作,即可获取参数id:

Image Added


而参数的真实值和显示值,可以通过“系统运维-全局资源定义-参数定义-打开参数-预览备选值”来获取:

...

Image Added

2.

...

5.3.4. 配置相关计划定时推送

请参考2.45.2.4

...

2.

...

5.4. 定时推送自定义机器人消息(群消息)

通过计划任务定时向飞书推送群消息。

...

2.

...

5.4.1. 操作步骤

(1)飞书自定义机器人配置

打开群设置:

Image Added

进入群机器人:

Image Added

添加自定义机器人:

配置webhook:Image Added

其中webhook地址需要在smartbi中使用;Image Added

如果需要设置签名,签名秘钥需复制到smartbi中使用;Image Added

(2)新建任务,并将定制提供的脚本粘贴到代码编辑区。

保存后即可测试运行推送报表到飞书。

...


配置webhook:

其中webhook地址需要在Smartbi中使用;

如果需要设置签名,签名秘钥需复制到Smartbi中使用;

Image Added


(2)新建任务,并将定制提供的脚本粘贴到代码编辑区。

保存后即可测试运行推送报表到飞书。

Image Added

2.5.4.2. 任务脚本

importPackage(Packages.java.io);

importPackage(Packages.java.net);

importPackage(Packages.java.lang);

importPackage(Packages.smartbi.net.sf.json);

importPackage(Packages.smartbi.ext.feishu.common)


/****************************** 配置 开始 ******************************/

//机器人webhook

var webhook = "https://open.feishu.cn/open-apis/bot/v2/hook/c2538dae-218f-41a8-abaf-6435a828258b";

//签名校验,如果不需要可以置空

var secret="NWswmBHaiQjHoDaIZ2dnbg";

//消息标题

var title="消息标题";

//消息内容

var content ="测试消息内容";

//按钮显示内容

var btnStr="打开报表"

//按钮打开的报表链接

var btnUrl="http://10.10.13.170:8080/smartbi/vision/feishu/openresource.jsp?feishu=true&sh=false&refresh=true&showtoolbar=false&showPath=false&iPad=true&resid=I297e289f017ccb5fcb5fe29e017ccb6a9ae50099";

/****************************** 配置 结束 ******************************/


var rtn = httpRequest(webhook, "POST",secret,title, content,btnStr,btnUrl);

logger.info("返回结果为:" + rtn);

 //发送消息

function httpRequest(requestUrl, requestMethod,secret, title, content, btnStr, btnUrl) {

    var httpUrlConn = null;

    var url = new URL(requestUrl);

    httpUrlConn = url.openConnection();

    httpUrlConn.setDoOutput(true);

    httpUrlConn.setDoInput(true);

    httpUrlConn.setUseCaches(false);

    // 设置请求方式(GET/POST)

    httpUrlConn.setRequestMethod(requestMethod);

    httpUrlConn.setRequestProperty("Content-Type", "application/json");

    httpUrlConn.setRequestProperty("Charset", "UTF-8");

    /****************** 拼接发送内容(包括签名) - 开始 *****************/

    var dataStr='{"msg_type": "interactive",'

    +'"card": {'+'"header": {"title": {"tag": "plain_text","content": "'+title+'"}},'

    +'"elements": ['

    +'{"tag": "div","text": {"tag": "lark_md","content": "'+content+'"}}';

    if(btnStr!=null && btnStr!=''){

        dataStr=dataStr+',{"actions": [{"tag": "button","text": {"tag": "lark_md","content":"'+btnStr+'"},"url": "'+btnUrl+'","type": "default"}],"tag": "action"}';

    }

    dataStr=dataStr+']}}';

    var jsonObj = JSONObject.fromString(dataStr);

    //如果秘钥不为空则视为需要签名

     if(secret!=null && secret!=''){

        var timestamp = parseInt(System.currentTimeMillis()/1000);

        var sign = FeiShuCommonModule.getInstance().GenSign(secret,timestamp);

        jsonObj.put("timestamp",""+timestamp);

        jsonObj.put("sign",sign);

    }

    logger.info("发送请求参数:" + jsonObj.toString());

    /******************拼接发送内容(包括签名) - 结束 *****************/

    

    httpUrlConn.connect();

    var writer = new OutputStreamWriter(httpUrlConn.getOutputStream());

    // 发送参数

    writer.write(jsonObj.toString());

    // 清理当前编辑器的左右缓冲区,并使缓冲区数据写入基础流

    writer.flush();

    // 将返回的输入流转换成字符串

    var inputStream = httpUrlConn.getInputStream();

    var inputStreamReader = new InputStreamReader(inputStream, "UTF-8");

    var bufferedReader = new BufferedReader(inputStreamReader);

    var str = null;

    var buffer = "";

    while ((str = bufferedReader.readLine()) !== null) {

        buffer += str;

    }

    bufferedReader.close();

    inputStreamReader.close();

    // 释放资源

    inputStream.close();

    httpUrlConn.disconnect();

    var jsonObject = buffer.toString();

    return jsonObject;

}

...


2.

...

5.4.3. 配置项说明

webhook:机器人webhook,可在群设置中的机器人配置中找到(如下图);

Secret:签名秘钥,可在群设置中的机器人配置中找到(如下图),如果没设置签名校验,可设置空;

Image Added

title:消息标题;

content:消息内容;

btnStr:按钮显示内容;

btnUrl:按钮打开的报表链接;

...


2.

...

5.4.4. 配置相关计划定时推送

请参考2.45.2.4

...


2.

...

5.5. 定时推送电子表格导出文件或图片到用户或群

导出电子表格文件或图片推送给用户或者推送给应用机器人有权限的群;

...

2.

...

5.5.1. 操作步骤

如果要推送到群,需要按如下步骤配置:

...

1、飞书后台管理配置应用机器人,参考 2.2.1.6

2、在群里添加smartbi应用对应的机器人:

...

  • 新建任务,并将定制提供的脚本粘贴到代码编辑区,根据实际情况调整脚本配置内容:

...

Image Added

Image Added

3、新建任务,并将定制提供的脚本粘贴到代码编辑区,根据实际情况调整脚本配置内容:

Image Added

2.5.5.2. 任务脚本

...

2.

...

5.5.3. 配置项说明

脚本的配置项说明具体可参考脚本中的注释

导出报表文件或图片发送给用户或群任务脚本.txt

...


2.

...

5.5.4. 使用效果

1、推送pdf文件消息到群的效果(脚本配置项uploadType = "file"):

Image Added

2、推送png带图片的富文本消息到群的效果(图片可预览,脚本配置项uploadType = "img"):

Image Added

3、推送png文件消息到群的效果(图片当做文件发送,脚本配置项uploadType = "file"):

...

Image Added


3. 常见问题

...

3.1. 配置飞书系统选项报错

问题:配置系统选项-飞书集成时,如果提示无法获取token

Image Added

解决方案:如果报错为【UnknownHostException: open.feishu.cn】,如下图,请检查服务器是否做了网络访问限制,导致服务器无法正常访问飞书的接口,开放飞书网络访问限制即可;

...