Уведомления о новых сообщениях для контактов в канале django? - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над созданием приложения чата в реальном времени с django каналами, например, WhatsApp. Это работает, и я могу отправить / получить сообщение для активного чата. Но главная проблема в том, как поднять уведомление, когда новое сообщение приходит от других контактов? consumer.py

class TwilioWChatConsumer(AsyncConsumer):

    async def websocket_connect(self, event):
        other_user = self.scope['url_route']['kwargs']['contect_id']
        me = self.scope['user']
        self.login_contact = await self.get_contact_by_user(me)
        if me.is_authenticated:
            if me.id == other_user:
                await self.send({
                    "type": "websocket.close",
                })
                return False
            self.thread_obj = await self.get_thread(me, other_user)
            self.chat_room = f"ChatThread_{self.thread_obj.id}"
            await self.channel_layer.group_add(
                self.chat_room,
                self.channel_name
            )
            await self.send({
                "type": "websocket.accept",
            })
        else:
            await self.send({
                "type": "websocket.close",
            })

    async def websocket_receive(self, event):
        user = self.scope['user']
        other_contect_id = self.scope['url_route']['kwargs']['contect_id']
        if user.is_authenticated:
            text = json.loads(event['text']) if type(event['text']) == str else event['text']
            other_contact = await self.get_contact(event['from_contect'])
            chatMsg = await self.create_chat_message(other_contact, text['Body'])
            myResponse = {
                    'message': event['text']['Body'],
                    'contact_type': 'asker',
                    'timestamp': str(chatMsg.timestamp.strftime("%d %b %y, %H:%M:%S")),
            }
            await self.channel_layer.group_send(
                self.chat_room,
                {
                    'type': 'chat_message',
                    'text': json.dumps(myResponse)
                }
            )
            return True

Проверьте скриншот ниже для лучшего понимания

окно чата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...