+
Callbacks for received text messages
+
+
+ Text messages you receive can be forwarded to a URL that you specify, using our callback feature.
+
+
+
+ Messages are forwarded as they are received.
+
+
+
+ To protect your service, we require you to provide a bearer token. We put this token in the authorisation header of the callback requests.
+
+
+
+ Once you have ‘receive text messages’ enabled, you can set up your callback on the settings page of your service.
+
+
+
+ If you don’t have ‘receive text messages’ enabled for your service, get in touch and we can turn it on for you.
+
+
+
Format of the callback
+
+
+ The format of the callback message you receive is JSON.
+
+
+
+ {% call mapping_table(
+ caption='Callback message format',
+ field_headings=['Key', 'Description', 'Format'],
+ field_headings_visible=True,
+ caption_visible=False
+ ) %}
+ {% for key, description, format in [
+ ('id', 'Notify’s id for the received message', 'UUID'),
+ ('source_number', 'The phone number the message was sent from', '447700912345'),
+ ('destination_number', 'The number the message was sent to (your number)', '07700987654'),
+ ('message', 'The received message', 'Hello Notify!'),
+ ('date_received', 'The UTC datetime that the message was received by Notify', '2017-05-14T12:15:30.000000Z')
+ ] %}
+ {% call row() %}
+ {% call row_heading() %} {{ key }} {% endcall %}
+ {{ text_field(description) }}
+ {{ text_field(format) }}
+ {% endcall %}
+ {% endfor %}
+ {% endcall %}
+
+
+{% endblock %}
diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html
index 4e279f043..b31854876 100644
--- a/app/templates/views/service-settings.html
+++ b/app/templates/views/service-settings.html
@@ -106,7 +106,7 @@
{% if can_receive_inbound %}
{% call row() %}
- {{ text_field('API endpoint for received text messages') }}
+ {{ text_field('Callback URL for received text messages') }}
{{ optional_text_field(inbound_api_url) }}
{{ edit_field('Change', url_for('.service_set_inbound_api', service_id=current_service.id)) }}
{% endcall %}
diff --git a/app/templates/views/service-settings/set-inbound-api.html b/app/templates/views/service-settings/set-inbound-api.html
index 0609ff126..9530b36d5 100644
--- a/app/templates/views/service-settings/set-inbound-api.html
+++ b/app/templates/views/service-settings/set-inbound-api.html
@@ -3,27 +3,27 @@
{% from "components/page-footer.html" import page_footer %}
{% block service_page_title %}
- Inbound api
+ Callback URL
{% endblock %}
{% block maincolumn_content %}
-
API endpoint for received text messages
+
Callback URL for received text messages
- This is the https url that the inbound SMS messages will be posted to
- and the bearer token used in the authorisation header of the request.
+ Text messages you receive can be forwarded to your systems with our callback feature.
+ See our documentation on the format of the callback.
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/tests/app/main/views/test_index.py b/tests/app/main/views/test_index.py
index 46dd31da7..2e46706e9 100644
--- a/tests/app/main/views/test_index.py
+++ b/tests/app/main/views/test_index.py
@@ -18,7 +18,7 @@ def test_logged_in_user_redirects_to_choose_service(
@pytest.mark.parametrize('view', [
'cookies', 'using_notify', 'pricing', 'terms', 'integration_testing', 'roadmap',
- 'features', 'information_risk_management'
+ 'features', 'information_risk_management', 'callbacks'
])
def test_static_pages(
client,
diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py
index 998b32243..27080aaee 100644
--- a/tests/app/main/views/test_service_settings.py
+++ b/tests/app/main/views/test_service_settings.py
@@ -121,7 +121,7 @@ def test_should_show_overview(
'Text message sender GOVUK Manage',
'International text messages On Change',
'Receive text messages On Change',
- 'API endpoint for received text messages Not set Change',
+ 'Callback URL for received text messages Not set Change',
'Label Value Action',
'Send letters Off Change',
@@ -207,7 +207,7 @@ def test_service_settings_show_elided_api_url_if_needed(
non_empty_trs = [tr.find_all('td') for tr in page.find_all('tr') if tr.find_all('td')]
api_url = [api_setting[1].text.strip() for api_setting in non_empty_trs
- if api_setting[0].text.strip() == 'API endpoint for received text messages'][0]
+ if api_setting[0].text.strip() == 'Callback URL for received text messages'][0]
assert api_url == elided_url
assert mocked_get_fn.called is True
@@ -1272,7 +1272,7 @@ def test_does_not_show_research_mode_indicator(
@pytest.mark.parametrize('url, bearer_token, expected_errors', [
("", "", "Can’t be empty Can’t be empty"),
- ("http://not_https.com", "1234567890", "Must be a valid https url"),
+ ("http://not_https.com", "1234567890", "Must be a valid https URL"),
("https://test.com", "123456789", "Must be at least 10 characters"),
])
def test_set_inbound_api_validation(