VA Notify External Service Integration - department-of-veterans-affairs/caseflow GitHub Wiki
Sending the Job to the Queue
A payload gets generated and sent as an argument for an active rails job called SendNotificationJob which gets queued up to the "send_notifications.fifo" queue.
Performing the Job
The perform method for SendNotificationJob will get triggered and start processing the payload it has received to get it ready to send it to the VA Notify Service.
VA Notify Service
The VA Notify Service is how we interact with the VA Notify API, its used as an interface to access its endpoints. We will be sending an Email or an SMS depending on what the appellant that we are sending the notification to has opted in for. Once we get a response back will be updating the notification record's content field
Sending an Email
We will be using the API endpoint that is used for sending out emails and the body that is requested for doing this is:
- template_id
- reference
- recipient_identifier
- personalisation
- status
Template ID is the unique value for using the correct email template
Reference is the ID that gets generated after we created the notification record and what we will be using when we need to update the record
Recipient Identifier is an object that has two attributes, an id_type (which will be "PID" for participant ID) and id_value (which is the participant ID)
Personalisation is an object with dynamic attributes which depend on the template that is getting used. For example "Quarterly Notifications" requires personalisation which needs an appeal_status attribute which is just a string for status
Status is just going to be the current validity of the message, ex. participant_id is invalid
{
body: {
template_id: email_template_id,
reference: notification_id,
recipient_identifier: {
id_type: "PID",
id_value: participant_id
},
personalisation: {}
},
headers: HEADERS,
endpoint: SEND_EMAIL_NOTIFICATION_ENDPOINT, method: :post
}
Sending an SMS
We will be using the API endpoint that is used for sending out sms and the body that is requested for doing this is:
- template_id
- reference
- recipient_identifier
- sms_sender_id
- personalisation
- status
Template ID is the unique value for using the correct sms template
Reference is the ID that gets generated after we created the notification record and what we will be using when we need to update the record
Recipient Identifier is an object that has two attributes, an id_type (which will be "PID" for participant ID) and id_value (which is the participant ID)
SMS Sender ID is the ID of the sender that will send the sms to the appelleant
Personalisation is an object with dynamic attributes which depend on the template that is getting used. For example "Quarterly Notifications" requires personalisation which needs an appeal_status attribute which is just a string for status
Status is just going to be the current validity of the message, ex. "Success"
{
body: {
template_id: sms_template_id,
reference: notification_id,
recipient_identifier: {
id_type: "PID",
id_value: participant_id
},
sms_sender_id: SENDER_ID || "",
personalisation: {}
},
headers: HEADERS,
endpoint: SEND_SMS_NOTIFICATION_ENDPOINT, method: :post
}