飞书与聊天机器人
飞书对聊天机器人(Chatbot)的支持非常全面,在私聊、群聊和外部群,都支持创建机器人和机器人对话。
下文介绍,如何在飞书上,集成一个 BOT。
注册飞书
-
注册为飞书用户,创建组织
https://www.feishu.cn/ -
成为飞书开发者
https://open.feishu.cn/?lang=en-US
创建 APP
申请权限
加入我们要开发 Chatbot, 获得管理组织信息。在 Permissions 相关区域选择对应的权限,这时会提示,要发布这个应用后,才生效。
发布新版本
创建新版本,添加描述,添加 Icon,提交审核。
这时候,是自企业内部使用,自动通过。
激活并配置
登陆企业的飞书后台,查看应用的列表。
https://chatopera.feishu.cn/admin/appCenter/manage
在 App List 中,找到刚刚创建的应用。
设置为激活,对所有员工生效。
从这里可以看到权限列表,稍后我们将使用这些权限。
配置对所有人生效。
获得组织成员信息
在群里增加 BOT,需要 AT/提到 一个成员时,使用 open_id
关联,那么需要先获得所有的成员对应的open_id
, 该过程通过 飞书开发者 API实现,并且分成两个步骤。
获得 access token
在 App 首页得到 AppId 和 AppSecret。
使用 API 获得 Acess Token,以下给出 bash 脚本。
#! /bin/bash
###########################################
# Fetch token for Feishu APP
# First install jq
# curl -sS https://webinstall.dev/jq | bash
###########################################
# constants
baseDir=$(cd `dirname "$0"`;pwd)
# functions
function get_token(){
FEISHU_RESP=`curl --location --request POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/' \
--header 'Content-Type: application/json' \
--data-raw '{"app_id": "'$1'","app_secret": "'$2'"}'`
FEISHU_ACCESS_TOKEN=`echo $FEISHU_RESP | jq -r '.tenant_access_token'`
echo $FEISHU_ACCESS_TOKEN > /tmp/feishu.token.$1
echo "Saved token in" /tmp/feishu.token.$1
}
# main
[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return
cd $baseDir/..
source .env
get_token $FEISHU_APP_ID $FEISHU_APP_SECRET
运行结果,token 存储在 /tmp/feishu.token.xx 中。
获得用户的 open_id
curl --location --request GET 'https://open.feishu.cn/open-apis/user/v1/batch_get_id?emails=foo@chatopera.com&emails=bar@chatopera.com' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer TOKEN'
将 emails 替换为 您的用户的邮箱,将 TOKEN 替换为上一步得到的 access token。
结果
{
"code": 0,
"msg": "success",
"data": {
"email_users": {
"foo@chatopera.com": [
{
"open_id": "ouxx",
"user_id": "xxx"
}
]
},
"emails_not_exist": []
}
}
创建 BOT
这时,在飞书的一个群里,创建一个 BOT,获得 BOT 的 Webhook 地址。
假如 webhook 地址是 https://open.feishu.cn/open-apis/bot/v2/hook/xxx
。
推送纯文本消息
curl --location --request POST 'https://open.feishu.cn/open-apis/bot/v2/hook/xxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"msg_type": "text",
"content": {
"text": "New Updates",
"title": "Hello"
}
} '
注意,此处不需要使用 accessToken。
推送富文本消息
curl --location --request POST 'https://open.feishu.cn/open-apis/bot/v2/hook/036f14cf-8408-49b3-bd57-41f2a63f3252' \
--header 'Content-Type: application/json' \
--data-raw '{
"msg_type": "post",
"content": {
"post": {
"zh_cn": {
"title": "Project Updates",
"content": [
[
{
"tag": "text",
"text": "You have a new update: "
},
{
"tag": "a",
"text": "hello",
"href": "http://www.example.com/"
},
{
"tag": "at",
"user_id": "ou_d7e2e4a241027xxx"
}
]
]
}
}
}
} '
注意:
1)使用 tag 定制消息内容,a
代表超链接,at
代表 @
,text
代表文本,参考 Send post message
- 消息中,@ 一个成员,使用
at
,user_id
就是之前已经获得的open_id
发布给所有飞书用户
申请成为飞书 ISV。
https://open.feishu.cn/isv
参考文档
Obtain tenant_access_token (custom apps)
转载:https://blog.csdn.net/watson243671/article/details/111935461