Spaces:
Runtime error
Runtime error
| from os.path import abspath | |
| from pprint import pprint | |
| import requests | |
| from flask import Flask | |
| from flask import request | |
| app = Flask(__name__) | |
| def send_message(chat_id, text): | |
| """ | |
| Send message to chat_id. | |
| :param chat_id: Phone number + "@c.us" suffix - 1231231231@c.us | |
| :param text: Message for the recipient | |
| """ | |
| # Send a text back via WhatsApp HTTP API | |
| response = requests.post( | |
| "http://localhost:3000/api/sendText", | |
| json={ | |
| "chatId": chat_id, | |
| "text": text, | |
| "session": "default", | |
| }, | |
| ) | |
| response.raise_for_status() | |
| def send_seen(chat_id, message_id, participant): | |
| response = requests.post( | |
| "http://localhost:3000/api/sendSeen", | |
| json={ | |
| "session": "default", | |
| "chatId": chat_id, | |
| "messageId": message_id, | |
| "participant": participant, | |
| }, | |
| ) | |
| response.raise_for_status() | |
| def whatsapp_echo(): | |
| return "WhatsApp Download Files Bot is ready!" | |
| def whatsapp_webhook(): | |
| if request.method == "GET": | |
| return "WhatsApp Download Files Bot is ready!" | |
| data = request.get_json() | |
| pprint(data) | |
| if data["event"] != "message": | |
| # We can't process other event yet | |
| return f"Unknown event {data['event']}" | |
| payload = data["payload"] | |
| # Ignore messages without files | |
| if not payload.get("mediaUrl", None): | |
| return "No files in the message" | |
| # Number in format 791111111@c.us | |
| chat_id = payload["from"] | |
| # Message ID - false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
| message_id = payload['id'] | |
| # For groups - who sent the message | |
| participant = payload.get('participant') | |
| # IMPORTANT - Always send seen before sending new message | |
| send_seen(chat_id=chat_id, message_id=message_id, participant=participant) | |
| # Download the file and download it to the current folder | |
| client_url = payload["mediaUrl"] | |
| filename = client_url.split("/")[-1] | |
| path = abspath("./" + filename) | |
| r = requests.get(client_url) | |
| with open(path, "wb") as f: | |
| f.write(r.content) | |
| # Send a text back via WhatsApp HTTP API | |
| text = f"We have downloaded file here: {path}" | |
| print(text) | |
| send_message(chat_id=chat_id, text=text) | |
| # Send OK back | |
| return "OK" | |