Challenge Overview

Challenge Overview


In previous challenges, we have implemented two Azure function apps and one backend rest api, as well as UI.

When testing with real data, we notice that webhook function is slow to response which causes its trigger, speech service, retries several times.

According to Azure functions best practices https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid-long-running-functions we want to use a queue to allow fast response to speech service callback and handle everything asynchronised with queue.

In this challenge, we are going to: 

- create new speech-webhook-function, which sends HTTP request to Azure storage queue
- rename webhook-function to queue-consumer-function, which reads messages from above queue, and handles them
- update readme file

Project Background


This project objective is to analyze customer service center call recordings for sentiment analysis. The main tasks that will be covered in the project are as follows.

- The call recording file and metadata available will be used to transcribe the audio
- Perform sentiment analysis on the corpus to extract key topic / positive or negative interaction / isolate portions of conversation by factors.
- Finally visualize the output along with filtering and aggregation.

Technology Stack


- Java 8
- Spring Boot 2.1.x
- [Azure SDK for Java](https://docs.microsoft.com/en-us/java/api/overview/azure/cognitiveservices/client?view=azure-java-stable) (Speech and Text Analytics)
- Azure Blob Storage
- MSSQL (Azure SQL Database)

Challenge Assets


- codebase links
- high level architecture graphs

Individual requirements


- (major) create new speech-webhook-function, which sends HTTP request to Azure storage queue
    Create a new function called speech-webhook-function in the repo. This function simply writes request body into storage queue. The queue should be created in the same storage account as other blobs (for audio and metadata files).
    https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue#output---java-example here is an example, trigged by http and write to queue

- (major) rename webhook-function to queue-consumer-function, which reads message from above queue, and handles it
    The function reads message from queue, and do all logic in old webhook function. We should be able to test this function locally. Unit tests need to be updated and pass.
    https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue#trigger---java-example here is a good start for this function
    
- (major) update readme file
    - Please go through readme file, make sure everyone one following it should be able to deploy all services successfully.
    - All other parts, such as Verification and Local run should be updated as well.

Important Notes

- For speech-webhook-function, no need to add tests and no need to run it locally ( good to have )
- Updating readme files is major requirement in this challenge, if they are not well updated, score will be removed from both major requirement and deployment guide.
- Test coverage will not be judged in this challenge, but please keep existing unit tests if they are still useful.
- Please use docker-compose file in backend api to start database locally.
- For verification, reviewers will follow readme files in two repos to deploy, upload given wav file in the forum and check result.

Final Submission Guidelines

- git patch files

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30102635