integreat-cms icon indicating copy to clipboard operation
integreat-cms copied to clipboard

Integreat Chat / Digital Counseling

Open svenseeberg opened this issue 1 year ago • 2 comments

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

svenseeberg avatar Jan 24 '24 13:01 svenseeberg

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.

JoeyStk avatar Feb 23 '24 15:02 JoeyStk

New prio added.

dkehne avatar Feb 27 '24 12:02 dkehne