integreat-cms
integreat-cms copied to clipboard
Integreat Chat / Digital Counseling
Motivation
Integreat mostly provides one way communication (except for e-mail addresses provided in feedback forms). We want to extend that functionality with a digital counseling solution that enables continuous bi-directional communication between app users and region managers/counselors.
Proposed Solution
- The Integreat app search functionality is being extended to act like a chat. Messages are sent to the CMS API.
- The able to fetch responses from the API.
- Zammad acts as a back end (database) for storing messages. Messages (Strings) are sent from the app to an API endpoint of the CMS. The CMS stores the message in Zammad via the Zammad API.
- The Integreat CMS is responsible for mapping the app (temporary chat ID?) to Zammad ticket IDs. App users can close and start a new chat which will delete the ID on the app.
- Except for a region setting to enable the functionality and set a Zammad URL, no GUI in the CMS is required for this feature.
- To prevent abuse, an IP based rate limit has to be implemented.
- The Integreat CMS is a proxy for messages between the Integreat app and Zammad (per region).
- In the future the Integreat CMS can query other components (automatic translation services, a content search engine & LLMs) to create automated responses and translation services.
- If automatic responses are sent to the user, a copy is also attached to the Zammad ticket.
To sum up:
- We need to implement a pull and post messages API endpoint.
- The CMS needs a new model to store a map of device IDs to Zammad ticket IDs.
- The CMS uses Zammad issues to store messages.
Flow for posting messages from the app:
- The app sends a message (string + device ID) to the CMS
- The CMS looks in its mapping model if there already is an existing Zammad issue
- If not, a new issues is created and the message is stored
- if a ticket exists, the new message is appended
Flow for getting answers:
- the app sends a device ID
- The CMS maps the device ID into a Zammad ticket ID
- If the ticket exists, all messages are returned to the app
Alternatives
- N/A
User Story
As a migrant I want to directly chat with regional counseling services to avoid having to physically travel to a help desk.
Additional Context
- https://nextcloud.tuerantuer.org/index.php/apps/drawio/edit?fileId=5750544
- https://chat.tuerantuer.org/digitalfabrik/pl/rci55kyyg7b83d9bu1yfqqxpoo
- https://docs.zammad.org/en/latest/api/ticket/index.html#create
- https://docs.zammad.org/en/latest/api/ticket/index.html#update
Design Requirements
- None, no GUI
I added the "question" label because we still need a discussion on what exactly and when exactly it needs to be done. This will be discussed in the next backlog grooming session.
New prio added.