快速上手|飞书低代码平台

快速上手|飞书低代码平台

飞书低代码平台手册精选NaN-NaN-NaN
产品功能
阅读本文档,你将会了解到:
  • 创建一个云函数的操作步骤
  • 调用云函数的方法
如果不了解「云函数」是什么、能做什么?推荐阅读 《云函数-概述》
本文档不会涉及到复杂的工具或安装需求,但开始前,确保已创建了应用。如果还未创建,建议进入「飞书低代码平台」创建你的第一个应用
前置准备
(一)创建云函数
进入应用开发后台,左侧选中「低代码」菜单,开始创建一个函数。
点击函数下的「新建」按钮,填写 “名称” “API名称” 字段。这里需要注意的是:
  • 名称:是单纯方便开发者记忆的名字,支持中英文;
  • API 名称:云函数唯一标识符,调用需要使用该名称。
250px|700px|reset
点击「提交」后,我们便创建了第一个 云函数 。效果如下图所示:
250px|700px|reset
图中列表中字段的说明如下:
  • 状态: 当前云函数的部署状态,包括:未部署、已部署、已修改。只有当状态为 ”已部署“ 时,该云函数才能在其他地方被调用。”已修改“ 表明当前云函数有内容修改,但未保存发布;
  • 是否支持Public API 调用: 如果云函数需要对外开放,供第三方系统调用,需要手动在「操作-发布为 Public API 」中将云函数发布成 Public API
  • Public API URL: 当开发者手动发布成 Public API 后,会自动生成供外部系统使用的 Public API 链接,开发者可通过 HTTP 协议方式请求该 URL。
(二)安装 NPM 包
《云函数-概述》 中,有说明:
云函数本质上就是一段运行 Node.js 环境的代码,所以大多数 NPM 包都可在云函数中使用。
第三方 NPM 包,可以在应用开发后台的「低代码」-「依赖」页面中,进行统一管理。如下图所示:
💡
注意:在同一个应用中的所有云函数,是共享同一份依赖列表。
250px|700px|reset
「飞书低代码平台」已预置一些 “系统依赖” 包,包括上图中的:@kldx/core 与 @kunlun-dx/sdk ,提供了应用最基础的对象操作、函数调用、数据库读写等能力。
开发者无法移除,只能切换版本。但我们可以在「 NPM 依赖」列表中,点击「安装」按钮,添加我们需要使用的第三方代码包:
250px|700px|reset
在弹窗中,将 NPM 包名称输入、搜索并选择版本,点击「安装」,便可完成第三方 NPM 包的安装。
在这个示例中,我们需要用到网络请求的能力,所以这里使用第三方的 NPM 包 axios 来帮助我们完成这一工作。
(三)准备编写代码
回到「低代码」-「函数」界面,点击「编辑」按钮,进入代码编辑器
250px|700px|reset
进入代码编辑器后,即可查看到默认生成的一段代码:
250px|700px|reset
前置学习
在正式编写代码前,还需要了解 云函数 的编写规范及其他基础知识。
(一)函数入口
所有 云函数 都会有一个固定的函数执行入口,就像 C++ 里面 int main() 函数一样(当然,如果你没接触过C++ 也没关系,你只需要知道,通常意义上来说,main函数是 C++ 程序开始后固定执行的第一个函数),在这里就代表 云函数 要执行的第一函数
云函数 中,函数的执行入口在代码编辑器页面即可查看到,如下图所示。针对图中的函数,开发者修改该函数内部代码即可。
250px|700px|reset
(二)云函数内置参数
云函数 会提供三个固定参数,以及若干上下文对象,供开发者使用。
如果想了解具体接口请参考: 云函数开发指南
params
  • 来自 云函数 的入口第一个参数。
  • 主要提供以下能力:
  • 表示 云函数 的调用入参,是由开发者在调用 云函数 时传入。
context 对象
  • 来自 云函数 的入口第二个参数,表示当前应用的上下文。
  • 主要提供以下能力:
  • 用于获取上下文信息,如当前租户信息、当前 Workflow 实例信息等
  • 提供简单易用的数据操作功能
  • 调用全局函数
  • 向aPaas 平台进行文件上传与下载
  • 函数任务创建
  • 消息中心推送消息能力
logger 对象
  • 来自 云函数 的入口第三个参数。
  • 主要提供以下能力:
  • 日志输出能力,开发者可以通过该接口打印日志。日志可以在调试控制台或者「运行日志」-「函数日志」中查看
这里需要注意的是,你当然也可以使用 console 接口进行日志的打印,但使用该方法打印的日志不会保存到「运行日志」中。
kunlun 对象
  • 表示与应用上下文无关的一些工具类函数。开发者可以直接通过 kunlun.xxx 调用。
  • 主要提供以下能力:
  • 提供一些默认的操作符,用于数据查询时使用
  • 提供单独的redis 和 mongodb 能力,可以进行数据读写。注意通过该能力操作的数据,是单独存储供使用的,与用户在对象模型中创建的数据无关。
  • 云函数全局变量的访问
  • 一些工具方法
