@@ -30,10 +30,10 @@ class OboMessageService:
3030 """Class exposing OBO enabled endpoints for message management, e.g. send a message."""
3131
3232 def __init__ (self , messages_api : MultiAttachmentsMessagesApi , message_suppression_api : MessageSuppressionApi ,
33- auth_session : AuthSession ,
34- retry_config : BdkRetryConfig ):
33+ pod_api : PodApi , auth_session : AuthSession , retry_config : BdkRetryConfig ):
3534 self ._messages_api = messages_api
3635 self ._message_suppression_api = message_suppression_api
36+ self ._pod_api = pod_api
3737 self ._auth_session = auth_session
3838 self ._retry_config = retry_config
3939
@@ -126,6 +126,40 @@ async def suppress_message(
126126 }
127127 return await self ._message_suppression_api .v1_admin_messagesuppression_id_suppress_post (** params )
128128
129+ @retry
130+ async def update_message (self , stream_id : str , message_id : str , message : Union [str , Message ], data = None ,
131+ version : str = "" , silent = True ) -> V4Message :
132+ """Update an existing message. The existing message must be a valid social message, that has not been deleted.
133+ See: `Update Message <https://developers.symphony.com/restapi/reference/update-message-v4>`_
134+
135+ :param stream_id: The ID of the stream where the message is being updated.
136+ :param message_id: The ID of the message that is being updated.
137+ :param message: a :py:class:`Message` instance or a string containing the MessageML content to be sent.
138+ If it is a :py:class:`Message` instance, other parameters will be ignored.
139+ If it is a string, ``<messageML>`` tags can be omitted.
140+ :param data: an object (e.g. dict) that will be serialized into JSON using ``json.dumps``.
141+ :param silent: a bool flag that will determine if the updated message is going to be marked as read (when true,
142+ which is default value) or unread (when false).
143+ :param version: Optional message version in the format "major.minor".
144+ If empty, defaults to the latest supported version.
145+
146+ :return: a V4Message object containing the details of the updated message.
147+ """
148+ message_object = message if isinstance (message , Message ) else Message (content = message , data = data , silent = silent ,
149+ version = version )
150+
151+ params = {
152+ "sid" : stream_id ,
153+ "mid" : message_id ,
154+ "session_token" : await self ._auth_session .session_token ,
155+ "key_manager_token" : await self ._auth_session .key_manager_token ,
156+ "message" : message_object .content ,
157+ "data" : message_object .data ,
158+ "version" : message_object .version ,
159+ "silent" : str (message_object .silent )
160+ }
161+ return await self ._messages_api .v4_stream_sid_message_mid_update_post (** params )
162+
129163 @retry
130164 async def get_attachment_types (self ) -> List [str ]:
131165 """Retrieves a list of supported file extensions for attachments.
@@ -172,7 +206,7 @@ async def blast_message(
172206 @retry
173207 async def _blast_message (
174208 self ,
175- stream_ids : [str ],
209+ stream_ids : List [str ],
176210 message : str ,
177211 data : str = "" ,
178212 version : str = "" ,
@@ -223,11 +257,10 @@ def __init__(self, messages_api: MultiAttachmentsMessagesApi,
223257 default_api : DefaultApi ,
224258 auth_session : AuthSession ,
225259 retry_config : BdkRetryConfig ):
226- super ().__init__ (messages_api , message_suppression_api , auth_session , retry_config )
260+ super ().__init__ (messages_api , message_suppression_api , pod_api , auth_session , retry_config )
227261 self ._message_api = message_api
228262 self ._message_suppression_api = message_suppression_api
229263 self ._streams_api = streams_api
230- self ._pod_api = pod_api
231264 self ._attachment_api = attachment_api
232265 self ._default_api = default_api
233266
@@ -464,40 +497,6 @@ async def search_messages_one_page(skip, limit):
464497
465498 return offset_based_pagination (search_messages_one_page , chunk_size , max_number )
466499
467- @retry
468- async def update_message (self , stream_id : str , message_id : str , message : Union [str , Message ], data = None ,
469- version : str = "" , silent = True ) -> V4Message :
470- """Update an existing message. The existing message must be a valid social message, that has not been deleted.
471- See: `Update Message <https://developers.symphony.com/restapi/reference/update-message-v4>`_
472-
473- :param stream_id: The ID of the stream where the message is being updated.
474- :param message_id: The ID of the message that is being updated.
475- :param message: a :py:class:`Message` instance or a string containing the MessageML content to be sent.
476- If it is a :py:class:`Message` instance, other parameters will be ignored.
477- If it is a string, ``<messageML>`` tags can be omitted.
478- :param data: an object (e.g. dict) that will be serialized into JSON using ``json.dumps``.
479- :param silent: a bool flag that will determine if the updated message is going to be marked as read (when true,
480- which is default value) or unread (when false).
481- :param version: Optional message version in the format "major.minor".
482- If empty, defaults to the latest supported version.
483-
484- :return: a V4Message object containing the details of the updated message.
485- """
486- message_object = message if isinstance (message , Message ) else Message (content = message , data = data , silent = silent ,
487- version = version )
488-
489- params = {
490- "sid" : stream_id ,
491- "mid" : message_id ,
492- "session_token" : await self ._auth_session .session_token ,
493- "key_manager_token" : await self ._auth_session .key_manager_token ,
494- "message" : message_object .content ,
495- "data" : message_object .data ,
496- "version" : message_object .version ,
497- "silent" : str (message_object .silent )
498- }
499- return await self ._messages_api .v4_stream_sid_message_mid_update_post (** params )
500-
501500 @staticmethod
502501 def _validate_message_search_query (query : MessageSearchQuery ):
503502 # Check streamType value among accepted ones if specified
0 commit comments