如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、魚峰網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為魚峰等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
在日常工作學(xué)習(xí)生活中,我們可能會(huì)遇到以下情形:
自己管理的某臺(tái)服務(wù)器宕機(jī)了,但是沒(méi)有得到及時(shí)的提醒,導(dǎo)致業(yè)務(wù)受到損失
某些自己很想注冊(cè)的網(wǎng)站悄悄開放注冊(cè),但是自己并沒(méi)有及時(shí)得知,于是只能繼續(xù)漫無(wú)目的的等待
……
如果每件事都花時(shí)間去關(guān)注,那我們的時(shí)間必然會(huì)不夠用,那有沒(méi)有什么辦法可以讓這些消息集中起來(lái)并且及時(shí)推送呢?在這里我想向大家推薦一個(gè)解決方案,那就是使用 Serverless + 飛書打造屬于自己的個(gè)性化消息提醒系統(tǒng)。
首先注冊(cè)一個(gè)飛書賬號(hào),然后在飛書網(wǎng)頁(yè)版登錄
打開飛書開放平臺(tái),點(diǎn)擊創(chuàng)建企業(yè)自建應(yīng)用,并輸入應(yīng)用名稱和應(yīng)用副標(biāo)題,然后點(diǎn)擊確定創(chuàng)建
在企業(yè)自建應(yīng)用列表中點(diǎn)擊剛剛創(chuàng)建成功的應(yīng)用,并記錄 App ID和 App Secret
在本地新建一個(gè)項(xiàng)目目錄,名稱隨意,這里以 feishu-notify
為例
分別創(chuàng)建 3 個(gè)文件:.env
,index.py
和 serverless.yml
按如下說(shuō)明進(jìn)行編碼
TENCENT_SECRET_ID=AKID******************************** TENCENT_SECRET_KEY=********************************
注:這里的
TENCENT_SECRET_ID
和TENCENT_SECRET_KEY
可在騰訊云控制臺(tái)的訪問(wèn)密鑰中獲取,如果沒(méi)有密鑰則需要自己新建一個(gè)
myFunction: component: "@serverless/tencent-scf" inputs: name: feishu-notify-py codeUri: "./" handler: index.main_handler runtime: Python3.6 region: ap-guangzhou description: My Serverless Function Used to Notify Myself memorySize: 128 events: - apigw: name: serverless parameters: protocols: - https endpoints: - path: "/" method: POST
注:可以點(diǎn)擊這里查看
serverless.yml
中所有可用屬性的屬性列表
def main_handler(event, context): import requests import json print(event) CONFIG = { "app_id": "********************", "app_secret": "********************************" } # my auth if 'myauth' not in event['queryString'] or event['queryString']['myauth'] != 'feishu1': return 'forbidden' # Get content postContent = event['body'] try: postContent = json.loads(postContent) except: return 'error in json_loads(line: 19)' if 'content' not in postContent: return 'invalid params' content = postContent['content'] # Get tenant_access_token try: res = requests.post('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/', { "app_id": CONFIG['app_id'], "app_secret": CONFIG['app_secret'] }) except: return 'error in get_tenant_access_token' data = json.loads(res.text) if data['code'] != 0: return data['msg'] token = data['tenant_access_token'] # Get chat_id try: res = requests.get('https://open.feishu.cn/open-apis/chat/v4/list', headers={ 'Authorization': 'Bearer %s' % (token) }) except: return 'error in get_chat_id' data = json.loads(res.text) if data['code'] != 0: return data['msg'] groupList = data['data']['groups'] myGroupId = groupList[0]['chat_id'] # Send message try: res = requests.post('https://open.feishu.cn/open-apis/message/v4/send/', json={ "chat_id": myGroupId, "msg_type": "text", "content": { "text": content } }, headers={ 'Authorization': 'Bearer %s' % (token), 'Content-Type': 'application/json' }) except: return 'error in send message' data = json.loads(res.text) if data['code'] != 0: return data['msg'] return 'success'
關(guān)于 index.py
,這里有幾點(diǎn)需要作出說(shuō)明:
代碼中的 app_id
和 app_secret
項(xiàng)需填寫在準(zhǔn)備工作記錄的 App ID和 App Secret
最終我們使用 POST
方法發(fā)送消息
在調(diào)用時(shí),我們還需要在 query
處加上 ?myauth=feishu1
,目的是作簡(jiǎn)單驗(yàn)證以防止他人發(fā)送,例如 https://service-********-**********.**.apigw.tencentcs.com/release/?myauth=feishu1
通過(guò) npm 安裝 Serverless
$ npm install -g serverless
通過(guò)serverless
命令進(jìn)行部署,并添加--debug
參數(shù)查看部署過(guò)程中的信息
$ serverless --debug
從終端獲取 API 網(wǎng)關(guān)的 URL
獲取 API 網(wǎng)關(guān)的 URL
回到飛書開放平臺(tái),在企業(yè)自建應(yīng)用列表中點(diǎn)擊剛剛創(chuàng)建成功的應(yīng)用
點(diǎn)擊應(yīng)用功能-機(jī)器人,點(diǎn)擊啟用機(jī)器人
點(diǎn)擊版本管理與發(fā)布-創(chuàng)建版本,參考下圖進(jìn)行配置(先不要點(diǎn)保存)
在可用性狀態(tài)處點(diǎn)擊編輯,選擇所有員工,然后點(diǎn)擊保存
點(diǎn)擊申請(qǐng)發(fā)布
點(diǎn)擊飛書網(wǎng)頁(yè)版的頭像,進(jìn)入飛書管理后臺(tái)
點(diǎn)擊工作臺(tái)-應(yīng)用審核,然后點(diǎn)擊審核
點(diǎn)擊通過(guò)
請(qǐng)求方式:POST
請(qǐng)求地址:上面獲取的 APIGateway 的 URL
請(qǐng)求 Header:
參數(shù) | 類型 | 必填/選填 | 說(shuō)明 | 默認(rèn)值 | 實(shí)例 |
---|---|---|---|---|---|
Content-Type | string | 必填 | Content-Type | application/json |
請(qǐng)求 Query:
參數(shù) | 類型 | 必填/選填 | 說(shuō)明 | 默認(rèn)值 | 實(shí)例 |
---|---|---|---|---|---|
myauth | string | 必填 | 簡(jiǎn)單驗(yàn)證 | feishu1 |
請(qǐng)求 Body:
{ "content": "這里填入你想要發(fā)送的信息" }
為了方便,這里使用 Chrome 瀏覽器插件 Talend API Tester進(jìn)行調(diào)用
可以看到,飛書的消息推送很及時(shí)
其實(shí)利用飛書能實(shí)現(xiàn)的并不只有這些而已,我相信聰明的你一定能開發(fā)出更加好玩的應(yīng)用。
看完上述內(nèi)容,你們掌握如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!