溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng)

發(fā)布時(shí)間:2021-10-12 11:56:52 來源:億速云 閱讀:137 作者:柒染 欄目:云計(jì)算

如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng),相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

一、前言

在日常工作學(xué)習(xí)生活中,我們可能會(huì)遇到以下情形:

  • 自己管理的某臺(tái)服務(wù)器宕機(jī)了,但是沒有得到及時(shí)的提醒,導(dǎo)致業(yè)務(wù)受到損失

  • 某些自己很想注冊的網(wǎng)站悄悄開放注冊,但是自己并沒有及時(shí)得知,于是只能繼續(xù)漫無目的的等待

  • ……

如果每件事都花時(shí)間去關(guān)注,那我們的時(shí)間必然會(huì)不夠用,那有沒有什么辦法可以讓這些消息集中起來并且及時(shí)推送呢?在這里我想向大家推薦一個(gè)解決方案,那就是使用 Serverless + 飛書打造屬于自己的個(gè)性化消息提醒系統(tǒng)。

二、準(zhǔn)備工作

  1. 首先注冊一個(gè)飛書賬號(hào),然后在飛書網(wǎng)頁版登錄

  2. 打開飛書開放平臺(tái),點(diǎn)擊創(chuàng)建企業(yè)自建應(yīng)用,并輸入應(yīng)用名稱應(yīng)用副標(biāo)題,然后點(diǎn)擊確定創(chuàng)建

  3. 在企業(yè)自建應(yīng)用列表中點(diǎn)擊剛剛創(chuàng)建成功的應(yīng)用,并記錄 App IDApp Secret


二、編寫代碼

  1. 在本地新建一個(gè)項(xiàng)目目錄,名稱隨意,這里以 feishu-notify 為例

  2. 分別創(chuàng)建 3 個(gè)文件:.env,index.pyserverless.yml

  3. 按如下說明進(jìn)行編碼

.env

TENCENT_SECRET_ID=AKID********************************
TENCENT_SECRET_KEY=********************************

注:這里的 TENCENT_SECRET_IDTENCENT_SECRET_KEY 可在騰訊云控制臺(tái)的訪問密鑰中獲取,如果沒有密鑰則需要自己新建一個(gè)

serverless.yml

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中所有可用屬性的屬性列表

index.py

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)需要作出說明:

  1. 代碼中的 app_idapp_secret 項(xiàng)需填寫在準(zhǔn)備工作記錄的 App IDApp Secret

  2. 最終我們使用 POST 方法發(fā)送消息

  3. 在調(diào)用時(shí),我們還需要在 query 處加上 ?myauth=feishu1,目的是作簡單驗(yàn)證以防止他人發(fā)送,例如 https://service-********-**********.**.apigw.tencentcs.com/release/?myauth=feishu1

三、部署 Serverless 服務(wù)

  1. 通過 npm 安裝 Serverless

$ npm install -g serverless
  1. 通過serverless命令進(jìn)行部署,并添加--debug參數(shù)查看部署過程中的信息

$ serverless --debug
  1. 從終端獲取 API 網(wǎng)關(guān)的 URL

獲取 API 網(wǎng)關(guān)的 URL

四、上線應(yīng)用

  1. 回到飛書開放平臺(tái),在企業(yè)自建應(yīng)用列表中點(diǎn)擊剛剛創(chuàng)建成功的應(yīng)用

  2. 點(diǎn)擊應(yīng)用功能-機(jī)器人,點(diǎn)擊啟用機(jī)器人

  3. 點(diǎn)擊版本管理與發(fā)布-創(chuàng)建版本,參考下圖進(jìn)行配置(先不要點(diǎn)保存)

  4. 可用性狀態(tài)處點(diǎn)擊編輯,選擇所有員工,然后點(diǎn)擊保存

  5. 點(diǎn)擊申請發(fā)布

  6. 點(diǎn)擊飛書網(wǎng)頁版的頭像,進(jìn)入飛書管理后臺(tái)

  7. 點(diǎn)擊工作臺(tái)-應(yīng)用審核,然后點(diǎn)擊審核

  8. 點(diǎn)擊通過

五、調(diào)用接口

請求方式: POST

請求地址: 上面獲取的 APIGateway 的 URL

請求 Header:

參數(shù)類型必填/選填說明默認(rèn)值實(shí)例
Content-Typestring必填Content-Type
application/json

請求 Query:

參數(shù)類型必填/選填說明默認(rèn)值實(shí)例
myauthstring必填簡單驗(yàn)證
feishu1

請求 Body:

{
    "content": "這里填入你想要發(fā)送的信息"
}

六、效果

為了方便,這里使用 Chrome 瀏覽器插件 Talend API Tester 進(jìn)行調(diào)用

如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng)

可以看到,飛書的消息推送很及時(shí)

如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng)

其實(shí)利用飛書能實(shí)現(xiàn)的并不只有這些而已,我相信聰明的你一定能開發(fā)出更加好玩的應(yīng)用。

看完上述內(nèi)容,你們掌握如何使用Serverless+飛書打造你的個(gè)性化消息提醒系統(tǒng)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI