Chatbot, разработанный с использованием django-каналов, не может сохранять журналы разговоров в чате - PullRequest
1 голос
/ 05 октября 2019

Я смог разработать многопользовательский чатбот (используя django-channel, celery и redis) руководство и примеры. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу сохранить журналы разговоров для конкретного сеанса (пользователя), поскольку я новичок в этом. Если кто-нибудь мог бы просветить меня, как сохранять сеансовые журналы разговоров. Большое спасибо

routing.py для Main

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),
]

Consumers.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}'
        }))

...