Я смог разработать многопользовательский чатбот (используя 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}'
}))