This question has been flagged
2 Replies
5406 Views

how can i get uuid of two users in im_chat to identify and send message

ex:

'hr'  want to send a message(im_chat) to 'employee' for every mail  send .

for this want to get uuid of between hr and employee

Avatar
Discard
Best Answer

In the following code in im_chat.py you can get the sender and receivers details for the current session :

  def users_infos(self, cr, uid, ids, context=None):
        """ get the user infos for all the user in the session """
        for session in self.pool["im_chat.session"].browse(cr, uid, ids, context=context):
            users_infos = self.pool["res.users"].read(cr, uid, [u.id for u in session.user_ids], ['id','name', 'im_status'], context=context)
            return users_info

 

if you want their uid ,yiu can get it from the following methos in im_chat.py:

    def post(self, cr, uid, from_uid, uuid, message_type, message_content, context=None):
        """ post and broadcast a message, return the message id """
        message_id = False
        Session = self.pool['im_chat.session']
        session_ids = Session.search(cr, uid, [('uuid','=',uuid)], context=context)
        notifications = []
        for session in Session.browse(cr, uid, session_ids, context=context):
            # build the new message
            vals = {
                "from_id": from_uid,
                "to_id": session.id,
                "type": message_type,
                "message": message_content,
            }
            # save it
            message_id = self.create(cr, uid, vals, context=context)
            # broadcast it to channel (anonymous users) and users_ids
            data = self.read(cr, uid, [message_id], ['from_id','to_id','create_date','type','message'], context=context)[0]
            notifications.append([uuid, data])
            for user in session.user_ids:
                notifications.append([(cr.dbname, 'im_chat.session', user.id), data])
            self.pool['bus.bus'].sendmany(cr, uid, notifications)
        return message_id

Note:

 in session.users ids,  you can get the sender and receiver ids

from_uid you can get the message sender id

message_content you can see the outgoing message.

Hope it will helps you

 

Avatar
Discard
Author Best Answer

crm_phonecall  (this have to write perticular event )  here it is logged calls ..

 if values.get('user_id'):

            from_uid=uid

            to_uid=values.get('user_id')   

            self.pool['im_chat.message'].postfirst(cr, uid, from_uid,to_uid, 'message','you allocated for one work ,check you inbox', context)

 

 

im_chat  (this function add into im_chat  module)

       

def postfirst(self, cr, uid, from_uid,to_uid,message_type, message_content, context=None):

        """ post and broadcast a message, return the message id """

        print ''

        #print 'context', context ,'uid', uid, 'from_uid',from_uid, 'uuid',uuid, 'message_content',message_content,

        print ''

        info = self.pool['im_chat.session'].session_info(cr, from_uid, to_uid , context)

        print 'postinfo',info,'from_uid',from_uid

        

        message_id = False 

        

        uuid=info['uuid']

        Session = self.pool['im_chat.session']

        session_ids = Session.search(cr, uid, [('uuid','=',uuid)], context=context)

        print session_ids

        notifications = []

        for session in Session.browse(cr, uid, session_ids, context=context):

            # build the new message

            print 'from_uid' ,from_uid ,'session.id' ,session.id

            vals = {

                "from_id": from_uid,

                "to_id": session.id,

                "type": message_type,

                "message": message_content,

            }

            # save it

            message_id = self.create(cr, uid, vals, context=context)

            # broadcast it to channel (anonymous users) and users_ids

            data = self.read(cr, uid, [message_id], ['from_id','to_id','create_date','type','message'], context=context)[0]

            notifications.append([uuid, data])

            for user in session.user_ids:

                notifications.append([(cr.dbname, 'im_chat.session', user.id), data])

            self.pool['bus.bus'].sendmany(cr, uid, notifications)

        return message_id

Avatar
Discard