【NLP开发】Python实现聊天机器人(微信机器人)

🍺NLP开发系列相关文章编写如下🍺:
1 🎈【小沐学NLP】Python实现词云图🎈
2 🎈【小沐学NLP】Python实现图片文字识别🎈
3 🎈【小沐学NLP】Python实现中文、英文分词🎈
4 🎈【小沐学NLP】Python实现聊天机器人(ELIZA))🎈
5 🎈【小沐学NLP】Python实现聊天机器人(ALICE)🎈
6 🎈【小沐学NLP】Python实现聊天机器人(微软Azure)🎈
7 🎈【小沐学NLP】Python实现聊天机器人(微软小冰)🎈
8 🎈【小沐学NLP】Python实现聊天机器人(钉钉机器人)🎈
9 🎈【小沐学NLP】Python实现聊天机器人(微信机器人)🎈
10 🎈【小沐学NLP】Python实现聊天机器人(Selenium、七嘴八舌)🎈
11 🎈【小沐学NLP】Python实现聊天机器人(若干在线聊天机器人)🎈
12 🎈【小沐学NLP】Python实现聊天机器人(ChatterBot,代码示例)🎈
13 🎈【小沐学NLP】Python实现聊天机器人(ChatterBot,集成前端页面)🎈
14 🎈【小沐学NLP】Python实现聊天机器人(ChatterBot,集成web服务)🎈

