mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 18:31:13 -05:00
WIP read firetext response codes
This commit is contained in:
@@ -7,7 +7,7 @@ from notifications_utils.template import SMSMessageTemplate
|
|||||||
|
|
||||||
from app import notify_celery, statsd_client
|
from app import notify_celery, statsd_client
|
||||||
from app.clients import ClientException
|
from app.clients import ClientException
|
||||||
from app.clients.sms.firetext import get_firetext_responses
|
from app.clients.sms.firetext import get_firetext_responses, get_message_status_from_firetext_code
|
||||||
from app.clients.sms.mmg import get_mmg_responses
|
from app.clients.sms.mmg import get_mmg_responses
|
||||||
from app.celery.service_callback_tasks import send_delivery_status_to_service, create_delivery_status_callback_data
|
from app.celery.service_callback_tasks import send_delivery_status_to_service, create_delivery_status_callback_data
|
||||||
from app.config import QueueNames
|
from app.config import QueueNames
|
||||||
@@ -24,7 +24,7 @@ sms_response_mapper = {
|
|||||||
|
|
||||||
@notify_celery.task(bind=True, name="process-sms-client-response", max_retries=5, default_retry_delay=300)
|
@notify_celery.task(bind=True, name="process-sms-client-response", max_retries=5, default_retry_delay=300)
|
||||||
@statsd(namespace="tasks")
|
@statsd(namespace="tasks")
|
||||||
def process_sms_client_response(self, status, provider_reference, client_name):
|
def process_sms_client_response(self, status, provider_reference, client_name, code=None):
|
||||||
# validate reference
|
# validate reference
|
||||||
try:
|
try:
|
||||||
uuid.UUID(provider_reference, version=4)
|
uuid.UUID(provider_reference, version=4)
|
||||||
|
|||||||
@@ -19,11 +19,27 @@ firetext_responses = {
|
|||||||
'2': 'pending'
|
'2': 'pending'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
firetext_codes = {
|
||||||
|
'101': 'permanent-failure', # Unknown Subscriber
|
||||||
|
'102': 'temporary-failure', # Absent Subscriber
|
||||||
|
'103': 'temporary-failure', # Subscriber Busy
|
||||||
|
'104': 'temporary-failure', # No Subscriber Memory
|
||||||
|
'201': 'permanent-failure', # Invalid Number
|
||||||
|
'301': 'permanent-failure', # SMS Not Supported
|
||||||
|
'302': 'temporary-failure', # SMS Not Supported
|
||||||
|
'401': 'permanent-failure', # Message Rejected
|
||||||
|
'900': 'temporary-failure', # Routing Error
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_firetext_responses(status):
|
def get_firetext_responses(status):
|
||||||
return firetext_responses[status]
|
return firetext_responses[status]
|
||||||
|
|
||||||
|
|
||||||
|
def get_message_status_from_firetext_code(code):
|
||||||
|
return firetext_codes[code]
|
||||||
|
|
||||||
|
|
||||||
class FiretextClientResponseException(SmsClientResponseException):
|
class FiretextClientResponseException(SmsClientResponseException):
|
||||||
def __init__(self, response, exception):
|
def __init__(self, response, exception):
|
||||||
status_code = response.status_code if response is not None else 504
|
status_code = response.status_code if response is not None else 504
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ def process_firetext_response():
|
|||||||
raise InvalidRequest(errors, status_code=400)
|
raise InvalidRequest(errors, status_code=400)
|
||||||
|
|
||||||
status = request.form.get('status')
|
status = request.form.get('status')
|
||||||
|
code = request.form.get('code')
|
||||||
provider_reference = request.form.get('reference')
|
provider_reference = request.form.get('reference')
|
||||||
|
|
||||||
safe_to_log = dict(request.form).copy()
|
safe_to_log = dict(request.form).copy()
|
||||||
@@ -57,7 +58,7 @@ def process_firetext_response():
|
|||||||
)
|
)
|
||||||
|
|
||||||
process_sms_client_response.apply_async(
|
process_sms_client_response.apply_async(
|
||||||
[status, provider_reference, client_name],
|
[status, provider_reference, client_name, code],
|
||||||
queue=QueueNames.SMS_CALLBACKS,
|
queue=QueueNames.SMS_CALLBACKS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user