48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
import logging
|
|
from pprint import pformat
|
|
from uuid import uuid4
|
|
|
|
from ..message import Message, MessageType
|
|
from .abc import Receiver as BaseReceiver
|
|
from .abc import Sender as BaseSender
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def make_dummy_message():
|
|
return Message(
|
|
uuid4(),
|
|
sender="+4915228817386",
|
|
text="Test Message Please Ignore",
|
|
type=MessageType.INBOUND,
|
|
)
|
|
|
|
|
|
class Receiver(BaseReceiver):
|
|
def fetch(self):
|
|
yield make_dummy_message()
|
|
|
|
handle = None
|
|
|
|
|
|
class Sender(BaseSender):
|
|
def send(self, messages):
|
|
for message in messages:
|
|
logger.info(f"would send sms\nto: {message.recipient}\n\n{message.text}")
|
|
yield message
|
|
|
|
|
|
class WebhookReceiver(BaseReceiver):
|
|
fetch = None
|
|
|
|
def handle(self, key="", sender="", text="", **kwargs):
|
|
if not key:
|
|
raise ValueError("empty message key")
|
|
if not sender:
|
|
raise ValueError("message has no sender")
|
|
|
|
logging.getLogger("django.server").info(
|
|
f"received sms via webhook\nkey: {key}\nfrom: {sender}\nadditional fields: {pformat(kwargs)}\n\n{text}"
|
|
)
|
|
yield Message(key, sender=sender, text=text, type=MessageType.INBOUND)
|