文章目录

  • 1、简介
  • 2、机器人配置
    • [2.1 群机器人添加入口](#2.1 群机器人添加入口)
    • [2.2 移除群机器人入口](#2.2 移除群机器人入口)
    • [2.3 发布机器人到公司](#2.3 发布机器人到公司)
    • [2.4 添加/创建群机器人条件](#2.4 添加/创建群机器人条件)
    • [2.5 群机器人Webhook地址](#2.5 群机器人Webhook地址)
    • [2.6 群机器人发送消息](#2.6 群机器人发送消息)
    • [2.7 如何停用机器人](#2.7 如何停用机器人)
  • 3、机器人代码测试
    • [3.1 配置curl](#3.1 配置curl)
    • [3.2 消息类型及数据格式](#3.2 消息类型及数据格式)
      • [3.2.1 文本类型](#3.2.1 文本类型)
      • [3.2.2 markdown类型](#3.2.2 markdown类型)
      • [3.2.3 图片类型](#3.2.3 图片类型)
      • [3.2.4 图文类型](#3.2.4 图文类型)
      • [3.2.5 语音类型](#3.2.5 语音类型)
    • [3.3 消息发送代码](#3.3 消息发送代码)
      • [3.3.1 代码一](#3.3.1 代码一)
      • [3.3.2 代码二](#3.3.2 代码二)
  • 结语

1、简介

https://open.work.weixin.qq.com/help2/pc/14931?person_id=1&is_tencent=

https://hiflow.tencent.com/document/applications/wwx-robot/#第一步-打开机器人接收消息配置页

通过接口实现在企业微信群里发送告警或提醒类的消息通知。

通过定时触发器,可以非常简单快速地建立一个企业微信机器人。我们可以用它来实现喝水、吃饭提醒等小功能,还能实现定时推送新闻、天气,甚至是监控告警的小功能。

通过腾讯云HiFlow场景连接器,可以零代码的设置企业微信机器人自动/定时发消息的规则,比如:每周五下午6点定时发送周报;收到新的销售线索/报表自动发送消息通知管理群等。

  • 发送群图文消息:发送图片+文本标题的消息样式到企业微信群,支持给图片设置跳转链接
  • 发送富文本消息:发送富文本消息到企业微信群,可以给文本添加样式,比如加粗、更改颜色、加超链接等
  • 发送文本消息:发送纯文本消息到企业微信群,并且可以@提醒指定用户

2、机器人配置

2.1 群机器人添加入口

  • 1、【电脑端内部群聊->右上方三个点->添加群机器人】,可以新建机器人或选择已发布到公司的机器人。
  • 2、【手机端内部群聊->右上角三个点->添加群机器人】

2.2 移除群机器人入口

【电脑端内部群聊->群成员->点击群机器人鼠标右键->移除机器人】

【手机端内部群聊->右上角三个点->群机器人->点击对应的机器人->右上角三个点->移除】

2.3 发布机器人到公司

在群聊选择需要发布的【机器人->鼠标右键"查看资料"->发布到公司】

2.4 添加/创建群机器人条件

1、目前内部群聊支持机器人,外部群暂不支持。(若内部群开启了"仅群主管理",则成员无添加机器人入口)

2、管理员在管理后台未限制创建机器人,或在白名单内的成员,支持创建机器人。

2.5 群机器人Webhook地址

群机器人的创建人,可在查看机器人信息时,获取对应机器人的Webhook URL。

手机端可【进入群聊->右上角三个点->群机器人->点击对应机器人->Webhook地址】

电脑端可【进入群聊->群成员列表->右键对应机器人->查看资料->Webhook地址】

2.6 群机器人发送消息

1、目前暂不支持设置消息回调配置。支持设置机器人主动推送。

2、群聊可添加的机器人数量暂无上限。

3、Win端和手机端中的群机器人推送的消息气泡背景色为灰色,v3.1.6开始,Mac端中群机器人的消息气泡背景色为白色。

4、机器人发消息的频率:每个机器人发送的消息不能超过20条/分钟。

5、目前机器人支持推送文本消息、markdown格式、图片类型、文件类型、图文类型的消息。

注:文件大小在5B~20M之间;图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068 × 455,小图150 × 150;图片(base64编码前)最大不能超过2M,支持JPG,PNG格式。

2.7 如何停用机器人

超级管理员支持在【管理后台->应用管理->自建->机器人】中停用/启用机器人应用和停用/启用机器人。

3、机器人代码测试

https://developer.work.weixin.qq.com/document/path/91770

在终端某个群组添加机器人之后,创建者可以在机器人详情页看到该机器人特有的webhookurl。开发者可以按以下说明向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.

假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
注意要将url替换成你的机器人webhook地址,content必须是utf8编码.

bash 复制代码
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \
   -H 'Content-Type: application/json' \
   -d '
   {
    	"msgtype": "text",
    	"text": {
        	"content": "hello world"
    	}
   }'
bash 复制代码
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx" -H "Content-Type:application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"今天. 06/01:晴. 19~33°.\"}}"

3.1 配置curl

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

https://curl.se/windows/

  • 查看curl版本

3.2 消息类型及数据格式

当前自定义机器人支持文本(text)、markdown(markdown)、图片(image)、图文(news)、文件(file)、语音(voice)、模板卡片(template_card)七种消息类型。

3.2.1 文本类型

xml 复制代码
{
    "msgtype": "text",
    "text": {
        "content": "广州今日天气:29度,大部分多云,降雨概率:60%",
		"mentioned_list":["wangqing","@all"],
		"mentioned_mobile_list":["13800001111","@all"]
    }
}

3.2.2 markdown类型

cpp 复制代码
{
    "msgtype": "markdown",
    "markdown": {
        "content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n
         >类型:<font color=\"comment\">用户反馈</font>
         >普通用户反馈:<font color=\"comment\">117例</font>
         >VIP用户反馈:<font color=\"comment\">15例</font>"
    }
}

3.2.3 图片类型

cpp 复制代码
{
    "msgtype": "image",
    "image": {
        "base64": "DATA",
		"md5": "MD5"
    }
}

3.2.4 图文类型

cpp 复制代码
{
    "msgtype": "news",
    "news": {
       "articles" : [
           {
               "title" : "中秋节礼品领取",
               "description" : "今年中秋节公司有豪礼相送",
               "url" : "www.qq.com",
               "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
           }
        ]
    }
}

3.2.5 语音类型

cpp 复制代码
{
	"msgtype": "voice",
	"voice": {
		"media_id": "MEDIA_ID"
	}
}

3.3 消息发送代码

3.3.1 代码一

python 复制代码
"""
企业微信
-*- coding: utf-8 -*-
    @Author  : xxxxxxx
    @File    : WechatWebHook.py
"""

import requests


class WechatWebHook:
    """企业微信消息推送"""

    @classmethod
    def push_error_msg(cls, msg: str) -> None:
        webhook_uri = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxx"
        """错误日志直接推送至企业微信"""
        data = {
            "msgtype": "text",
            "text": {
                "content": msg,
                "mentioned_mobile_list": ["13800000001"]
            }
        }

        requests.post(url=webhook_uri, headers={"Content-Type": "text/plain"}, json=data)


if __name__ == '__main__':
    WechatWebHook.push_error_msg("当前气温18摄氏度,未来2小时不会下雨,出门佩戴口罩。")

3.3.2 代码二

bash 复制代码
curl '企业微信机器人地址' \
   -H 'Content-Type: application/json' \
   -d '
   {
        "msgtype": "text",
        "text": {
            "content": "hello world"
        }
   }'
python 复制代码
import os
import json
import urllib.request

def main_handler(event, context):
    url = os.environ.get("url")
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": "hello world",
        }
    }
    data = json.dumps(data).encode("utf-8")
    req_attr = urllib.request.Request(url, data)
    resp_attr = urllib.request.urlopen(req_attr)
    return resp_attr.read().decode("utf-8")

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

相关推荐
小二·11 分钟前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic34 分钟前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā34 分钟前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
小喵要摸鱼2 小时前
Python 神经网络项目常用语法
python
沉默璇年2 小时前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder2 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_882727572 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
SoaringHeart2 小时前
Flutter进阶:基于 MLKit 的 OCR 文字识别
前端·flutter
会发光的猪。3 小时前
css使用弹性盒,让每个子元素平均等分父元素的4/1大小
前端·javascript·vue.js
一念之坤3 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python