session - 使用 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}'
}))
解决方案
推荐阅读
- python - 在python中使用glob匹配字符串中的模式
- gradle - Gradle 加速 - 使用模块方法
- postgresql - 如何查询列中数据的缩写?
- javascript - 如何在这个交叉点观察者内切换元素?
- android - Android:是否可以为自定义视图“公开”子视图属性?
- google-closure-library - 如何在 Parcel 中使用自定义 Blockly 模块?
- regex - 我需要积极的向后看吗?
- windows - 使用包含双引号的密码提取存档
- curl - 如何使用 facebook API 来限制直播视频的观众?
- azure - 无法登录 Azure 门户