这次的聊天机器人分为两个部分一是服务端和客户端,使用的时tcp
tcp在日常生活中极为常见,在进行通信之前会进行三次握手
tcp原理
他的工作图大概如下

免费的
聊天机器人api
大家感兴趣可以去看看
聊天机器人网址调用api
这一步在文档里面就有直接复制
import json
import requests
sess = requests.get('https://api.ownthink.com/bot?spoken=姚明多高啊?')
answer = sess.text
answer = json.loads(answer)
print(answer)
但是他返回的是一个字典类型需要自己通过键值对把回答提取出来
tcp服务器端
这一步非常简单,就是写一个循环然后接受和响应即可
import json
import requests
from socket import *
from pprint import pprint
class bot:
def __init__(self) -> None:
pass
def message(data):
url='https://api.ownthink.com/bot?spoken={data}'.format(data=data.decode())
sess = requests.get(url)
answer = sess.text
answer = json.loads(answer)['data']['info']['text']
print(data)
return answer
def client_handler():
HOST = '127.0.0.1'
PORT = 9000
BUFSIZ = 1024
ADDRESS = (HOST, PORT)
tcpServerSocket = socket(AF_INET, SOCK_STREAM)
tcpServerSocket.bind(ADDRESS)
print("服务器启动,监听端口{}...".format(ADDRESS[1]))
tcpServerSocket.listen(5)
try:
while True:
print('服务器正在运行,等待客户端连接...')
client_socket, client_address = tcpServerSocket.accept()
print('客户端{}已连接!'.format(client_address))
try:
while True:
data = client_socket.recv(2048)
if data:
print('接收到消息 {}({} bytes) 来自 {}'.format(data.decode('utf-8'), len(data), client_address))
# 返回响应数据,将客户端发送来的数据原样返回
client_socket.send(bot.message(data).encode())
print('发送消息 {} 至 {}'.format(data.decode('utf-8'), client_address))
else:
print('客户端 {} 已断开!'.format(client_address))
break
finally:
client_socket.close()
finally:
tcpServerSocket.close()
bot.client_handler()
客户端
同上面差不多直接上代码
from socket import *
HOST = '127.0.0.1'
PORT = 9000
BUFSIZ = 1024
ADDRESS = (HOST, PORT)
tcpClientSocket = socket(AF_INET, SOCK_STREAM)
tcpClientSocket.connect(ADDRESS)
while True:
data = input('>')
if not data:
break
# 发送数据
tcpClientSocket.send(data.encode('utf-8'))
# 接收数据
data, ADDR = tcpClientSocket.recvfrom(BUFSIZ)
if not data:
break
print("服务器端响应:", data.decode('utf-8'))
print("链接已断开!")
tcpClientSocket.close()
其中host和port可以自己更改
这里演示的代码知识最基础的还可以加上多线程等等
RUN
然后是最激动的运行时刻
想起的服务端



结语
都挺好的只不过这个机器人好像有点傻
反正是免费的,接不要这么多自行车了
如果大家有更好的api可以自行更换
© 版权声明
THE END
请登录后发表评论
注册
社交帐号登录