rwth-acis / Social-Bot-Framework

A framework to model, train and integrate social bots into technology enhanced learning applications.
https://sbf.tech4comp.dbis.rwth-aachen.de/
MIT License
6 stars 4 forks source link

[ENH] Extending the Bot Model Process to be Sequential #101

Closed samuelvkwong closed 1 year ago

samuelvkwong commented 1 year ago
  1. Motivation - https://github.com/rwth-acis/las2peer-social-bot-manager-service/issues/208#issuecomment-1679059808 - With how the process is structured now as a star network, a Bot Action that takes a while or fails is not able to be handled properly and the process proceeds to the next IncomingMessage regardless.
  2. Specification - As mentioned by @lakhoune, Bot Actions would lead to a new IncomingMessage. Action Parameters would still be attached in a star structure.
  3. Finalised state - Modeling the process in a sequential way would allow checks to be made so that if a Bot Action fails or in the case where Bot Actions are chained, if one of the Bot Actions fails, the process can be interrupted.
lakhoune commented 1 year ago

As we discussed before, I would see no problem in extending the modeling language to allow for such behaviour. The existing specification woul coexist with the new one giving the bot developers the option to choose between the two.

samuelvkwong commented 1 year ago

@AlexanderNeumann Do you have any thoughts or example usages for this implementation?

AlexanderNeumann commented 1 year ago

I agree with Ben's comment.

I think Ben has already examples from his thesis. @lakhoune can you provide a concrete example of the mensa bot for example?

From use case scenarios, there are plenty. For example, if the response of a request (when we fetch information from a service/website etc) is relevant to the bot message. If the request fails the state should not change or go into another state (automatically). It is also a little bit complicated because sometimes we are using webhooks if the requests are taking longer. We first directly give a response to the user that there is a longer process ongoing and when the process is finished we give the result to the user.

lakhoune commented 1 year ago

An example for sequential behaviour for the mensabot would be the review process. The process looks similar to this: 'request to make review' -> 'specify canteen' -> 'specify meal' -> 'confirm choices' -> 'give stars' -> '(optional) feedback' Currently we do this in one state for the first half 'request to make review' -> 'specify canteen' -> 'specify meal' -> 'confirm choices' and then a second half 'give stars' -> '(optional) feedback' But it would be great to have each as an own bot action