吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2764|回复: 4
收起左侧

[Python 转载] 利用阿里云函数给腾讯兔小巢增加实时通知功能

[复制链接]
sikro 发表于 2020-11-23 21:43
腾讯兔小巢是一款方便而且免费的反馈系统,而且开发团队很活跃一直在更新功能,但唯独一直没提供实时通知功能,于是自己用云函数写了一个。
可以支持主贴发布,主贴更新,回复发布,回复更新4种类型的通知推送。并且同步记录日志到日志库中方便检索

推送效果:
微信图片_20201123213218.jpg

使用方法:
  • 在阿里云函数里增加一个http函数:运行环境选择python3,函数名称和触发器名称随便写,认证方式选择 anonymous,请求方式选择post
  • 进入函数配置,增加2个环境变量:hook_url填写企业微信或钉钉机器人的webhook地址,product_id填写兔小巢的产品id
  • 下载本仓库的代码并上传到云函数中
  • 在自定义域名中增加一个域名路径,并填写到兔小巢的新反馈实时通知中。
  • all done , enjoy it .

代码:

[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
import logging,json,urllib,requests,os
webhook = os.environ.get('hook_url')
product_id =  os.environ.get('product_id')

def log(context): #写日志
    logger = logging.getLogger()
    logger.info(context)
    return context

def send(content,url): #发送信息
    headers = {'Content-Type': 'application/json'}    
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": content,
        }
    }
    r = requests.post(url, headers=headers, json=data)
    return r.content


def handler(environ, start_response):
    #获取回调内容
    try:        
        request_body_size = int(environ.get('CONTENT_LENGTH', 0))    
    except (ValueError):        
        request_body_size = 0   
    request_body = environ['wsgi.input'].read(request_body_size)
    param = json.loads(request_body.decode('utf8'))
    #设定通知变量
    action = param['type']
    content = param['payload']
    tid = param['id']    
    if "post" in action:
        post_user = content['post']['nick_name']
        post_content=content['post']['content']
        post_url=content['post']['post_url']
        post_extra = content['post'].get('extra')
        extra_content="\n"
        if len(post_extra) > 0:
            for k,v in post_extra.items():
                extra_content+=">"+str(k)+":"+str(v)+"\n"
        text="**"+action.replace('post', '主贴').replace('created', '创建').replace('updated', '更新')+"**\n\n["+post_user+":"+post_content+"]("+post_url+")"+extra_content

    if "reply" in action:
        reply_user = content['reply']['nick_name']
        reply_content=content['reply']['content']
        reply_url="https://support.qq.com/products/"+str(product_id)+"/post/"+str(content['reply']['f_title_id'])
        text="**"+action.replace('reply', '回复').replace('created', '创建').replace('updated', '更新')+"**\n\n["+reply_user+":"+reply_content+"]("+reply_url+")"
    #记录日志
    log(text.replace('\n', '').replace('\r', ''))
    #发送信息
    response_body=send(text,webhook)
    #响应回调
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return [str(response_body).encode('UTF-8')]



代码仓库地址: sikros/txc-webhook (github.com)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

aa6592596 发表于 2020-11-23 21:58
真不错,每天固定时间等微信反馈 太折腾了
huangxiaolin520 发表于 2020-11-23 21:59
下载本仓库的代码并上传到云函数中,,会不会上传失败呢
 楼主| sikro 发表于 2020-11-23 22:04
huangxiaolin520 发表于 2020-11-23 21:59
下载本仓库的代码并上传到云函数中,,会不会上传失败呢

直接复制代码贴过去也可以
一抹蓝 发表于 2020-11-23 22:06
这个功能真不错
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表