Giter VIP home page Giter VIP logo

twilio-bcp-calltree's People

Contributors

alessandroarosio avatar alistairmckellar avatar dependabot[bot] avatar drobiu avatar jhanna60 avatar lywc20 avatar malc54 avatar nwnt avatar teamwicket avatar zeaus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

twilio-bcp-calltree's Issues

Twilio Start Events/Response Failing to Convert

With the existing application we have a few problems when creating/receiving messages for new events:

  1. initiateCalls
  • This will create a new event for every new request however it also checks if the event exists. This check should be removed
  • Also we should check if the provided twilio number is available
  • Additionally, we convert the Message status to the Response smsStatus. The smsStatus should only be used internally by the app and should not be a 1-1 mapping with twilio's response.
  1. replyToSms
  • The decosntruction of the String db entries is done via String chunks separated by & symbol. This can result in errors if elements are excluded, sent in a different order. Also providing a & in the response would result in errors. This should be changed to a regex matcher.

Soft delete for Twilio numbers

Backend:
Add Deactivated (bool) column in BCP Numbers.
The controller should return ONLY deatctivated=false values.

In the CREATE method, check whether we have the number in DB, and change the DEACTIVATED status to FALSE. If no entry, then create it.
Update the DELETE controller action to set the status TRUE (in deactivated column) for the given number.

Create BOM

Create master pom for all the microservices with most common dependencies

Wizard to create events

Currently just now we have an entry form provided mainly by React-Admin, it would be great to have a 'wizard' component to guide us through the event setup.

For example it would explain each step and save the input and provide a breadcrumb trail so the user can go back and adjust something if they needed and finally when they get to the end they have the ability to go ahead and start the event.

Please keep any suggestions following the Material design look and feel.

Add single Number return to TwilioNumberController

Hey guys so far we have a GET all for Numbers which is great but I need a GET /id which is a method to fetch the DTO for one number based on passing through the ID.

Hit me up if you need more info if you are picking this issue up.

Cheers
John

Rebrand the terminology in the app

Remove Twilio keyword

We need to rebrand the application so it could in theory be used by any SMS provider, the underlying structure will support plugging another implementation in.

However this branding task is to go through the code and rebrand any Twilio related nomenclature to something more generic.

**[Story] Frontend**

  • research and choose front end
  • admin UI with dashboard (reporting)
  • admin section to create new Contacts
  • initiate call tree function

Add paging for BcpEvent and ContactStats

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Adding a Stats Service

  • Create Stats Controller/Service
  • Establish which objects to send back
  • Collate all statistical objects into single DTO

Scheduled events

Currently when we initiate an event it will commence immediately upon starting the event.

We wish to explore functionality and options that we could for example schedule an event to happen at a certain time and then have the application wait and run a job when the event time is reached

  • UI changes
  • Backend changes

[Task] Calls initiation

  1. CallTree service:

    • trigger calls
    • store information about calls
    • calculate stats
    • CallTree controller to expose apis

Test card

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Test on ContactServiceImpl

Currently we have only one integration test on this service.

It would be nice to add one test to verify the correct order direction of the contacts list. This can be achieved either adding one or two tests in ContactServiceImplIT (so the integration tests class), or creating unit tests on a separate class with mockito, mocking the contact repository

Create Contact MS

Create Contact microservice, offering CRUD operation.
3-tier application (controller, service, repository)

[Story] Update Inbound SMS For Events

We need to change the design for entries in Outbound SMS. When we start a new event, we need to set the twilio number to not available. Then for each number we send a message to, an entry should be created in InboundSMS with an SMS status of 'Sent'.
When receiving messages, we should update the entries in InboundSMS to 'Received'. Once updated we should check if all messages in that event have been received and if so, close the event and set the twilio number as available.

  • Create InboundSMS entries for new events
  • Update InboundSMS for each message received
  • Check if any outstanding numbers for event
  • Close event
  • Make TwilioNumber available
  • Add a hell of a lot of tests

Stats controller encoding return

When using the stats controller on the following url - /api/v1/stats/total we have noticed the messages getting returned from Twilio includes the weird encoding issues.

This needs to be fixed for 1.1

image

**[Story] Database Integration**

Currently we are running off H2 storage it would be good to look into having a persistent datastore.

  • Select and research DB options
  • Implement DB into application

We have looked into some lightweight options so far:

*MariaDB
*PostGreSQL
*MySql

This story is to cover off the selection of a DB and implement this into the project. Ideally I think we want to package this application with a DB ready to host and use with the App

**[Story] Twilio integration**

  • Establish first connection to Twilio
  • Send BCP message to everyone / particular roles only
  • Receive incoming messages from users
  • Reply to incoming messages
  • Save in DB the incoming messages (this will facilitate the following task)
  • Create BCP Events to be associated with sms
  • Link events to incoming and outgoing sms
  • Calculate duration of BCP calls

General Improvements

Feel free to have a look around the codebase and if you see anything that could be improved please reach out with a comment, if we like the idea we will open an issue and assign you it and you can work on it #hacktoberfest

Add Frontend unit test coverage

At the minute we have good coverage on our back end code but very poor coverage on our front end.

Please feel free to implement some unit tests for the front end code where you see fit

Adding Unit test coverage to the Java/Kotlin code

We are always looking to increase the test coverage in our app and want to get to a high coverage. Please feel free to add more unit tests to the ones already existing and following the same style please.

Fund dependencies

Today we have 109 vulnerabilities in our front-end,
Screen Shot 2020-10-30 at 13 31 05

We need to fund theirs and evaluate if this broke our components.

Business Domain Diagram

Decompose CORE module into multiple microservices.
Identify common behaviour in the models we have and define boundaries between them.

**[Story] Entities**

  • Enable H2 console
  • Create bootstrap class to populate H2 with dummy data
  • Create repository
  • Create Contact entity
  • Create ContacDTO
  • Dto to Entity mapper

Securing application

OAuth2 ?

Inside the React Admin powered front end we currently have an empty implementation for security, we need to assess the options available and implement something... this may include the need for an authentication API call or perhaps we use something 'off the shelf?' we would appreciate any input on this

Stats controller - High level Dashboard Stats

Hey guys if we have time it would be great to have a Dashboard stats api call.

This call wuld give us mega high level stats that cold be shown on a dashboard, things like number of events, active, inactive, total number of contacts, total twilio numbers etc etc.

High level info that we can put on a dashboard overview.

We have some good stats endpoints just now but these are very specific to events.

Cheers
John

Event stats page (UI)

From the event page, make each row clickable to drill down into full details about the selected event.

Currently we have the event details and information all stored in the database, we do have some endpoints that will expose this information.. however the event overview page needs to be modified so that when we select an active event it will call the relevant api to retrieve the stats and will render them on a custom component following the material design incorporated in the site

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.