Sending support information of a provider agency (Node.js)

In this use case, the user wants to contact the customer support due to an issue with the fulfillment of the trip. Here the mobility service provider returns the details of its customer support.

Support

Code snippets

BPP receives protocol status

/*
Example Request JSON:
{
    "context": {
        "domain": "nic2004:60221",
        "country": "IND",
        "city": "std:080",
        "action": "support",
        "core_version": "0.9.1",
        "bap_id": "https://mock_bap.com/",
        "bap_uri": "https://mock_bap.com/beckn/",
        "bpp_id": "https://mock_bpp.com/",
        "bpp_uri": "https://mock_bpp.com/beckn/",
        "transaction_id": "1209849124",
        "message_id": "12341242321",
        "timestamp": "2021-03-23T10:00:40.065Z"
    },
    "message": {
        "ref_id": "trip_1"
    }
}
*/
    router.post('/mobility/support', support);

    function support({ headers, body }, res) {
        try {
            const message = _.get(body, "message");
            const context = _.get(body, "context");
            if (!context) {
                return res.status(400).send(httpResponse("NACK", "Missing Context"));
            }
            if (!message) {
                return res.status(400).send(httpResponse("NACK", "Missing Message"));
            }
            // ... Returns the ack immediately and continue the processing after validation
            res.status(200).send(httpResponse("ACK"));
            processSupport(headers, body)
        } catch (error) {
            res.status(500).send(httpResponse("NACK", error));
        }
    };

BPP processes the status

    function processSupport(requestHeaders, supportRequestBody) {
        // Execute business logic here
        let supportResponse = {}
        generateResponse(requestHeaders, supportResponse)
    }

BPP generates response

    async function generateResponse(requestHeaders, rawResponse){
/*
Example Request JSON :
{
    "context": {
        "domain": "nic2004:60221",
        "country": "IND",
        "city": "std:080",
        "action": "on_support",
        "core_version": "0.9.1",
        "bap_id": "https://mock_bap.com/",
        "bap_uri": "https://mock_bap.com/beckn/",
        "bpp_id": "https://mock_bpp.com/",
        "bpp_uri": "https://mock_bpp.com/beckn/",
        "transaction_id": "1209849124",
        "message_id": "12341242343",
        "timestamp": "2021-03-23T10:00:40.065Z"
    },
    "message": {
        "phone": "+919898989898",
        "email": "[email protected]",
        "uri": "http://support.mock_bpp.com?order_id=trip_1"
    }
}
*/

        //The below code generates the above example JSON.
        let onSupportResponseBody = {}
        //call protocol on_support
        await callOnSupport(requestHeaders, onSupportResponseBody);
    }

BPP calls protocol on_support

    async function callOnSupport(requestHeaders, onSupportResponseBody) {
        // Take the subscriber Id from the header and calls the registry to get the url. If already cached it need not to call again
        const uri = await lookup(requestHeaders);
        // Construct Header
        const headers = constructAuthHeader(); // Auth Header with digital Signature
        return axios({ url: `${uri}/mobility/on_support`, method: "POST", headers, data: onSupportResponseBody })
    }