跳到主要内容

微信公众号机器人

前言

看官方文档看得云里雾里,慢慢摸索终于大概搞出来了,记录一下帮助更多人吧。

申请配置机器人

网址:https://chatbot.weixin.qq.com/

微信扫码登录后长这样

image-20230228104128045

把预置技能全部打开

image-20230228104158953

绑定公众号

image-20230228104210706

然后点下面的“上线发布”,就可以去公众号测试效果了,基础版就好了。

image-20230228104347293

调用第三方接口

上面都是官方提供的接口,图一乐罢了,有时候需要和咱们自己的第三方接口进行交互,平台也是提供了对应方法的。

这里以下发子域名扫描任务为例

这一步可以忽略,后面发现用内置字典sys.用户问法可以给内容智能提取出来,不需要自己再写

先创建一个词典(卡槽)来提取我们的目标

  1. 自带的 网址词典 无法使用,用他提供的例子也无法使用,所以只能自己创建一个词典,来对目标进行加白。
  2. 词典的正则表达式疑似失效无法使用,官方关于正则表达式的几篇文档,我研究测试过都不能生效,后面怀疑可能是该正则表达式只对该词典内部的关键词生效。
    1. https://developers.weixin.qq.com/doc/aispeech/platform/dictreg.html
    2. https://developers.weixin.qq.com/community/develop/article/doc/000e88462080a05e9f3a0776956c13
    3. https://developers.weixin.qq.com/community/minihome/doc/00062abd654cf0fe6b5f8511d56400

基础配置测试

创建一个高阶技能

image-20230228104722969

然后新建意图,语义槽就是自己想拿到的用户输入的关键内容;{目标}就是语义槽,对应的词典是sys.用户问法

(资产梳理)({目标})
(对|)&&({目标})&&(进行|)&&(开始|)&&(资产梳理)

image-20230228154802758

这个时候我们先不接入第三方接口,先试试是不是能提取到用户输入的内容,如下机器人直接回复提取出的内容

image-20230228153805246

保存配置,然后调试

image-20230228154732573

可见会把.直接去除,比如abc.com就变成了abccom,所以这里需要用户提交

abc`com

然后再进行二次处理。

对接第三方接口

先用py写个大概的服务端,后面就直接在这个基础上改就行了

from flask import Flask, render_template_string, abort, render_template, redirect, request, jsonify
from loguru import logger

app = Flask(__name__)


@app.route("/test", methods=["GET", "POST"])
def hi():
# logger.info(request.headers)
logger.info(request.args.get("domain"))
# logger.info(request.form)
a = {
"err_code": 0,
"data_list":
[
{
"result": "接口对接成功"
}
]
}
return jsonify(a)


if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=False)

然后在平台上,选择服务接口调用,然后选右边的自定义接口

image-20230228164031541

填写参数如下

image-20230228164828775

保存后点击“接口配置”,可以测试接口是否可用

image-20230228165032300

进入配置页面

image-20230228165358034

image-20230228165343914

配置好后输出输出参数即可

image-20230228165428861

再次调试,可见成功

image-20230228165508792

image-20230228165459003

注意

腾讯调用接口延时时间为3秒,>=3秒接口就算返回了也会调用失败!