写一个自动回复的聊天机器人

本文介绍了如何创建一个自动回复的聊天机器人,包括TCP和socket的概念,客户端和服务端的开发流程。服务端通过循环接收用户输入,根据关键词进行响应,可以自定义消息回复或调用图灵机器人API。示例代码展示了如何封装实现输入关键词返回信息的函数,并讨论了多用户聊天的实现。
摘要由CSDN通过智能技术生成
要写一个自动聊天的机器人,底层必定离不开socket, TCP 是一个 稳定、可靠的传输协议,常用于对数据进行准确无误的传输,socket里面有对它的封装。


TCP 的概念

TCP 的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议

socket 的概念

socket (简称 套接字) 是进程之间通信一个工具进程之间想要进行网络通信需要基于这个 socket。它负责进程之间的网络数据传输,好比数据的搬运工。不夸张的说,只要跟网络相关的应用程序或者软件都使用到了 socket

客户端

下面是一个开发TCP应用程序客户端的一般流程,后面见具体代码:

  1. 创建客户端套接字对象

  2. 和服务端套接字建立连接

  3. 发送数据

  4. 接收数据

  5. 关闭客户端套接字

from socket import *
class Cilent_Socket:
    def __init__(self):
        self.tcp_client_socket = socket(AF_INET, SOCK_STREAM) # AF_INET指ipv4地址,SOCK_STREAM指TCP协议
        self.tcp_client_socket.connect(('192.168.137.1',8989))  #连接服务端,指定服务器ip和端口def run(self):
        while True:
            # 用户输入数据
            send_data = input("我:")
            if len(send_data)==0:
                 print('已断开连接!')
                 break
            if send_data == "quit" or send_data == "exit" or send_data =='Bye'or send_data =='bye':
                self.tcp_client_socket.send(send_data.encode("gbk"))
                recv_data = self.tcp_client_socket.recv(4096).decode('gbk')
                print('小美:', recv_data)
                self.tcp_client_socket.close()
                break
            self.tcp_client_socket.send(send_data.encode("gbk"))​            # 接收对方发送过来的数据,最大接收4096个字节
            recv_data = self.tcp_client_socket.recv(4096).decode('gbk')
            print('小美:', recv_data)
        # 关闭套接字
        self.tcp_client_socket.close()
def main():
    client = Cilent_Socket()
    client.run()
​if __name__ == '__main__':
    main()复制代码

上面代码中的__init__方法初始化了一个客户端套接字,并与服务器建立一个长连接,run()方法中用于和后台机器人发送消息和接收机器人给你返回的消息。

服务端

创建一个服务端程序的基本步骤是:

  1. 创建服务端端套接字对象

  2. 绑定端口号

  3. 设置监听

  4. 等待接受客户端的连接请求

  5. 接收数据

  6. 发送数据

  7. 关闭套接字

要创建一个能自动回复的机器人,只要循环接收用户输入的信息,将其输入的关键词进行判断,可以后台预先给定它对应的关键词对应给用户回复的信息即可,或者调用已知已经做好的API接口。下面两种情况会分别进行介绍。

1.自定义消息关键词回复

from socket import *
import time
import random​
class Server_Socket:
    def __init__(self):
        tcp_server_socket = socket(AF_INET, SOCK_STREAM)
        tcp_server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, True) #设置端口复用
        tcp_server_socket.bind(('', 8989))  # 绑定服务器端口
        tcp_server_socket.listen(128)
        self.tcp_server_socket = tcp_server_socket
        self.chat_list = ['今天天气真好,和朋友出去玩一下吧','今天你学习了吗','又不知道吃什么','蓝瘦香菇','好嗨哟','去看电影吧','去吃好吃的'] # 定义初始化消息回复列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值