微信公众号接入记录(三)

回复消息自定义

这里调用网上找到的聊天api接口

  • reply_help.py文件
import json
import random
import time
import urllib.request
import requests

def tl_reply(text_input):
    """
    图灵机器人api
    :param text_input:
    :return:
    """
    api_url = "http://openapi.tuling123.com/openapi/api/v2"

    req = {
        "perception":
            {
                "inputText":
                    {
                        "text": text_input
                    },

                "selfInfo":
                    {
                        "location":
                            {
                                "city": "成都",
                                "province": "四川",
                                "street": "天府三街"
                            }
                    }
            },

        "userInfo":
            {
                "apiKey": "你的apikey",
                "userId": "OnlyUseAlphabet"
            }
    }
    # print(req)
    # 将字典格式的req编码为utf8
    req = json.dumps(req).encode('utf8')
    # print(req)

    http_post = urllib.request.Request(api_url, data=req, headers={'content-type': 'application/json'})
    response = urllib.request.urlopen(http_post)
    response_str = response.read().decode('utf8')
    # print(response_str)
    response_dic = json.loads(response_str)
    # print(response_dic)

    intent_code = response_dic['intent']['code']
    results_text = response_dic['results'][0]['values']['text']
    print('Turing的回答:')
    print('code:' + str(intent_code))
    print('text:' + results_text)
    return results_text


def qyk_reply(text_input):
    """
    青云客智能聊天机器人API
    :param text_input: 用户的问题
    :return: 机器人回答
    """
    api_url = f'http://api.qingyunke.com/api.php?key=free&appid=0&msg={text_input}'
    http_post = urllib.request.Request(api_url, headers={'content-type': 'application/json'})
    response = urllib.request.urlopen(http_post)
    response_str = response.read().decode('utf8')
    # print(json.loads(response_str))
    # print(type(json.loads(response_str)))
    return json.loads(response_str)['content']


def tx_reply(text_input):
    """
    腾讯闲聊机器人api
    :param text_input:
    :return:
    """
    # 请求参数配置
    app_id = '' # 你的app_id
    time_stamp = time.time()
    nonce_str = 'ffd54f5' + str(random.randint(0, 5512))
    sign = 'abcd' * 8
    session = '10000'
    question = text_input

    api_url = f'https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat?app_id={app_id}&time_stamp={time_stamp}&nonce_str={nonce_str}&sign={sign}&session={session}&question={question}'
    url = api_url

    response = requests.get(url)
    if response.status_code == 200:
        print(response.content.decode('utf-8'))
    print('*******************',response)

  • 视图函数
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
import hashlib

from utils import receive, reply,reply_help


def init_connet(request):
    if request.method == 'GET':
        try:
            if len(request.GET) == 0:
                return "hello, this is handle view"
            token = 'hello123'
            signature = request.GET.get('signature', '')
            timestamp = request.GET.get('timestamp', '')
            nonce = request.GET.get('nonce', '')
            echostr = request.GET.get('echostr', '')
            s = [timestamp, nonce, token]
            s.sort()
            s = ''.join(s)
            sha1 = hashlib.sha1(s.encode('utf-8'))
            # map(sha1.update, s)
            hashcode = sha1.hexdigest()
            print("handle/GET func: hashcode, signature: ", hashcode, signature)
            if hashcode == signature:
                print('====验证通过====')
                return HttpResponse(echostr)
            else:
                print('====验证失败====')
                return ""
        except Exception as e:
            print('===error===', e)
            return e
    if request.method == 'POST':
        # print(request.body.decode())
        webData = request.body
        print('这是接收的xml: ',webData)
        recMsg = receive.parse_xml(webData)
        if isinstance(recMsg, receive.Msg) and recMsg.MsgType == 'text':
            toUser = recMsg.FromUserName
            fromUser = recMsg.ToUserName
            content = recMsg.Content.decode('utf8')
            print(f'收到用户[{fromUser}]的消息:{content}')
            try:
                content = reply_help.qyk_reply(recMsg.Content) # 这里调用的时青云客api
                # content = reply_help.tx_reply(content)
            except Exception as e:
                print(e)
            print(f'机器人回的消息:{content}')
            replyMsg = reply.TextMsg(toUser, fromUser, content)
            return HttpResponse(replyMsg.send())

        else:
            print("暂且不处理")
            return HttpResponse('')


打印的日志

在这里插入图片描述

微信-公总号端

在这里插入图片描述

青云客智能聊天机器人API 可以正常使用 但能回复的能较少
图灵api–坑 注册后现在要实名认证后才能调用(它这里实名认证超麻烦,就没弄)

这里是根据官方文档的web.py框架改的Django(其他web服务端也差不多吧)—记录一下吧!

整个测试demo代码- Github(Python-Advance/DemoCode)
待续…

发布了53 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42874994/article/details/97433759