微信公众号机器人
前言
看官方文档看得云里雾里,慢慢摸索终于大概搞出来了,记录一下帮助更多人吧。
申请配置机器人
网址:https://chatbot.weixin.qq.com/
微信扫码登录后长这样
把预置技能全部打开
绑定公众号
然后点下面的“上线发布”,就可以去公众号测试效果了,基础版就好了。
调用第三方接口
上面都是官方提供的接口,图一乐罢了,有时候需要和咱们自己的第三方接口进行交互,平台也是提供了对应方法的。
这里以下发子域名扫描任务为例
这一步可以忽略,后面发现用内置字典sys.用户问法
可以给内容智能提取出来,不需要自己再写
先创建一个词典(卡槽)来提取我们的目标
- 自带的 网址词典 无法使用,用他提供的例子也无法使用,所以只能自己创建一个词典,来对目标进行加白。
- 词典的正则表达式疑似失效无法使用,官方关于正则表达式的几篇文档,我研究测试过都不能生效,后面怀疑可能是该正则表达式只对该词典内部的关键词生效。
基础配置测试
创建一个高阶技能
然后新建意图,语义槽就是自己想拿到的用户输入的关键内容;{目标}
就是语义槽,对应的词典是sys.用户问法
(资产梳理)({目标})
(对|)&&({目标})&&(进行|)&&(开始|)&&(资产梳理)
这个时候我们先不接入第三方接口,先试试是不是能提取到用户输入的内容,如下机器人直接回复提取出的内容
保存配置,然后调试
可见会把.
直接去除,比如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)
然后在平台上,选择服务接口调用,然后选右边的自定义接口。
填写参数如下
保存后点击“接口配置”,可以测试接口是否可用
进入配置页面
配置好后输出输出参数即可
再次调试,可见成功
注意
腾讯调用接口延时时间为3秒,>=3秒接口就算返回了也会调用失败!