当前位置:   article > 正文

微信pc端接入图灵机器人,实现自动回复_wxauto

wxauto

微信pc端接入图灵机器人,实现自动回复

前言

以前微信的个人账号的机器人开发基本都基于itchat等这些针对网页版微信的库进行开发的。微信禁用网页版后,itchat等针对网页版微信开发的库全部失效。现在基于pc版微信使用新库wxauto进行将图灵机器人与微信对接,实现微信的机器人自动回复。

原理步骤

1、通过python的wxauto库获取微信的会话列表,聊天记录等信息。
2、将我们需要的微信记录传输到图灵机器人接口,让图灵机器人对消息做出回应。
3、将图灵机器人的回应返回给微信消息发送人。

实现方法

搭建环境

安装wxauto

方式一:可以在cmd通过pip进行安装:

pip install wxauto
  • 1

方式二:pycharm中"setting"中通过搜索框安装:

微信登陆

登录pc端微信,并使微信在聊天会话框界面,并最小化微信。(注意:这两步操作非常关键,否则wxauto无法获取微信信息。

代码实现

导入需要的库
from wxauto import *
import threading
import urllib.request
import json
  • 1
  • 2
  • 3
  • 4

建立微信与python联系

wx = WeChat()
  • 1

创建元组,将需要自动回复的微信好友微信名列入其中

auto_relpy_list = [] #列表中列入需要自动回复的微信好友的微信聊天框称呼
  • 1

搭建爬虫,将图灵机器人接入python

def get_response(msgtext):
    try:
        api_url = "http://openapi.tuling123.com/openapi/api/v2"
        text_input = msgtext
        req = {
            "reqType": 0,  # 输入类型 0-文本, 1-图片, 2-音频
            "perception":  # 信息参数
                {
                    "inputText":  # 文本信息
                        {
                            "text": text_input
                        },

                    "selfInfo":  # 用户参数
                        {
                            "location":
                                {
                                    "city": "深圳",  # 所在城市
                                    "province": "广东",  # 省份
                                    "street": "红花岭路"  # 街道
                                }
                        }
                },
            "userInfo":
                {
                    "apiKey": " ",  # 填写自己在图灵官网申请的key
                    "userId": "0001"  # 用户唯一标识(随便填, 非密钥)
                }
        }
        # 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('机器人1号:', results_text)
        # print('code:' + str(intent_code))
        return results_text
    except KeyError:
        print('出错啦~~, 下次别问这样的问题了')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

微信消息处理

def run():
       list = wx.GetSessionList()  #获取会话框列表
       #print(list)
       who = str(list[0])  #获取会话框列表首位联系人
       sum = auto_relpy_list.count(who)#将首位与前面建立的自动回复联系人列表进行对比
      #建立判断:如果首位联系人在自动回复列表中,则继续判断是不是自己,不是就把最后一条消息内容传到图灵机器人接口,返回消息,再传给该联系人。
       if  sum==1:
           print(who)
           wx.ChatWith(who)
           msg_0 = wx.GetLastMessage
           if msg_0[0] != '麟':
             print(msg_0[1])
             ms = get_response(msg_0[1])
             print(ms)
             wx.ChatWith(who)
             wx.SendMsg(ms)
       else:
           pass

       timer = threading.Timer(1,run)
       timer.start()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

完整代码

from wxauto import *
import threading
import urllib.request
import json
wx = WeChat()
auto_relpy_list = []#列表中填入要自动回复的联系人称呼
# 获取会话列表
def get_response(msgtext):
    try:
        api_url = "http://openapi.tuling123.com/openapi/api/v2"
        text_input = msgtext
        req = {
            "reqType": 0,  # 输入类型 0-文本, 1-图片, 2-音频
            "perception":  # 信息参数
                {
                    "inputText":  # 文本信息
                        {
                            "text": text_input
                        },

                    "selfInfo":  # 用户参数
                        {
                            "location":
                                {
                                    "city": "深圳",  # 所在城市
                                    "province": "广东",  # 省份
                                    "street": "红花岭路"  # 街道
                                }
                        }
                },
            "userInfo":
                {
                    "apiKey": " ",  # 改为自己申请的key
                    "userId": "0001"  # 用户唯一标识(随便填, 非密钥)
                }
        }
        # 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('机器人1号:', results_text)
        # print('code:' + str(intent_code))
        return results_text
    except KeyError:
        print('出错啦~~, 下次别问这样的问题了')
def run():
       list = wx.GetSessionList()
       print(list)
       who = str(list[0])
       sum = auto_relpy_list.count(who)
       if  sum==1:
           print(who)
           wx.ChatWith(who)
           msg_0 = wx.GetLastMessage
           if msg_0[0] != '麟':
             print(msg_0[1])
             ms = get_response(msg_0[1])
             print(ms)
             wx.ChatWith(who)
             wx.SendMsg(ms)
       else:
           pass

       timer = threading.Timer(1,run)
       timer.start()
if __name__ == '__main__':
    run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

总结

注意:wxauto对实现环境的要求比较苛刻,要耐心去尝试;上述代码只实现了对文本内容的识别如回复,若好友发送的是文本以外的内容就会报错。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号