我正在使用Python和Python的MS Bot Builder SDK创建一个聊天机器人。 bot是使用处理程序的HTTPServer。我想要的是变量来帮助我跟踪对话,例如消息计数器。但我不能让它工作,每次机器人收到请求(我发送的东西),就像创建另一个处理程序,导致消息的数量总是1.我不确定每个上面调用的是什么请求。
这是(重要)代码:
class BotRequestHandler(BaseHTTPRequestHandler):
count = 0
@staticmethod
def __create_reply_activity(request_activity, text):
# not important
def __handle_conversation_update_activity(self, activity):
# not important
def __handle_message_activity(self, activity):
self.count += 1 ############## INCREMENTATION ##############
self.send_response(200)
self.end_headers()
credentials = MicrosoftAppCredentials(APP_ID, APP_PASSWORD)
connector = ConnectorClient(credentials, base_url=activity.service_url)
reply = BotRequestHandler.__create_reply_activity(activity, '(%d) You said: %s' % (self.count, activity.text))
connector.conversations.send_to_conversation(reply.conversation.id, reply)
def __handle_authentication(self, activity):
# not important
def __unhandled_activity(self):
# not important
def do_POST(self):
body = self.rfile.read(int(self.headers['Content-Length']))
data = json.loads(str(body, 'utf-8'))
activity = Activity.deserialize(data)
if not self.__handle_authentication(activity):
return
if activity.type == ActivityTypes.conversation_update.value:
self.__handle_conversation_update_activity(activity)
elif activity.type == ActivityTypes.message.value:
self.__handle_message_activity(activity)
else:
self.__unhandled_activity()
class BotServer(HTTPServer):
def __init__(self):
super().__init__(('localhost', 9000), BotRequestHandler)
def _run(self):
try:
print('Started http server')
self.serve_forever()
except KeyboardInterrupt:
print('^C received, shutting down server')
self.socket.close()
server = BotServer()
server._run()
如果输入'a'4次消息,我得到的是'(1)你说:a'4次。 我尝试过度使用BaseHTTPRequestHandler的init方法,但它没有用。
对于那些知道:事情是使用Python SDK,我们没有像Node.js那样的瀑布对话框,或者我没有找到它是如何工作的,如果有人知道告诉我,因为我需要保留跟踪用户的很多东西,我需要变量。我真的想使用Python,因为我需要Python中的一些ML和其他模块。
感谢您的帮助。