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
1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.