diff --git a/examples/getting-started/conversation/send_handle_incoming_sms/server_business_logic.py b/examples/getting-started/conversation/send_handle_incoming_sms/server_business_logic.py index 6ed9986a..5e9fa615 100644 --- a/examples/getting-started/conversation/send_handle_incoming_sms/server_business_logic.py +++ b/examples/getting-started/conversation/send_handle_incoming_sms/server_business_logic.py @@ -34,14 +34,9 @@ def _handle_message_inbound(event: MessageInboundEvent, logger, sinch_client): mo_text = _get_mo_text(event) logger.info("MO SMS from %s: %s", identity, mo_text) - app_id = event.app_id - if not app_id: - logger.warning("Event has no app_id; skipping MT reply.") - return - reply_text = f"Your message said: {mo_text}" response = sinch_client.conversation.messages.send_text_message( - app_id=app_id, + app_id=event.app_id, text=reply_text, recipient_identities=[{"channel": "SMS", "identity": identity}], ) diff --git a/sinch/domains/conversation/models/v1/sinch_events/events/conversation_sinch_event_base.py b/sinch/domains/conversation/models/v1/sinch_events/events/conversation_sinch_event_base.py index 114da8b5..cbd5e50f 100644 --- a/sinch/domains/conversation/models/v1/sinch_events/events/conversation_sinch_event_base.py +++ b/sinch/domains/conversation/models/v1/sinch_events/events/conversation_sinch_event_base.py @@ -9,12 +9,10 @@ class ConversationSinchEventBase(SinchEvent): """Base fields present on every Conversation API Sinch Event payload.""" - app_id: Optional[StrictStr] = Field( - default=None, + app_id: StrictStr = Field( description="Id of the subscribed app.", ) - project_id: Optional[StrictStr] = Field( - default=None, + project_id: StrictStr = Field( description="The project ID of the app which has subscribed for the callback.", ) accepted_time: Optional[datetime] = Field( diff --git a/tests/unit/domains/conversation/v1/models/sinch_events/events/test_conversation_sinch_event_model.py b/tests/unit/domains/conversation/v1/models/sinch_events/events/test_conversation_sinch_event_model.py index fe5e5c13..f07cb648 100644 --- a/tests/unit/domains/conversation/v1/models/sinch_events/events/test_conversation_sinch_event_model.py +++ b/tests/unit/domains/conversation/v1/models/sinch_events/events/test_conversation_sinch_event_model.py @@ -48,6 +48,7 @@ def test_message_delivery_receipt_event_expects_parsed(message_delivery_report_d def test_message_inbound_event_expects_parsed(): payload = { "app_id": "app1", + "project_id": "proj1", "message": { "contact_id": "contact1", "contact_message": {"text_message": {"text": "Hello"}}, @@ -63,6 +64,7 @@ def test_message_inbound_event_expects_parsed(): def test_message_submit_event_expects_parsed(): payload = { "app_id": "app1", + "project_id": "proj1", "message_submit_notification": { "contact_id": "contact1", "channel_identity": {"channel": "MESSENGER", "identity": "123"}, @@ -73,10 +75,10 @@ def test_message_submit_event_expects_parsed(): assert event.message_submit_notification.contact_id == "contact1" -def test_conversation_sinch_event_base_optional_fields(): - payload = {"app_id": "app1"} +def test_conversation_sinch_event_base_optional_timestamp_and_metadata_fields(): + payload = {"app_id": "app1", "project_id": "proj1"} event = ConversationSinchEventBase(**payload) assert event.app_id == "app1" - assert event.project_id is None + assert event.project_id == "proj1" assert event.accepted_time is None assert event.event_time is None diff --git a/tests/unit/domains/conversation/v1/sinch_events/test_conversation_sinch_event.py b/tests/unit/domains/conversation/v1/sinch_events/test_conversation_sinch_event.py index 16d416ca..f9b289fb 100644 --- a/tests/unit/domains/conversation/v1/sinch_events/test_conversation_sinch_event.py +++ b/tests/unit/domains/conversation/v1/sinch_events/test_conversation_sinch_event.py @@ -117,7 +117,10 @@ def test_parse_event_message_submit_expects_message_submit_event(conversation_si def test_parse_event_json_string_expects_parsed(conversation_sinch_event): - payload_str = '{"app_id":"app1","message_delivery_report":{"status":"DELIVERED"}}' + payload_str = ( + '{"app_id":"app1","project_id":"proj1",' + '"message_delivery_report":{"status":"DELIVERED"}}' + ) event = conversation_sinch_event.parse_event(payload_str) assert isinstance(event, MessageDeliveryReceiptEvent) assert event.app_id == "app1"