Spaces:
Build error
Build error
| import json | |
| from datetime import datetime | |
| import pickle | |
| from reportlab.lib.pagesizes import letter | |
| from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer | |
| from reportlab.lib.styles import getSampleStyleSheet | |
| import requests | |
| def export_txt(conversation, topic, filename="conversation.txt"): | |
| try: | |
| with open(filename, "w", encoding="utf-8") as f: | |
| f.write(f"Topic: {topic}\n\n") | |
| for turn in conversation: | |
| f.write(f"{turn['agent']}: {turn['text']}\n") | |
| return filename | |
| except Exception as e: | |
| logging.error(f"[export_txt] Failed to write file: {e}") | |
| return None | |
| def export_json(conversation: list, topic: str, turns: int) -> str: | |
| filename = f"discussion_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json" | |
| data = {"topic": topic, "turns": turns, "conversation": conversation} | |
| with open(filename, 'w') as f: | |
| json.dump(data, f, indent=2) | |
| return filename | |
| def export_pdf(conversation: list, topic: str, turns: int) -> str: | |
| filename = f"discussion_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf" | |
| doc = SimpleDocTemplate(filename, pagesize=letter) | |
| styles = getSampleStyleSheet() | |
| story = [Paragraph(f"Discussion: {topic}", styles['Title']), Spacer(1, 12)] | |
| for msg in conversation: | |
| story.append(Paragraph(f"<b>{msg['agent']}</b> (Turn {msg.get('turn')}):", styles['Normal'])) | |
| story.append(Paragraph(msg['text'], styles['BodyText'])) | |
| story.append(Spacer(1, 12)) | |
| doc.build(story) | |
| return filename | |
| def send_webhook(url: str, conversation: list, topic: str, turns: int) -> str: | |
| if not url.startswith('http'): | |
| return '⚠️ Invalid URL' | |
| payload = {"topic": topic, "turns": turns, "conversation": conversation} | |
| try: | |
| resp = requests.post(url, json=payload, timeout=10) | |
| if resp.status_code == 200: | |
| return '✅ Sent successfully' | |
| return f"⚠️ Error {resp.status_code}: {resp.text}" | |
| except Exception as e: | |
| return f"⚠️ Exception: {e}" |