@@ -1066,6 +1066,43 @@ def sendMessage(self, message, thread_id=None, thread_type=ThreadType.USER):
10661066 Message (text = message ), thread_id = thread_id , thread_type = thread_type
10671067 )
10681068
1069+ def sendUri (self , uri , message = None , thread_id = None , thread_type = ThreadType .USER ):
1070+ """Send a uri preview to a thread.
1071+
1072+ Args:
1073+ uri: uri to preview
1074+ message (Message): Message to send
1075+ thread_id: User/Group ID to send to. See :ref:`intro_threads`
1076+ thread_type (ThreadType): See :ref:`intro_threads`
1077+
1078+ Returns:
1079+ :ref:`Message ID <intro_message_ids>` of the sent message
1080+
1081+ Raises:
1082+ FBchatException: If request failed
1083+ """
1084+
1085+ urlData = self ._state ._uri_share_data ({"uri" : uri })
1086+ thread_id , thread_type = self ._getThread (thread_id , thread_type )
1087+ thread = thread_type ._to_class ()(thread_id )
1088+ data = thread ._to_send_data ()
1089+ if message is not None :
1090+ data .update (message ._to_send_data ())
1091+ data ["action_type" ] = "ma-type:user-generated-message"
1092+ data ["has_attachment" ] = True
1093+ data ["shareable_attachment[share_type]" ] = urlData ["share_type" ]
1094+ for key in urlData ["share_params" ]:
1095+ if isinstance (urlData ["share_params" ][key ], dict ):
1096+ for key2 in urlData ["share_params" ][key ]:
1097+ data [
1098+ "shareable_attachment[share_params][{}][{}]" .format (key , key2 )
1099+ ] = urlData ["share_params" ][key ][key2 ]
1100+ else :
1101+ data ["shareable_attachment[share_params][{}]" .format (key )] = urlData [
1102+ "share_params"
1103+ ][key ]
1104+ return self ._doSendRequest (data )
1105+
10691106 def sendEmoji (
10701107 self ,
10711108 emoji = None ,
0 commit comments