飛書開(kāi)發(fā)學(xué)習(xí)筆記(七)-添加機(jī)器人及發(fā)送webhook消息
一.添加飛書機(jī)器人
1.1 添加飛書機(jī)器人過(guò)程
在群的右上角點(diǎn)擊折疊按鍵…選擇 設(shè)置
群機(jī)器人中選擇 添加機(jī)器人
選擇自定義機(jī)器人,通過(guò)webhook發(fā)送消息
彈出的信息中有webhook地址,選擇復(fù)制。
安全設(shè)置后續(xù)可以設(shè)置,比如將信任的IP地址加入IP白名單。
選擇僅群主和添加者可以編輯移除機(jī)器人。
至此,群機(jī)器人添加成功。
1.2 利用webhook使用群機(jī)器人發(fā)送消息
機(jī)器人概述:機(jī)器人概述
發(fā)送復(fù)雜信息可使用消息卡片,在后續(xù)有詳細(xì)說(shuō)明,此處只發(fā)送簡(jiǎn)單信息。
簡(jiǎn)單信息格式
{"msg_type":"text","content":{"text":"request example"}}
windows使用cmd命令行發(fā)送:
curl -X POST -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"request example\"}}" https://open.feishu.cn/open-apis/bot/v2/hook/XXXXXXXXXXXXX
報(bào)錯(cuò)了,因此先要安裝curl
下載curl,下載地址 https://curl.se/download.html
安裝好以后,切換到curl命令目錄 重新運(yùn)行
curl -X POST -H "Content-Type: application/json" -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"request example\"}}" https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxx
群里收到了機(jī)器人發(fā)來(lái)的消息
這只是簡(jiǎn)單信息,如果復(fù)雜一點(diǎn),則需使用消息卡片搭建工具發(fā)送卡片信息。
1.3 python發(fā)送webhook消息
- 簡(jiǎn)單格式,只有文本
{"msg_type":"text","content":{"text":"測(cè)試簡(jiǎn)單信息"}}
- 富文本格式,支持
{
"msg_type": "post",
"content": {
"post": {
"zh_cn": {
"title": "富文本信息",
"content": [
[{ "tag": "text", "text": "富文本信息: "},
{ "tag": "a", "text": "請(qǐng)查看","href": "http://www.example.com/"},
{"tag": "at","user_id": "ou_18eac8********17ad4f02e8bbbb"}]
]
}
}
}
}
寫個(gè)簡(jiǎn)單的Python程序也可以發(fā)送webhook消息,注意消息是要json編碼的
import requests
import json
msg = {
"msg_type": "text",
"content": {"text": "你好"}
}
webhook_url=" https://open.feishu.cn/open-apis/bot/v2/hook/XXXX"
headers = {
"Content-type": "application/json",
"charset":"utf-8"
}
msg_encode=json.dumps(msg,ensure_ascii=True).encode("utf-8")
reponse=requests.post(url=webhook_url,data=msg_encode,headers=headers)
print(reponse)
發(fā)送效果:
簡(jiǎn)單信息
富文本信息
1.3 安全設(shè)置
安全設(shè)置中有三個(gè)選項(xiàng)。
如果勾選自定義關(guān)鍵詞,最多可以同時(shí)設(shè)置 10 個(gè)關(guān)鍵詞,多個(gè)關(guān)鍵詞之間使用回車鍵間隔。設(shè)置后,只有包含至少一個(gè)關(guān)鍵詞的消息才會(huì)被成功發(fā)送。
例如,關(guān)鍵詞設(shè)置了“應(yīng)用報(bào)警”與“項(xiàng)目更新”,則請(qǐng)求 webhook 的信息中至少需要包含“應(yīng)用報(bào)警”或“項(xiàng)目更新”其中一個(gè)關(guān)鍵詞。
如果勾選設(shè)置 IP 白名單,支持添加 IP 地址或地址段,最多可設(shè)置 10 個(gè),使用回車鍵間隔。支持段輸入,例如 123.12.1.* 或 123.1.1.1/24。設(shè)置后,機(jī)器人 webhook 地址只處理來(lái)自 IP 白名單范圍內(nèi)的請(qǐng)求。
如果勾選 簽名校驗(yàn),則系統(tǒng)會(huì)提供一個(gè)密鑰,需要利用python等程序制作一個(gè)加密算法,生成加密后字符串。
所校驗(yàn)的簽名需要通過(guò)時(shí)間戳與秘鑰進(jìn)行算法加密,即將timestamp + “\n” + 密鑰當(dāng)做簽名字符串,使用 HmacSHA256 算法計(jì)算簽名,再進(jìn)行 Base64 編碼。其中,timestamp是指距當(dāng)前時(shí)間不超過(guò) 1 小時(shí)(3600 秒)的時(shí)間戳,時(shí)間單位:s。例如,1599360473。
python的加密算法,返回sign即為加密后消息
import hashlib
import base64
import hmac
def gen_sign(timestamp, secret):
# 拼接timestamp和secret
string_to_sign = '{}\n{}'.format(timestamp, secret)
hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
# 對(duì)結(jié)果進(jìn)行base64處理
sign = base64.b64encode(hmac_code).decode('utf-8')
return sign
二.消息卡片搭建工具
2.1 了解消息卡片搭建工具
消息卡片搭建工具
是飛書的卡片消息格式制作工具,即自定義的消息模板,可以為飛書開(kāi)發(fā)提供豐富的消息格式。
以下為示例格式:
2.2 卡片的超文本格式定義##
elements為卡片的內(nèi)容:
1.第一部分卡片文字, tag為markdown,內(nèi)容Content中,文字常用的格式如下(MarkDown格式)
- 加粗
**張三**
張三 - 斜體
*斜體*
斜體 - 斜體加粗
***張三***
張三 - 刪除
~~張三~~
張三 - 顏色
<font color=red> 張三<font>
張三 - 鏈接
[張三](https://www.feishu.cn)
張三
- 第二部分為圖片,alt為圖片提示,migkey為圖片索引,定位到拖動(dòng)上傳的圖片
- 第三部分為按鈕,在actions中定義了按鈕文字content,以及按鈕類型primary以及跳轉(zhuǎn)地址url
- 第四部分為標(biāo)題header,定義了卡片標(biāo)題title和模板template
{
"config": {
"wide_screen_mode": true
},
"elements": [
{
"tag": "markdown",
"content": "請(qǐng)單件文檔查看昨天討論的方案相關(guān)飛書文檔,注意作者為 <font color=red> **張三** <font> 版本為 \n*002* ,版本 ~~001~~ 已經(jīng)刪除。文件地址是 [https://www.feishu.cn](https://www.feishu.cn),打開(kāi)次數(shù):${doc_read_num}次""
},
{
"alt": {
"content": "圖片",
"tag": "plain_text"
},
"img_key": "img_v3_025c41g",
"tag": "img"
},
{
"tag": "action",
"actions": [
{
"tag": "button",
"text": {
"tag": "plain_text",
"content": "打開(kāi)文檔鏈接"
},
"type": "primary",
"url": "https://nio.feishu.cn/docx/UM8c1oNxnkh"
}
]
}
],
"header": {
"template": "blue",
"title": {
"content": "查看討論的飛書文檔",
"tag": "plain_text"
}
}
}
定義完成以后,可以利用"向我發(fā)送預(yù)覽",查看效果。
開(kāi)發(fā)者小助手會(huì)將消息推送給作者。
2.3 利用Python程序發(fā)送webhook卡片
這里的卡片必須按照下列格式才能用webhook發(fā)送。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-752550.html
{
"msg_type": "interactive",
"card": {
"elements": [{
"tag": "div",
"text": {
"content": "**西湖**,位于浙江省杭州市西湖區(qū)龍井路1號(hào),杭州市區(qū)西部,景區(qū)總面積49平方千米,匯水面積為21.22平方千米,湖面面積為6.38平方千米。",
"tag": "lark_md"
}
}, {
"actions": [{
"tag": "button",
"text": {
"content": "更多景點(diǎn)介紹 :玫瑰:",
"tag": "lark_md"
},
"url": "https://www.example.com",
"type": "default",
"value": {}
}],
"tag": "action"
}],
"header": {
"title": {
"content": "今日旅游推薦",
"tag": "plain_text"
}
}
}
}
再次調(diào)用上面的Python程序,將msg改為卡片內(nèi)容發(fā)送:
得到卡片消息效果:
以上,利用python通過(guò)機(jī)器人發(fā)送webhook消息就完成了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-752550.html
到了這里,關(guān)于飛書開(kāi)發(fā)學(xué)習(xí)筆記(七)-添加機(jī)器人及發(fā)送webhook消息的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!