精华内容
下载资源
问答
  • 主要为大家详细介绍了python调用API实现智能回复机器人
  • 1-3 python编写智能回复机器人

    千次阅读 2019-06-17 12:39:58
    使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。 安装 pip3 install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,...

    itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。

    使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

    安装

    pip3 install itchat

    登录

    • itchat.auto_login()  这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态

    一下几句代码就能实现一个智能机器人的回复,这样以后都不用怕女朋友的信息回复不及时了 

    使用注意事项:

    1、一下的id如果不知道的话也可以直接改成昵称,比如你的女朋友备注为xxx,就改为xxx,不过最好是使用id

    2、关于机器人,手动在微信上点击+号添加朋友------点击公众号---搜索微软小冰(如果你不喜欢这个机器人,可以换成别的机器人,只要更换相应的id就好了)

    3、以下只是初级代码,如果想变的更高级,需要编写队列,根据队列中的用户来进行一一回复,比如1,2,3同时发消息给你,把他们遍进一个字典数组,回复一个就删除一个(中间具体的实现原理可自行编写)

    import itchat
    from itchat.content import *
    
    #在这里只是实现简单的智能机器人功能,只针对个人使用
    xiaobinId = '@e65dd597c659db72c01f956410c4e1e7'#机器人id
    zhidinId ='@12f70535f9bc6d7133f95d1a8c33a01f49d5c5b04c40640f9ba2a2996be3b27f'#指定人的ID
    
    @itchat.msg_register(TEXT)
    def replyText_msg(msg):
        nickID = msg['FromUserName']
        #如果是指定用户发过来的消息,转发给小冰,在把小冰的信息转给指定的用户
        if(nickID == zhidinId):
            itchat.send(msg.text, toUserName=xiaobinId)
    
    @itchat.msg_register(TEXT, isMpChat=True)
    def replyMp_msg(msg):
        nickID = msg['FromUserName']
        if(nickID == xiaobinId):
            itchat.send(msg.text, toUserName=zhidinId)
    
    
    #hotReload:退出程序后暂存登陆状态
    if __name__ == '__main__':
        itchat.auto_login(hotReload=True)
        itchat.run()

    关于itchat的资料:

    回复消息

    send

    • send(msg="Text Message", toUserName=None)

    参数:

    • msg : 文本消息内容

    • @fil@path_to_file : 发送文件

    • @img@path_to_img : 发送图片

    • @vid@path_to_video : 发送视频

    • toUserName : 发送对象, 如果留空, 将发送给自己.

    返回值

    • True or False

    实例代码

    # coding-utf-8
    import itchat
    itchat.auto_login()
    itchat.send("Hello World!")
    ithcat.send("@fil@%s" % '/tmp/test.text')
    ithcat.send("@img@%s" % '/tmp/test.png')
    ithcat.send("@vid@%s" % '/tmp/test.mkv')

    send_msg

    • send_msg(msg='Text Message', toUserName=None),其中的的msg是要发送的文本,toUserName是发送对象, 如果留空, 将发送给自己,返回值为True或者False

    实例代码

    import itchat
    itchat.auto_login()
    itchat.send_msg("hello world.")

    send_file

    • send_file(fileDir, toUserName=None)  fileDir是文件路径, 当文件不存在时, 将打印无此文件的提醒,返回值为True或者False

    实例代码

    mport itchat
    
    itchat.auto_login()
    itchat.send_file("/tmp/test.txt")

    send_image

    • send_image(fileDir, toUserName=None)  参数同上

    实例代码

    
    import itchat
    
    itchat.auto_login()
    itchat.send_img("/tmp/test.txt")

    send_video

    • send_video(fileDir, toUserName=None) 参数同上

    实例代码

    import itchat
    
    itchat.auto_login()
    itchat.send_video("/tmp/test.txt")

    注册消息方法

    itchat 将根据接受到的消息类型寻找对应的已注册的方法. 如果一个消息类型没有对应的注册方法, 该消息将会被舍弃. 在运行过程中也可以动态注册方法, 注册方式与结果不变.

    注册方法

    • 不带具体对象注册, 将注册为普通消息的回复方法.

    import itchat
    from itchat.content import *
    @itchat.msg_register(TEXT)   #这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法
    def simple_reply(msg):
        #这个是向发送者发送消息
        itchat.send_msg('已经收到了文本消息,消息内容为%s'%msg['Text'],toUserName=msg['FromUserName'])
        return "T reveived: %s" % msg["Text"]     #返回的给对方的消息,msg["Text"]表示消息的内容
        
    • 带对象参数注册, 对应消息对象将调用该方法,其中isFriendChat表示好友之间,isGroupChat表示群聊,isMapChat表示公众号

    import itchat
    from itchat.content import *
    
    @itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True)
    def text_reply(msg):
        msg.user.send("%s : %s" % (mst.type, msg.text))
    • 消息类型 向注册方法传入的 msg 包含微信返回的字典的所有内容.itchat 增加 TextType(也就是参数) 键值, 方便操作.

    itcaht.content 中包含所有的消息类型参数, 如下表

    参数l类型Text 键值
    TEXT文本文本内容(文字消息)
    MAP地图位置文本(位置分享)
    CARD名片推荐人字典(推荐人的名片)
    SHARING分享分享名称(分享的音乐或者文章等)
    PICTURE        下载方法 图片/表情
    RECORDING语音下载方法
    ATTACHMENT附件下载方法
    VIDEO小视频下载方法
    FRIENDS好友邀请添加好友所需参数
    SYSTEM系统消息更新内容的用户或群聊的UserName组成的列表
    NOTE通知通知文本(消息撤回等)

    附件的下载与发送

    itchat 的附件下载方法存储在 msg 的 Text 键中. 发送的文件名(图片给出的默认文件名), 都存储在 msg 的 FileName 键中. 下载方法, 接受一个可用的位置参数(包括文件名), 并将文件响应的存储. 注意:下载的文件存储在指定的文件中,直接将路径与FileName连接即可,如msg["Text"]('/tmp/weichat'+msg['FileName'])

    @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
    def download_files(msg):
        #msg.download(msg['FileName'])   #这个同样是下载文件的方式
        msg['Text'](msg['FileName'])      #下载文件
        #将下载的文件发送给发送者
        itchat.send('@%s@%s' % ('img' if msg['Type'] == 'Picture' else 'fil', msg["FileName"]), msg["FromUserName"])

    群消息

    增加了三个键值,如下:

    • isAt 判断是否 @ 本号

    • ActualNickName : 实际 NickName(昵称)

    • Content : 实际 Content

    测试程序

    import itcaht
    from itchat.content import TEXT
    
    @itchat.msg_register(TEXT, isGroupChat=True)
    def text_reply(msg):
        if(msg.isAt):    #判断是否有人@自己
        #如果有人@自己,就发一个消息告诉对方我已经收到了信息
        itchat.send_msg("我已经收到了来自{0}的消息,实际内容为{1}".format(msg['ActualNickName'],msg['Text']),toUserName=msg['FromUserName'])
    
    itchat.auto_login()
    itchat.run()

    注册消息的优先级

    总的来说就是后面注册同种类型的消息会覆盖之前注册的消息,详情见文档https://itchat.readthedocs.io/zh/latest/

    消息内容

    注意:所有的消息内容都是可以用键值对来访问的,如msg["FromUserName]就是查看发送者,itchat.search_friends(userName=msg['FromUserName'])['NickName']查看的是当发送者昵称

    一般消息

    一般的消息都遵循以下的内容:

    {
        "FromUserName": "",
        "ToUserName": "",
        "Content": "",
        "StatusNotifyUserName": "",
        "ImgWidth": 0,
        "PlayLength": 0,
        "RecommendInfo": {},
        "StatusNotifyCode": 0,
        "NewMsgId": "",
        "Status": 0,
        "VoiceLength": 0,
        "ForwardFlag": 0,
        "AppMsgType": 0,
        "Ticket": "",
        "AppInfo": {},
        "Url": "",
        "ImgStatus": 0,
        "MsgType": 0,
        "ImgHeight": 0,
        "MediaId": "",
        "MsgId": "",
        "FileName": "",
        "HasProductId": 0,
        "FileSize": "",
        "CreateTime": 0,
        "SubMsgType": 0
    }

    初始化消息

     MsgType: 51
        FromUserName: 自己ID
        ToUserName: 自己ID
        StatusNotifyUserName: 最近联系的联系人ID
        Content:
            <msg>
                <op id='4'>
                    <username>
                        # 最近联系的联系人
                        filehelper,xxx@chatroom,wxid_xxx,xxx,...
                    </username>
                    <unreadchatlist>
                        <chat>
                            <username>
                            # 朋友圈
                                MomentsUnreadMsgStatus
                            </username>
                            <lastreadtime>
                                1454502365
                            </lastreadtime>
                        </chat>
                    </unreadchatlist>
                    <unreadfunctionlist>
                    # 未读的功能账号消息,群发助手,漂流瓶等
                    </unreadfunctionlist>
                </op>
            </msg>

    文本消息

    MsgType: 1
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Content: 消息内容

    图片消息

    itchat 增加了 Text 键, 键值为 下载该图片的方法.

    MsgType: 3
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        MsgId: 用于获取图片,用于表示每一条消息
        Content:
            <msg>
                <img length="6503" hdlength="0" />
                <commenturl></commenturl>
            </msg>

    拓展:如果想要得到Content中的具体内容可以使用正则表达式匹配出来

    视频消息

    *itchat 增加了 Text 键, 键值为 下载该视频的方法.*

        MsgType: 62
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        MsgId: 用于获取小视频
        Content:
            <msg>
                <img length="6503" hdlength="0" />
                <commenturl></commenturl>
            </msg>
    

    地理位置消息

    itchat 增加了 Text 键, 键值为 该地点的文本形式.

    MsgType: 1
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Content: http://weixin.qq.com/cgi-bin/redirectforward?args=xxx
        
        OriContent:<?xml version="1.0"?>
    <msg>
        <location x="34.195278" y="117.177803" scale="16" label="江苏省徐州市铜山区新区海河路" maptype="0" poiname="江苏师范大学大学生公寓园区" />
    </msg>
    

    名片消息

    itchat 增加了Text 键, 键值为 该调用 add_friend 需要的属性.

     MsgType: 42
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Content:
            <?xml version="1.0"?>
            <msg bigheadimgurl="" smallheadimgurl="" username="" nickname=""  shortpy="" alias="" imagestatus="3" scene="17" province="" city="" sign="" sex="1" certflag="0" certinfo="" brandIconUrl="" brandHomeUrl="" brandSubscriptConfigUrl="" brandFlags="0" regionCode="" />
    
        RecommendInfo:
            {
                "UserName": "xxx", # ID,这里的是昵称
                "Province": "xxx",   
                "City": "xxx",    
                "Scene": 17, 
                "QQNum": 0, 
                "Content": "", 
                "Alias": "xxx", # 微信号
                "OpCode": 0, 
                "Signature": "", 
                "Ticket": "", 
                "Sex": 0, # 1:男, 2:女
                "NickName": "xxx", # 昵称
                "AttrStatus": 4293221, 
                "VerifyFlag": 0
            }

    下面是添加好友的测试代码

    @itchat.msg_register(itchat.content.CARD,isFriendChat=True)
    def simply(msg):
        print msg['Text']
        print msg['Content']
        itchat.add_friend(userName=msg['Text']['UserName'])  #添加推荐的好友
        print msg['RecommendInfo']
        print msg['RecommendInfo']['UserName']

    语音消息

    *itchat增加了Text键,键值为下载该语音文件的方法,下载下来的是MP3的格式

    
    MsgType: 34
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        MsgId: 用于获取语音
        Content:
            <msg>
                <voicemsg endflag="1" cancelflag="0" forwardflag="0" voiceformat="4" voicelength="1580" length="2026" bufid="216825389722501519" clientmsgid="49efec63a9774a65a932a4e5fcd4e923filehelper174_1454602489" fromusername="" />
            </msg>

    下载方法:msg['Text'](msg['FileName'])

    动画表情

    itchat添加了Text键,键值为下载该图片表情的方法。 注意:本人亲测对于一些微信商店提供的表情是不能下载成功的,这里的自带的表情emoji是属于TEXT类别的,因此如果将其注册为PICTURE消息类型的话是不可以监测到的

      MsgType: 47
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Content:
            <msg>
                <emoji fromusername = "" tousername = "" type="2" idbuffer="media:0_0" md5="e68363487d8f0519c4e1047de403b2e7" len = "86235" productid="com.tencent.xin.emoticon.bilibili" androidmd5="e68363487d8f0519c4e1047de403b2e7" androidlen="86235" s60v3md5 = "e68363487d8f0519c4e1047de403b2e7" s60v3len="86235" s60v5md5 = "e68363487d8f0519c4e1047de403b2e7" s60v5len="86235" cdnurl = "http://emoji.qpic.cn/wx_emoji/eFygWtxcoMF8M0oCCsksMA0gplXAFQNpiaqsmOicbXl1OC4Tyx18SGsQ/" designerid = "" thumburl = "http://mmbiz.qpic.cn/mmemoticon/dx4Y70y9XctRJf6tKsy7FwWosxd4DAtItSfhKS0Czr56A70p8U5O8g/0" encrypturl = "http://emoji.qpic.cn/wx_emoji/UyYVK8GMlq5VnJ56a4GkKHAiaC266Y0me0KtW6JN2FAZcXiaFKccRevA/" aeskey= "a911cc2ec96ddb781b5ca85d24143642" ></emoji> 
                <gameext type="0" content="0" ></gameext>
            </msg>
    

    普通链接或应用分享消息

    主要针对的是分享的文章等等

        MsgType: 49
        AppMsgType: 5
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Url: 链接地址
        FileName: 链接标题
        Content:
            <msg>
                <appmsg appid=""  sdkver="0">
                    <title></title>
                    <des></des>
                    <type>5</type>
                    <content></content>
                    <url></url>
                    <thumburl></thumburl>
                    ...
                </appmsg>
                <appinfo>
                    <version></version>
                    <appname></appname>
                </appinfo>
            </msg>

    音乐链接消息

    主要针对的是音乐

    
    MsgType: 49
        AppMsgType: 3
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Url: 链接地址
        FileName: 音乐名
    
        AppInfo: # 分享链接的应用
            {
                Type: 0, 
                AppID: wx485a97c844086dc9
            }
    
        Content:
            <msg>
                <appmsg appid="wx485a97c844086dc9"  sdkver="0">
                    <title></title>
                    <des></des>
                    <action></action>
                    <type>3</type>
                    <showtype>0</showtype>
                    <mediatagname></mediatagname>
                    <messageext></messageext>
                    <messageaction></messageaction>
                    <content></content>
                    <contentattr>0</contentattr>
                    <url></url>
                    <lowurl></lowurl>
                    <dataurl>
                        http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&amp;guid=ffffffffc104ea2964a111cf3ff3edaf&amp;fromtag=46
                    </dataurl>
                    <lowdataurl>
                        http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&amp;guid=ffffffffc104ea2964a111cf3ff3edaf&amp;fromtag=46
                    </lowdataurl>
                    <appattach>
                        <totallen>0</totallen>
                        <attachid></attachid>
                        <emoticonmd5></emoticonmd5>
                        <fileext></fileext>
                    </appattach>
                    <extinfo></extinfo>
                    <sourceusername></sourceusername>
                    <sourcedisplayname></sourcedisplayname>
                    <commenturl></commenturl>
                    <thumburl>
                        http://imgcache.qq.com/music/photo/album/63/180_albumpic_143163_0.jpg
                    </thumburl>
                    <md5></md5>
                </appmsg>
                <fromusername></fromusername>
                <scene>0</scene>
                <appinfo>
                    <version>29</version>
                    <appname>摇一摇搜歌</appname>
                </appinfo>
                <commenturl></commenturl>
            </msg>

    群消息

    itchat 增加了三个群聊相关的键值:

    • isAt : 判断是否 @ 本号

    • ActualNickName : 实际 NickName

    • Content : 实际 Content

    MsgType: 1
    FromUserName: @@xxx
    ToUserName: @xxx
    Content:
        @xxx:<br/>xxx
    

    红包消息

     MsgType: 49
        AppMsgType: 2001
        FromUserName: 发送方ID
        ToUserName: 接收方ID
        Content: 未知

    系统消息

     MsgType: 10000
        FromUserName: 发送方ID
        ToUserName: 自己ID
        Content:
            "你已添加了 xxx ,现在可以开始聊天了。"
            "如果陌生人主动添加你为朋友,请谨慎核实对方身份。"
            "收到红包,请在手机上查看"

    账号类型

    tchat 为三种账号都提供了 整体获取方法与搜索方法.

    好友

    get_friends

    • itchat.get_friends()  返回完整的好友列表

    • 每个好友为一个字典, 其中第一项为本人的账号信息;

    • 传入 update=True, 将更新好友列表并返回, get_friends(update=True)

    search_friends

    • itchat.get_friends()   好友搜索,有以下四种方式

    • 仅获取自己的用户信息

    # 获取自己的用户信息,返回自己的属性字典
    itchat.search_friends()
    • 获取特定 UserName 的用户信息

    
    # 获取特定UserName的用户信息
    itchat.search_friends(userName='@abcdefg1234567') 
    
    ## 获取发送信息的好友的详细信息
    @itchat.msg_register(itchat.content.TEXT,isFriendChat=True)
    def reply(msg):
        print msg['FromUserName']
        print itchat.search_friends(userName=msg['FromUserName'])   #详细信息
        print itchat.search_friends(userName=msg['FromUserName'])['NickName']   #获取昵称
    • 获取备注,微信号, 昵称中的任何一项等于name键值的用户. (可以与下一项配置使用.)

    比如在我的微信中有一个备注为autolife的人,我可以使用这个方法搜索出详细的信息

    # 获取任何一项等于name键值的用户
    itchat.search_friends(name='autolife')
    • 获取备注,微信号, 昵称分别等于相应键值的用户. (可以与上一项配置使用.)

    # 获取分别对应相应键值的用户
    itchat.search_friends(wechatAccount='littlecodersh')
    # 三、四项功能可以一同使用
    itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh')

    update_friend

    主要用于好友更新

    • 特定用户: 传入用户UserName, 返回指定用户的最新信息.

    • 用户列表: 传入 UserName 组成的列表, 返回用户最新信息组成的列表

    memberList = itchat.update_friend('@abcdefg1234567')

    公众号

    get_mps

    将返回完整的工作号列表

    • 每个公众号为一个字典,

    • 传入 update=True 将更新公众号列表, 并返回.

    search_mps

    • 获取特定UserName的公众号

    # 获取特定UserName的公众号,返回值为一个字典
    itchat.search_mps(userName='@abcdefg1234567')
    • 获取名字中还有特定字符的公众号.

    # 获取名字中含有特定字符的公众号,返回值为一个字典的列表
    itchat.search_mps(name='LittleCoder')
     

    群聊

    • get_chatrooms : 返回完整的群聊列表.

    • search_chatrooms : 群聊搜索.

    • update_chatroom : 获取群聊用户列表或更新该群聊.

    • 群聊在首次获取中不会获取群聊的用户列表, 所以需要调用该命令才能获取群聊成员.

    • 传入群聊的 UserName , 返回特定群聊的详细信息.

    • 传入UserName组成的列表, 返回指定用户的最新信息组成的列表.

    memberList = itchat.update_chatroom('@@abcdefg1234567', detailedMember=True)
    • 创建群聊,增加/删除群聊用户:

    • 由于之前通过群聊检测是否被好友拉黑的程序, 目前这三个方法都被严格限制了使用频率.

    • 删除群聊需要本账号为管理员, 否则无效.

    • 将用户加入群聊有直接加入与发送邀请, 通过 useInvitation 设置.

    • 超过 40 人的群聊无法使用直接加入的加入方式.

    memberList = itchat.get_frients()[1:]
    # 创建群聊, topic 键值为群聊名称.
    chatroomUserName = itchat.create_chatroom(memberList, "test chatroom")
    # 删除群聊内的用户
    itchat.delete_member_from_chatroom(chatroomUserName, memberList[0])
    # 增加用户进入群聊.
    itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)

    方法汇总

    itchat.add_friend                  
    itchat.new_instance                
    itchat.add_member_into_chatroom    
    itchat.originInstance              
    itchat.auto_login                  
    itchat.returnvalues                
    itchat.check_login                 
    itchat.run                         
    itchat.components                  
    itchat.search_chatrooms            
    itchat.config                      
    itchat.search_friends              
    itchat.configured_reply            
    itchat.search_mps                  
    itchat.content                     
    itchat.send                        
    itchat.core                        
    itchat.send_file                   
    itchat.Core                        
    itchat.send_image                  
    itchat.create_chatroom             
    itchat.send_msg                    
    itchat.delete_member_from_chatroom 
    itchat.send_raw_msg                
    itchat.dump_login_status           
    itchat.send_video                  
    itchat.get_chatrooms               
    itchat.set_alias                   
    itchat.get_contact                 
    itchat.set_chatroom_name           
    itchat.get_friends                 
    itchat.set_logging                 
    itchat.get_head_img                
    itchat.set_pinned                  
    itchat.get_mps                     
    itchat.show_mobile_login           
    itchat.get_msg                     
    itchat.start_receiving             
    itchat.get_QR                      
    itchat.storage                     
    itchat.get_QRuuid                  
    itchat.update_chatroom             
    itchat.instanceList                
    itchat.update_friend               
    itchat.load_login_status           
    itchat.upload_file                 
    itchat.log                         
    itchat.utils                       
    itchat.login                       
    itchat.VERSION                     
    itchat.logout                      
    itchat.web_init                    
    itchat.msg_register

    参考过的博文:

    https://blog.csdn.net/coder_pig/article/details/81357810

    https://www.cnblogs.com/GavinSimons/p/8411157.html

    展开全文
  • 虚拟一个机器人,他可以和你聊天哈

     网上找到资料:

    http://www.shareditor.com/bloglistbytag/?tagname=%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E5%81%9A%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA 

    倍感欣喜,这个资料太全面了。向科学致敬。

    http://www.shareditor.com/blogshow?blogId=136  自己动手做聊天机器人 四十二-(重量级长文)从理论到实践开发自己的聊天机器人


    目前来说这几个模型最为著名,有空可以拜读下哈。 

    什么是循环神经网络和LSTM

    可以参考我的这篇文章自己动手做聊天机器人 二十六-图解递归神经网络(RNN),或者直接看Christopher Olah的http://colah.github.io/posts/2015-08-Understanding-LSTMs/,这篇博文被业界引用无数次了,经典中的经典。

     

    什么是seq2seq模型

    seq2seq是基于循环神经网络的一种序列到序列模型,语言翻译、自动问答等都属于序列到序列的场景,都可以使用seq2seq模型,用seq2seq实现聊天机器人的原理可以看下这篇文章http://suriyadeepan.github.io/2016-06-28-easy-seq2seq/。tensorflow中已经有实现好的api供我们使用,但因为参数较多、原理复杂,理解起来比较晦涩,本文就让我带着大家一步一步探索并使用。

     

    什么是attention模型

    attention模型(注意力模型)是为了解决seq2seq中解码器只接受编码器最后一个输出而远离了之前的输出导致的信息丢失的问题,从原理上讲,一个回答一般是基于问题中一些关键位置的信息,也就是注意力集中的地方,具体细节可以看下http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/

     

    用tensorflow的seq2seq制作你自己的聊天机器人

    到这里,假设你已经掌握了上面的理论部分,现在我们直接锁定在tensorflow提供给我们的强大api上。想真正利用好tensorflow必须理解好它的重要接口及其所有参数,所以第一步我们找到我们这次要使用的最关键的接口:https://www.tensorflow.org/api_docs/python/tf/contrib/legacy_seq2seq/embedding_attention_seq2seq

    )

    展开全文
  • “优智奖助贷”智能回复机器人小程序的应用价值
  • 主要为大家详细介绍了java实现自动回复聊天机器人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • “优智奖助贷”智能回复机器人小程序的应用价值.pdf
  • 微信小程序源码-机器人智能回复 机器人兔兔智能在线回复小程序源码
  • qq智能回复机器人

    2014-09-11 17:49:16
    java qq自动回复机器人,调用了小黄鸡的接口
  • 微信自动回复机器人使用手册

    万次阅读 2018-09-07 14:50:25
    没错,微信自动回复机器人正式上线了!今天勤劳的小编就整理了一份微信自动回复机器人的使用手册,希望对小伙伴们有所帮助。 工具 米云微信自动回复机器人 下载/安装 登录www.miyunchuanmei.com网站,下载安装...

    微信也能自动回复啦?没错,微信自动回复机器人正式上线了!今天勤劳的小编就整理了一份微信自动回复机器人的使用手册,希望对小伙伴们有所帮助。

    工具

    米云微信自动回复机器人

    下载/安装

    登录www.miyunchuanmei.com网站,下载安装Microsoft .Net Framework 4.5,,下载安装米云微信自动回复机器人。

    登陆微信

    输入账号和密码,点击“登陆”按钮,即可完成登陆系统。点击左侧全部聊天下方“+”按钮,弹出二维码,打开手机微信“扫一扫”功能,扫描二维码,手机端点击“登陆微信”即可完成登陆。

     

    使用/操作

    操作主界面如下:

    1.左边栏选择全部聊天,即可看到已经登录的微信所有聊天好友,省去多账号收发消息的繁琐点击,就像只使用一个微信号一样方便。

    在全部聊天中,点击“未处理”,即可查看所有未读消息。使用“未处理”功能,不会遗漏任何一个对话。

    2.点击右上角【机器人回复】进入设置页面,选择分类管理可对话术进行分类,方便管理;点击新建知识点即可进入新建知识点窗口。

    3. 想要建立完善的机器人回复,需要不断填充话术,完善机器人回复的数据库;同一ID下,机器人话术是可以共享的。

    4.右键点击微信头像,选择【托管机器人】,即可将微信号进行托管;取消托管也是同样操作。被托管的微信号会在微信头像右上角有一个机器人标注,方便区分。

    被托管账号会根据关键词,对聊天内容使用制定的话术进行回复;找不到答案的对话会在全部聊天中的未处理中显示,方便客服手动回复。

     

    5.可根据需要将知识点从excel中导入到系统中,或将知识点导出至excel文档中,方便知识点互通和记录。

    6.托管机器人后,若出现客户问题回答不上,系统会将问题内容汇总至【问题学习】中,在其中可以看到问题提问次数和该问题是否被添加至知识点状态。勾选问题,可将问题忽略或添加至知识库中。下次再遇到同样问题,机器人即可做出准确回答。

     

    功能优势

    1. 微信号统一管理:可以将所有微信号整合到一个操作后台,方便高效。

    2. 记录长久保存:聊天记录云端保存,同时帮助监管聊天信息里是否有敏感词、索要红包等情况。

    3. 好友标签管理:可以为好友添加标签和详细备注,进行分组管理。

    4. 7*24小时在线:全天在线,随时随地进行微信消息回复。

    以上就是微信自动回复机器人功能的使用手册,小伙伴们学会了吗?

    展开全文
  • 众所周知,Java强在计算,而Node强在IO,在Node后端开发中,时常会遇到要求做聊天室和智能回复机器人的功能,这也正是Node的强项,今天给大家介绍一下Node中使用socket.io实现聊天室与智能机器人的原理。 首先是...

    众所周知,Java强在计算,而Node强在IO,在Node后端开发中,时常会遇到要求做聊天室和智能回复机器人的功能,这也正是Node的强项,今天给大家介绍一下Node中使用socket.io实现聊天室与智能机器人的原理。

    首先是服务端基本实现。

    // 1.安装 socket.io
    // npm install socket.io
    
    // 引入http模块
    var http = require('http');
    // 引入文件模块
    var fs = require('fs');
    // 创建 http 服务器
    var app = http.createServer(function (req, res) {
        // 读取文件
        fs.readFile('index.html', function (err, data) {
            // 设置文件类型
            res.writeHead(200, { "Content-Type": "text/html;charset='utf-8'" });
            // 发送数据并结束
            res.end(data);
        })
    });
    
    
    // 2.引入socket.io,传入生成的app服务器
    var io = require('socket.io')(app);
    
    
    // 3.建立链接
    io.on('connection', function (socket) {
        // 服务器获取客户端发送的数据
        socket.on('to-server', function (data) {
    
            console.log(data);
            // {client:'我是客户端的数据'}
    
            // 以下是服务器给客户端发送数据的两种方式
    
            // 4.socket.emit()=>谁给我发信息我把信息发送给谁
            // socket.emit('to-client','我是服务器的数据');
    
            // 5.io.emit()=>群发给所有连接服务器的客户都广播数据 
            // io.emit('to-client', '我是服务器的数据')
    
        })
    });
    
    app.listen(3000);
    

    socket.imit() 为谁发的消息给服务器,服务器把消息回复给谁,这个就是智能回复机机器人的原理,实际的运用中,我们可以在服务端接收到客户端发送的关键词,然后拿关键词去数据库查询得到相关的信息返回给客户端。

    关于智能回复机器人的具体实现可以看看我写的这篇博客:《Express结合Socket.io实现智能回复机器人》

    io.emit() 为将消息发送给所连接服务器的人,即聊天室的原理,实际的应用中,每次将接收到的数据汇总后派发给所有连接服务器的人。

    关于聊天室的具体实现可以看看我写的这篇博客:《Express结合Socket.io实现聊天室功能》

    以下是客户端代码的基本实现。

    <!DOCTYPE html>
    <html lang="zh-cn">
    
    <head>
        <meta charset="UTF-8">
        <title>Node.js中Socket.io的使用</title>
        <!-- 1.引入服务器上放置的sockey.io文件 -->
        <script src="http://localhost:3000/socket.io/socket.io.js"></script>
        <script>
            // 2.与服务器建立链接
            var socket = io('http://localhost:3000/');
    
            window.onload = function () {
                var button = document.getElementById('button');
                button.onclick = function () {
                    // 3.客户端给服务器发送数据
                    socket.emit('to-server', {
                        client: '我是客户端的数据'
                    })
                };
                // 4.监听服务器的广播
                socket.on('to-client', function (data) {
                    console.log(data);
                    // '我是服务器的数据'
                });
            }
        </script>
    </head>
    
    <body>
        <button id="button">发送数据给服务器</button>
    </body>
    
    </html>

    展开全文
  • 微信自动回复机器人的操作很简单,只需要完成30行代码,就可以让机器人实现查天气、查星座运势、智能回复、关键词回复等功能。 下面我们看个例子: 在程序设定时通过itchat获取微信信息,将微信消息传输到机器人...
  • 拼多多智能客服机器人,24小时无人值守,免费使用,支持最多120家店铺同时操作,支持自动催评,更多功能请下载体验
  • 之前写了一篇 《Node.js中运用socket.io实现智能回复机器人与聊天室功能》发现浏览的人还挺多,不过这篇博客只是讲解了一些实现原理,现在运用Node的Express框架给大家实现一下智能回复机器人。 首先是服务端的代码...
  • 今天为大家介绍一个调用API实现智能回复机器人,供大家参考,具体内容如下 需要注意的是: 下面的代码需要你去图灵的官网去获取API,图灵官网如下: http://www.turingapi.com/ 你自己去注册图灵的账号,密码...
  • 这篇文章主要介绍如何利用python结合钉钉文档实现钉钉机器人的只能回复功能,所谓的只能回复是指,@机器人并发消息后,机器人会给出答复。 老规矩,直接上代码: # -*- coding: UTF-8 -*- import requests import ...
  • 图灵机器人智能回复微信)及(智能聊天)

    万次阅读 多人点赞 2019-03-28 16:51:48
    二、帮你自动微信回复(Python版)三、图灵机器人智能聊天(微信小程序版) 一、什么是图灵机器人? 1、 图灵机器人简介: 是中文语境下智能度最高的“机器人大脑”,是全球较为先进的机器人中文语言认知与计算平台...
  • python实现微信机器人: AI智能回复

    万次阅读 2018-05-13 16:43:54
    目前市面上有不少智能聊天的系统,接入这些系统就能实现一个简易的智能聊天机器人。前期准备:在网站http://www.tuling123.com/注册账号,我们能获得一个token,一个免费的token每天的调用上限大概是100次,如果...
  • 自动回复聊天机器人

    2017-04-20 15:24:05
    能够根据用户发送的消息,自动回复
  • 首先我的想法是去网上找一个语义库,根据关键词回复对应的消息,无意间搜到图灵机器人,哈哈,这就省了大工夫了,根据语境回复消息的任务完全可以交给它来做. 至于获取微信好友的消息,可以通过python的一个第三方包...
  • 评估智能对话机器人的7大数据指标

    千次阅读 2020-09-24 17:28:40
    不同行业都有着不同的数据指标体系,本文作者对评估智能对话机器人的数据指标维度展开了梳理,与大家分享。 如果你正负责一款智能对话机器人产品,不管是软件还是硬件,不管叫“小a”还是叫“小b”,总要遇到一...
  • 智能聊天机器人API

    2014-09-04 16:04:04
    图灵机器人开放API,开发者可以轻松的为自己的网站、APP、微信接入强大的图灵机器人
  • 智能聊天机器人

    2015-07-23 20:10:08
    智能聊天机器人,用户输入文本,然后app会自动回复信息。
  • 如何用Java实现智能对话机器人

    千次阅读 2018-08-27 22:14:15
    如何用Java实现智能对话机器人 前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api 点...
  • 此项目是模仿微信自动回复机器人实现的简单小demo,供学习使用,谢谢
  • 为自己的社交账号接入人工智能机器人,实现 自动回复\智能聊天,翻译\查询天气等各种服务。 1、暂时只介绍qq账号的,其他的自己摸索,也不难 2、图灵机器人\TuringRobot\ 官网:http://www.turingapi.com/ ...
  • 智能聊天机器人实现 源码+解析

    万次阅读 2019-01-31 16:26:32
    智能聊天机器人实现 源码+解析
  • //图灵机器人开发key private static final APIKEY = "YOUR APIKEY"; /** * 微信后台主入口,所有的通过微信后台服务器转接到系统的方法全部由此入口登录 * @author slash * @since 2015年6月4日17:38:34 * ...
  • Qt智能聊天机器人源码。聊天界面已美化,Qt源码分享。
  • 基于aiml实现的智能问答机器人,spring boot 整合aiml

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,548
精华内容 4,619
关键字:

智能回复机器人