def request_message_render_view(request: WSGIRequest) -> HttpResponse:
body_data = json.loads(request.body)
chat_id = body_data['chat_id']
current_datetime = now()
formatted_timestamp = current_datetime.strftime('%b %d, %Y at %I:%M %p')
if chat_id in {0, '0', ''}:
chat = Chat.objects.create(
user=request.user,
name=body_data['message_body'][:64],
last_message_datetime=current_datetime
)
else:
chat = (
Chat.objects
.by_user(request.user)
.get(id=chat_id)
)
if chat.is_empty:
chat.name = body_data['message_body'][:64]
chat.save()
message_response_group = MessageResponseGroup()
user_message_response = MessageResponse(
type=MessageResponseType.REQUEST,
sender='You',
message_intel=DefaultMessageIntel(
text=body_data['message_body']
),
message_timestamp=formatted_timestamp
)
message_response_group.add_message_response(
user_message_response
)
chat.add_message_response(user_message_response)
persona_name = getattr(settings, 'DJANGO_SPIRE_AI_PERSONA_NAME', 'AI Assistant')
message_response_group.add_message_response(
MessageResponse(
type=MessageResponseType.LOADING_RESPONSE,
sender=persona_name,
message_intel=DefaultMessageIntel(
text=body_data['message_body']
),
synthesis_speech=body_data.get('synthesis_speech', False),
)
)
return HttpResponse(
message_response_group.render_to_html_string(
context_data={
"chat_id": chat.id,
"chat_workflow_name": persona_name,
}
)
)