VietCat commited on
Commit
87eddd1
·
1 Parent(s): ebb1778

fix fb issue

Browse files
Files changed (1) hide show
  1. app/facebook.py +36 -2
app/facebook.py CHANGED
@@ -104,7 +104,7 @@ class FacebookClient:
104
  Gửi tin nhắn sử dụng facebook-sdk với request method trực tiếp.
105
  """
106
  try:
107
- graph = facebook.GraphAPI(access_token=page_access_token, version="2.0")
108
 
109
  # Sử dụng request method trực tiếp cho Messenger API
110
  result = graph.request(
@@ -122,6 +122,21 @@ class FacebookClient:
122
  logger.error(f"Unexpected error sending message to Facebook: {e}")
123
  raise HTTPException(status_code=500, detail="Failed to send message to Facebook")
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  @timing_decorator_async
126
  async def send_message(self, page_access_token: Optional[str] = None, recipient_id: Optional[str] = None, message: str = "") -> dict:
127
  page_access_token = page_access_token or self.page_token
@@ -140,7 +155,7 @@ class FacebookClient:
140
  if len(msg) > 2000:
141
  msg = msg[:2000] # fallback cắt cứng
142
 
143
- # Wrap sync SDK call in thread executor để giữ async
144
  loop = asyncio.get_event_loop()
145
  result = await loop.run_in_executor(
146
  None,
@@ -153,6 +168,25 @@ class FacebookClient:
153
 
154
  return results[0] if results else {}
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  @timing_decorator_sync
157
  def parse_message(self, body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
158
  """
 
104
  Gửi tin nhắn sử dụng facebook-sdk với request method trực tiếp.
105
  """
106
  try:
107
+ graph = facebook.GraphAPI(access_token=page_access_token, version="3.1")
108
 
109
  # Sử dụng request method trực tiếp cho Messenger API
110
  result = graph.request(
 
122
  logger.error(f"Unexpected error sending message to Facebook: {e}")
123
  raise HTTPException(status_code=500, detail="Failed to send message to Facebook")
124
 
125
+ def _get_page_info_sync(self, page_access_token: str, page_id: str) -> dict:
126
+ """
127
+ Lấy thông tin page sử dụng Facebook SDK.
128
+ """
129
+ try:
130
+ graph = facebook.GraphAPI(access_token=page_access_token, version="3.1")
131
+ result = graph.get_object(page_id)
132
+ return result
133
+ except facebook.GraphAPIError as e:
134
+ logger.error(f"Facebook GraphAPI Error getting page info: {e}")
135
+ raise HTTPException(status_code=500, detail=f"Failed to get page info: {e}")
136
+ except Exception as e:
137
+ logger.error(f"Unexpected error getting page info: {e}")
138
+ raise HTTPException(status_code=500, detail="Failed to get page info")
139
+
140
  @timing_decorator_async
141
  async def send_message(self, page_access_token: Optional[str] = None, recipient_id: Optional[str] = None, message: str = "") -> dict:
142
  page_access_token = page_access_token or self.page_token
 
155
  if len(msg) > 2000:
156
  msg = msg[:2000] # fallback cắt cứng
157
 
158
+ # Wrap sync HTTP call in thread executor để giữ async
159
  loop = asyncio.get_event_loop()
160
  result = await loop.run_in_executor(
161
  None,
 
168
 
169
  return results[0] if results else {}
170
 
171
+ @timing_decorator_async
172
+ async def get_page_info(self, page_access_token: Optional[str] = None, page_id: Optional[str] = None) -> dict:
173
+ """
174
+ Lấy thông tin page sử dụng Facebook SDK (async).
175
+ """
176
+ page_access_token = page_access_token or self.page_token
177
+ page_id = page_id or self.page_id
178
+ if not page_access_token or not page_id:
179
+ raise ValueError("FacebookClient: page_access_token and page_id must not be None when getting page info.")
180
+
181
+ loop = asyncio.get_event_loop()
182
+ result = await loop.run_in_executor(
183
+ None,
184
+ self._get_page_info_sync,
185
+ page_access_token,
186
+ page_id
187
+ )
188
+ return result
189
+
190
  @timing_decorator_sync
191
  def parse_message(self, body: Dict[str, Any]) -> Optional[Dict[str, Any]]:
192
  """