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
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
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
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
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
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign up