我有一个聊天机器人等待用户输入,但也有一个屏幕,用户可以点击按钮选择一个选项。在我的python代码中,我可以通过回调获得所选的选项,并且我还有一个无限循环,等待聊天机器人响应后的用户输入。我想问用户一个问题,但允许他们输入答案或从屏幕上选择一个选项。所以我想要或多或少的东西:
inp = ""
while(True):
answer, end = get_answer(inp)
print('CHATBOT: '+ answer)
if end = break
if input by user:
inp = input by user
elif callback:
inp = callback value
当然,来自用户的回调或输入可能需要一段时间才能给出,因此计时器是不可取的。我怎么能这样做?
您可以将线程与消息队列一起使用:
from threading import Thread
from Queue import Queue
from datetime import datetime
import time
def chatbot(queue):
while True:
queue.put('CHATBOT: The time is now %s' % datetime.now())
time.sleep(5)
def user_input(queue):
while True:
queue.put('USER: ' + raw_input())
queue = Queue()
chatbot_thread = Thread(target=chatbot, args=(queue,))
input_thread = Thread(target=user_input, args=(queue,))
chatbot_thread.start()
input_thread.start()
while True:
print(queue.get())
样本输入/输出:
CHATBOT: The time is now 2019-03-01 07:42:43.975000
hello world
USER: hello world
CHATBOT: The time is now 2019-03-01 07:42:48.976000
CHATBOT: The time is now 2019-03-01 07:42:53.977000
foo bar
USER: foo bar
CHATBOT: The time is now 2019-03-01 07:42:58.977000