首页 > 解决方案 > 使用 django-channels 开发的聊天机器人,无法保存会话特定的聊天对话日志

问题描述

我已经能够开发多用户聊天机器人 [使用 django-channels、celery 和 redis] 指南和示例。我现在面临的问题是我无法保存会话(用户)特定的对话日志,因为我是新手。如果有人能启发我如何保存会话特定的对话日志。非常感谢

主要的 routing.py

from channels.routing import ProtocolTypeRouter, URLRouter
from channels.sessions import SessionMiddlewareStack
import chat.routing

application = ProtocolTypeRouter({

    "websocket": SessionMiddlewareStack(
        URLRouter(
            chat.routing.websocket_urlpatterns
        )
    ),

})

聊天的 routing.py

from django.conf.urls import url

from . import consumers

websocket_urlpatterns = [
    url(r'^ws/chat/$', consumers.ChatConsumer),
]

消费者.py

from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
from django.conf import settings

class ChatConsumer(WebsocketConsumer):

    def receive(self, text_data):


        text_data_json = json.loads(text_data)
        message = text_data_json['message']
        message_parts = message.split()

        if message_parts:
            command = message_parts[0].lower()

        response_message = 'Nice to meet you!'
        self.scope["session"]["reply"] = response_message
        self.scope["session"].save()
        print(self.scope["session"]["reply"])


        async_to_sync(self.channel_layer.send)(
                self.channel_name,
                {
                    'type': 'chat_message',
                    'message': response_message
                }
            )

    def chat_message(self, event):
        message = event['message']

        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'message': f'[bot]: {message}'
        }))

标签: sessionchatbotdjango-channels

解决方案


推荐阅读