至此,已经了解了云函数的基本知识,能够正式开发一个云函数了。
下面让我们开始开发吧。
正式开发
下述示例代码中使用/涉及的:
「飞书低代码平台」平台 SDK 能力可参考:云函数开发指南
一)使用NPM包
如前所述,我们已经新增了对 axios 包的依赖:
在本文档“(二)安装 NPM 包”的部分,结尾有说明——“在这个示例中,我们需要用到网络请求的能力,所以这里使用第三方的NPM 包 axios 来帮助我们完成这一工作。”
但若想正式使用 axios,开发者还需要主动在 云函数 中进行引入。以实现 “发送飞书消息卡片” 为例:
250px|700px|reset
主要通过两步实现:
250px|700px|reset
第一步 获取飞书应用鉴权 Token
// 获取飞书应用鉴权 Token
const tenant_access_token = await getFeishuAuth(); // token 将在发送飞书消息卡片时需要,详见飞书接口文档
async function getFeishuAuth() {
const app_id = 'cli_a03d8xxxxxxx',
app_secret = '************************',
try {
const response = await axios({
method: 'post',
url: url,
headers: {
'Content-Type': 'application/json'
},
data: {
"app_id": app_id,
"app_secret": app_secret
}
});
return response.data.tenant_access_token;
}
catch (e) {
return -1;
}
}
第二步 调用飞书相关接口,实现发送飞书消息卡片
// 实现利用飞书接口发送消息(使用时请参考附录完整代码)
const response = await axios({
method: 'post',
url: url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': `Bearer ${tenant_access_token}`
},
data: requestBody
});
(二)完成编写
最终完整的实现代码如下:
// 通过 NPM dependencies 成功安装 NPM 包后此处可引入使用
const axios = require('axios'); //
/**
* @param params 自定义参数
* @param {Context} context 上下文参数,可通过此参数下钻获取上下文变量信息
* @param {Logger} logger 日志记录器
*
* @return 函数的返回数据
*
*/
module.exports = async function (params, context, logger) {
// 日志功能
logger.info(`${new Date()} 函数开始执行`);
// 获取鉴权
const tenant_access_token = await getFeishuAuth();
if (tenant_access_token === -1) {
return { code: -1 };
}
// 发送飞书卡片消息
const requestBody = {
"email": params.borrowerEmail,
"msg_type": "interactive",
"card": {
"config": {
"wide_screen_mode": false
},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**图书馆提醒你该还书啦!**"
}
},
{
"tag": "hr"
},
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": `${params.borrowerName}同学,当前你所借阅的图书《${params.bookName}》距离需归还时间还剩 **${params.remainingDays}** 天,记得要按时归还哟 :)`
}
}
]
}
};
const response = await axios({
method: 'post',
url: url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': `Bearer ${tenant_access_token}`
},
data: requestBody
});
console.log('调用发送飞书卡片消息接口的返回', response.data)
return { code: 0 }
}
// 获取飞书应用鉴权 Token
// 此处需替换为自己的app_id 和 app_secret
// app_id 和 app_secret 需要前往飞书开放平台(https://open.feishu.cn/app?lang=zh-CN)->开发者后台->企业自建应用 ,进入后查看
async function getFeishuAuth() {
const app_id = 'cli_a03d8xxxxxxx', app_secret = '************************', url = 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/';
try {
const response = await axios({
method: 'post',
url: url,
headers: {
'Content-Type': 'application/json'
},
data: {
"app_id": app_id,
"app_secret": app_secret
}
});
return response.data.tenant_access_token;
}
catch (e) {
return -1;
}
}
调试
(一)代码调试
在正式发布代码之前,为了保证代码不会出错,云函数 提供了在线调试能力,包括两种方式:
  • 查看函数运行日志
  • 模拟输入参数
注意:开始调试功能操作的是用户真实的数据,请在开发环境下进行。
点击右下角的「开始调试」,进行第一次代码调试:
250px|700px|reset
等待几秒钟,即可在页面下方的日志「运行结果」处,查看此次函数的运行情况:
250px|700px|reset
在本次示例中,通过「执行结果」,可以发现:调用发送飞书卡片消息接口返回报错
{ code: 10003, msg: 'chat_id or open_id or user_id require' }
这表明:没有传入接收方的身份 id
查询代码发现:这里会直接取参数中的 borrowerEmail 字段,作为接收方的身份标识。
250px|700px|reset
但显然这里没有值,该如何解决?
这就涉及到调试的第二个能力——参数模拟
(二)参数模拟
如上示例,我们需要知道不同参数情况下,函数的执行过程。
云函数 提供的参数模拟能力,允许开发者模拟 云函数 被调用时传入的参数,通过使用模拟参数对 云函数 进行调试。
开发者可以在右侧的调试参数中,编写自己的模拟参数,如下图所示:
250px|700px|reset
在这里,模拟编写了缺少的borrowerEmail borrowerName remainingDays 字段。编写完成后,再一次进行调试。
调试成功,将会在飞书中收到 云函数 发出的一条飞书消息。如下图所示:
250px|700px|reset
至此,已经完成了第一个 云函数 的开发。
下一步,我们将函数正式发布。
部署发布
点击「保存并部署」完成函数的上线流程:
250px|700px|reset
等待几秒后,当函数完成上线,会自动跳转到函数列表页面:
250px|700px|reset
如果状态变成 “已部署” ,说明第一个函数已经完成了开发。
还差最后一步,去相应页面里面调用一下这个函数吧。
调用函数
以某页面的按钮调用函数为例。
在右侧配置面板的「事件」-「点击时」,选择 “执行自定义JS 代码” :
250px|700px|reset
在这里,我们对刚才编写的 云函数 进行调用。
这部分能力如有问题,可以查看 《自定义事件开发指南》
这里传入我们在创建云函数时,绑定的 API 名称 和想要传入的 参数
250px|700px|reset
点击「完成」保存自定义JS代码,然后预览页面,点击按钮:
250px|700px|reset
回到「飞书」即可查看到消息卡片:
250px|700px|reset
至此,一个 云函数 的开发使用步骤全部结束。
了解更多
如何在「流程管理函数节点」「自定义组件」以及「其他云函数」中调用云函数?推荐阅读 《云函数开发指南》《云函数案例合集》
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
快速上手|飞书低代码平台
先进生产力和业务协同平台
联系我们立即试用
联系我们立即试用