Objective :
To Provide the user facility to submit feedback/rating at the end of the service.
Citizen Feedback Flow :
User can provide the feedback for the following at the end of the flows for create, mutate, update and payment for property tax, also if the review here is skipped user can also review once the property is active in my application details page, there user will receive a pop up for the feedback.
In My application screen, service search API is being called with tenantId and referenceIds which are an array of acknowledgement number retrieved from property search, in order to get the data about the feedback already submitted, so that following label can be displayed on the button:
if review done and active: View.
if review not done and active: Rate Us.
if application is in progress: Track.
API Curl:
curl 'https://qa.digit.org/service-request/service/v1/_search?_=1681472244925' \ -H 'authority: qa.digit.org' \ -H 'accept: application/json, text/plain, */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'content-type: application/json;charset=UTF-8' \ -H 'origin: https://qa.digit.org' \ -H 'referer: https://qa.digit.org/digit-ui/citizen/pt/property/my-applications' \ -H 'sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"' \ -H 'sec-ch-ua-mobile: ?1' \ -H 'sec-ch-ua-platform: "Android"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36' \ --data-raw '{"ServiceCriteria":{"tenantId":"pb.amritsar","referenceIds":["PB-AC-2023-04-13-029319","PB-AC-2023-04-13-029315","PB-AC-2023-04-13-029314","PB-AC-2023-04-11-029112"]},"RequestInfo":{"apiId":"Rainmaker","authToken":"47980bef-b2bb-44d3-80e6-a36354690735","userInfo":{"id":16490,"uuid":"7d82122e-1e91-4f34-893f-d16963af217a","userName":"7979797979","name":"Debasish","mobileNumber":"7979797979","emailId":"gubbi678@gmail.com","locale":null,"type":"CITIZEN","roles":[{"name":"Citizen","code":"CITIZEN","tenantId":"pb"}],"active":true,"tenantId":"pb","permanentCity":null},"msgId":"1681472244925|en_IN","plainAccessRequest":{}}}' \ --compressed
Inside the Application details page also service search is called in order to check whether the feedback has been done or not, if it has been done for that particular application popup is not visible otherwise pop-up displays once the application details page opens up.
Citizen Feedback Screen
In this screen, user is able to give rating by clicking on the stars (out of 5), once the stars are clicked, according to the value, “What went wrong?” or “What went good?” comment box is visible, which is a non mandatory field and then user can submit the review/rating.
Citizen Feedback Acknowledgement
Once the user submits the rating, the Search API is being called in order to retrieve the service definition for the particular business service, and with that id the create API is called for the submission of the review, if successful or failed, the screen will move to acknowledgement page in order to show whether the rating was submitted successfully or not and in the case of popup, after the review is submitted, toast message is displayed referring to the status of the submission.
Search definition API Curl :
curl 'https://qa.digit.org/service-request/service/definition/v1/_search?_=1681191005369' \ -H 'authority: qa.digit.org' \ -H 'accept: application/json, text/plain, */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'content-type: application/json;charset=UTF-8' \ -H 'cookie: _ga=GA1.2.2133756512.1676450222; __cuid=7b0fe5a8761f49f6bff7ede48649b0dc; amp_fef1e8=248239ce-459d-4f23-8e85-6eaecb3b54d0R...1gpckta4o.1gpckta4s.2.0.2' \ -H 'origin: https://qa.digit.org' \ -H 'referer: https://qa.digit.org/digit-ui/citizen/feedback?redirectedFrom=/digit-ui/citizen/pt/property/new-application/acknowledgement&propertyId=PB-PT-2023-04-11-029030&acknowldgementNumber=PB-AC-2023-04-11-029111&creationReason=CREATE&tenantId=pb.amritsar' \ -H 'sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"' \ -H 'sec-ch-ua-mobile: ?1' \ -H 'sec-ch-ua-platform: "Android"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36' \ --data-raw '{"ServiceDefinitionCriteria":{"tenantId":"pb.amritsar","code":["PT_CREATE"],"module":["PT"]},"RequestInfo":{"apiId":"Rainmaker","authToken":"810eb623-32e8-43d3-bf9f-cd1152faf856","userInfo":{"id":16490,"uuid":"7d82122e-1e91-4f34-893f-d16963af217a","userName":"7979797979","name":"Debasish","mobileNumber":"7979797979","emailId":"gubbi678@gmail.com","locale":null,"type":"CITIZEN","roles":[{"name":"Citizen","code":"CITIZEN","tenantId":"pb"}],"active":true,"tenantId":"pb","permanentCity":null},"msgId":"1681191005368|en_IN","plainAccessRequest":{}}}' \ --compressed
For Service Create following request object is needed :
{ "tenantId": "pb.amritsar", "serviceDefId": "aa85214f-8c8c-4f26-a064-6e324479e6bb", "isActive": true, "attributes": [ { "attributeCode": "consumerCode", "value": "PB-PT-2023-04-13-029231", "additionalDetails": {} }, { "attributeCode": "rating", "value": 3, "additionalDetails": {} }, { "attributeCode": "comments", "value": "12345678901234567890123456789012345678901234567890", "additionalDetails": {} }, { "attributeCode": "channel", "value": "Online", "additionalDetails": {} } ], "additionalDetails": { "locality": "SUN02" }, "accountId": "7d82122e-1e91-4f34-893f-d16963af217a", "referenceId": "PB-AC-2023-04-13-029319" }
Service Create API curl :
curl 'https://qa.digit.org/service-request/service/v1/_create' \ -H 'authority: qa.digit.org' \ -H 'accept: application/json, text/plain, */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'content-type: application/json;charset=UTF-8' \ -H 'origin: https://qa.digit.org' \ -H 'referer: https://qa.digit.org/digit-ui/citizen/pt/property/application/PB-AC-2023-04-13-029319/pb.amritsar' \ -H 'sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"' \ -H 'sec-ch-ua-mobile: ?1' \ -H 'sec-ch-ua-platform: "Android"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36' \ --data-raw '{"Service":{"tenantId":"pb.amritsar","serviceDefId":"aa85214f-8c8c-4f26-a064-6e324479e6bb","isActive":true,"attributes":[{"attributeCode":"consumerCode","value":"PB-PT-2023-04-13-029231","additionalDetails":{}},{"attributeCode":"rating","value":3,"additionalDetails":{}},{"attributeCode":"comments","value":"12345678901234567890123456789012345678901234567890","additionalDetails":{}},{"attributeCode":"channel","value":"Online","additionalDetails":{}}],"additionalDetails":{"locality":"SUN02"},"accountId":"7d82122e-1e91-4f34-893f-d16963af217a","referenceId":"PB-AC-2023-04-13-029319"},"RequestInfo":{"apiId":"Rainmaker","authToken":"47980bef-b2bb-44d3-80e6-a36354690735","userInfo":{"id":16490,"uuid":"7d82122e-1e91-4f34-893f-d16963af217a","userName":"7979797979","name":"Debasish","mobileNumber":"7979797979","emailId":"gubbi678@gmail.com","locale":null,"type":"CITIZEN","roles":[{"name":"Citizen","code":"CITIZEN","tenantId":"pb"}],"active":true,"tenantId":"pb","permanentCity":null},"msgId":"1681472454112|en_IN","plainAccessRequest":{}}}' \ --compressed
Technical Implementation Details & MDMS data:
Citizen feedback screen and acknowledgement screen can be found inside core module, path for the same respectively are :
https://github.com/egovernments/DIGIT-Dev/blob/develop/frontend/micro-ui/web/micro-ui-internals/packages/modules/core/src/components/CitizenFeedback.js
https://github.com/egovernments/DIGIT-Dev/blob/develop/frontend/micro-ui/web/micro-ui-internals/packages/modules/core/src/components/AcknowledgementCF.js
In Citizen feedback component, card header, card text and the rating value are being fetched from mdms file, so that is configurable in nature, following hook is being used to get the mdms data :
const { data: RatingAndFeedBack, isLoading: RatingAndFeedBackLoading } = Digit.Hooks.pt.useRatingAndFeedbackMDMS.RatingAndFeedBack(stateId);
snapshot and path link of the mdms file can be found below :
https://github.com/egovernments/egov-mdms-data/blob/QA/data/pb/common-masters/RatingAndFeedback.json
{ "tenantId": "pb", "moduleName": "common-masters", "RatingAndFeedback": [ { "type" : "isCitizenRatingEnabled", "value" : true }, { "type" : "headerByRating", "value" : [ { "minvalue" : 1, "maxvalue" : 3, "code" : "CS_WHAT_WENT_WRONG" }, { "minvalue" : 4, "maxvalue" : 5, "code" : "CS_WHAT_WENT_GOOD" } ] }, { "type" : "enabledScreensList", "value" : [ { "module" : "PT", "bussinessService" : "PT_CREATE", "screenfrom" : "pt/property/new-application/acknowledgement", "cardHeader" : "PT_RATE_HELP_TEXT_CREATE", "cardText" : "PT_RATE_CARD_TEXT_CREATE" }, { "module" : "PT", "bussinessService" : "PT_MUTATION", "screenfrom" : "pt/property/property-mutation/acknowledgement", "cardHeader" : "PT_RATE_HELP_TEXT_MUTATE", "cardText" : "PT_RATE_CARD_TEXT_MUTATE" }, { "module" : "PT", "bussinessService" : "PT_UPDATE", "screenfrom" : "pt/property/edit-application/acknowledgement", "cardHeader" : "PT_RATE_HELP_TEXT_UPDATE", "cardText" : "PT_RATE_CARD_TEXT_UPDATE" }, { "module" : "PT", "bussinessService" : "PT", "screenfrom" : "digit-ui/citizen/payment/success", "cardHeader" : "PT_RATE_HELP_TEXT_PAY", "cardText" : "PT_RATE_CARD_TEXT_PAY" } ] } ] }
In the above config headerByRating
param is used to declare the value for which star condition will be there along with the code message which will be displayed in the UI screen. enabledScreensList
is used to declare the flows where the Citizen feedback screen will be displayed in order to get review from citizen.
Rating component is being used for the star rating part of the screen in citizen feedback screen which can be found inside micro-ui-internals folder : https://github.com/egovernments/DIGIT-Dev/blob/develop/frontend/micro-ui/web/micro-ui-internals/packages/react-components/src/atoms/Rating.js
Localization :
Localization keys are added under the ‘rainmaker-common’ locale module. In future if any new labels are implemented in the Citizen Feedback (Citizen) that should also be pushed in the locale DB under rainmaker-common locale module.
API Call Role Action mapping:
API | Action Id | Roles | |
---|---|---|---|
1 | /access/v1/actions/mdms/_get | 870 | CITIZEN |
2 | /egov-mdms-service/v1/_search | 954 | CITIZEN |
3 | /localization/messages/v1/_search | 1531 | CITIZEN |
4 | /service-request/service/definition/v1/_search | CITIZEN | |
5 | /service-request/service/v1/_create | CITIZEN | |
6 | /service-request/service/v1/_search | CITIZEN |
Add Comment