Too Long; Didn't Read
Angular & reactive approach and main logic is mainly the service service. The application will only work on Chrome browsers as it's the only browser supports Web Speech API currently. Demo can be found here. The bot will simply recite what it heard so that anyone can implement his/her own logic. We are creating speaker and listener separately and then we will set up subscriptions to prevent issues in between them. When it's received, we stop listening and when SpeakingEnded or ListeningEnded we start listening again. We use a couple observables that application can subscribe to. Speaker & listener will use the action$ observable for dispatch their actions.