IS480 Team wiki: 2010T1 The Green Reapers: Architecture

From IS480
Jump to navigation Jump to search

Back to Home Page


Intellicrops Architecture.png

Skype.png Phone interface for farmers to dial in. Skype was chosen because it has good API support, and a Skype-in number.
Interchangeable to other phone systems (e,g. Asterix) in the future to support phone number dial in.
Wcfservice.png Web service which handles call session, input validation, menu depth processing, and content retrieval. WCF Service was chosen for fast development and deployability onto current windows server
Msft speech tech.png Microsoft text to speech engine to generate wav files which comes with windows server
Wordpress.png Using wordpress content tagging structure as our CMS as it has a great tagging structure with plugins to support dial-in from IntelliCrops website.
Jquery.png AJAX user interface & JSON parsing
Jqplot.png Generating charts of different types (e,g. Line, Pie, Bubble, Clustered Column) on the fly

Initial Concept

Initial IVR Menu Design

Initial design1.png

Issues with this design:

  • Too many tags, how can we categorize the tags and have the same effect?
  • XML design ties too much processing at Skype's end, how can we remove it?

Initial Architecture

Initial architecture.png

Information Architecture

Interactive Voice Response System: Behind the Scenes

Step 1

Initial state before interaction begins

Step 2

Skype receives a call from a farmer

Step 3

  • Skype initiates a call to IntelliCrops menu web service
  • IntelliCrops generates a call menu for Skype, and stores it in memory, thereby increasing performance of interaction
  • Skype continuously interacts with Menu web service to validate phone inputs, and goes through the menu depth
  • When the menu depth has reached an "end point", the Web service will point Skype to call the Data web service to retrieve the content
  • Step 4

    User presses 1# to trigger the "end point", to retrieve the content

    Step 5

  • At the "end point", IntelliCrops internally redirects Menu web service, to Data web service
  • IntelliCrops will generate "tagging matches" to find articles in wordpress which have the same tags, or at least the same tags. The Searching algorithm will depend on the Menu type like AND, OR, RECORD, FACTSHEET
  • IntelliCrops will do a Text to Speech based on article content, using Microsoft Speech Technologies
  • The generated wav file will be stored and converted into Skype's format. A location of the generated wav file would also be returned.

  • Interactive Voice Response System: Menu Configuration And Types

    IVR Menu Type Descrpition
    AND Diagnostic matching, where articles with the exact tags match the input tags will be found
    OR Search matching, where articles with at least the input tags will be found
    RECORD This will configure input menus, to have recording functionality.

    How does it work?

  • When a user dials in to contribute to IntelliCrops, he is given options (e,g rice, wheat) to "tag" his own recording
  • The tags are configured by the Administrator when creating menu. Tags are retrieved from wordpress
  • Recordings will be submitted to IntelliCrops for processing
  • FACTSHEET This will configure the input menus, to have "factsheet" functionalities for knowledge retrieval.

    How does it work?

  • FACTSHEET has 2 question menu depth, unlike other forms of menu, to assist the farmer in knowledge retrieval based on our partner (IRRI)'s needs.
  • For example, it allows users to first choose an option (which is factsheet). It will then ask another question, such as "What do you want to know? Press 1 for What is Organic Rice, Press 2 for How do you grow organic rice ....."

  • Knowledge Navigator: Behind the Scenes

    Knowledge navigator.png The knowledge navigator is a platform for the IVR to be on the web. This allows users to have the same content and functionality with IVR, powered by the same architecture

    Data Analytics: Behind the Scenes

    Step 1

    Anayltics step1.png
    Initial chart creation page

    Step 2

    Anayltics step2.png

    How does it work?

  • When jQuery detects a change in the drop down list, it will make a call to PHP, generating JSON objects to be processed back by jQuery
  • Therefore, generating a preview table
  • Anayltics step3.png Showing a preview table when the user selects a source table
    Anayltics step4.png Anayltics step5.png

    How can we help the user?

  • Explaining to the user how the data will be grouped and generated
  • Providing options to select the columns to be sub-grouped, grouped, or use as values
  • Step 3

    Anayltics step6.png

    How is the chart generated work?

  • PHP groups data into JSON, and pass it to JQuery
  • JQuery parses the JSON objects into jqPlot.
  • jqPlot renders chart as shown
  • Anayltics step7.png Viewing a chart relies on the same architecture, allowing us to reuse the code

    Improvements after Usability & Functional testing

    IVR progress
    Improvements of IntelliCrops IVR
    • Added the ability to include pre-recorded voices, together with synthesized voices.
    • Knowlege Navigator's menu to specifically browse for factsheet information rather than searching via keywords
    • IVR menu wizard architecture was revamped to go inline with the web layout. The IVR phone menu is now a mirror of the web menu configuration, giving administrators a WYSIWYG feel.
    • Included information for the Rice Fact Sheets from IRRI's Cerial Knowledge Bank (CKB) to be able to be retrieved by our IVR system.
    Data Analytics progress
    Improvements of Data Analytics
    • Data analytics feature list had to be expanded, giving users more freedom over the selection of charting features
    CMS progress
    Improvements of IntelliCrops CMS
    • Streamlined and cleansed data from CKB so that the data retrieved is concise and proper.
    • Made changes to the access controls of the CMS (not everyone can post information)

    Overall benefits

    bug tracking.
    Our bug tracking over each iteration clearly shows the number of bugs dwindling down from iterations 5,6 & 7, even after we improved IntelliCrops' capabilities after usability & functional testing

    Advantages of our architecture
  • Architecture design is stable.
  • Integration with various technologies, and clear separation of the role each technology plays. Clear separation reduces the reliance of a single technology provider in the event we found a better (for e.g, text to speech engine like espeak which is used by Google)
  • Addition of features whether in the type of sound, the type of input, or content that will be synthesized (if the content is too lengthy) or different phone systems in the future has been thought of which makes the code extremely reusable
  • Lots of initial concepts and planning were done in Iteration 2, with Iteration 3 and 4 being used for development of it. Therefore reducing the amount of bugs that will arise when requirement changes come in Iteration 5,6 & 7 after functional & usability testing.

  • What are the addition of features, changes and UAT feedback?
  • View our UAT action plan
  • For example: When users did not like the text to speech voice, we added the ability to allow custom human voices in place of text to speech for some.
  • Custom voice was supported in Iteration 7.

  • How did it affect our architecture? Why?
  • Architecture design is stable.
  • We have properly segmented the Middleware (WCF Service), from the Front-end (Skype). Editing the middleware to support the swap text to speech process into custom voice is made easily. This process is transparent to Skype.

  • Questions that we asked ourselves to get to our architecture
  • What did we want to incorporate or see in the future?
  • What cool technologies were used that will help to improve IntelliCrops in the future?
  • How can we not be reliant on Skype? and have other ways to distribute the same content
  • What good CMS are out there, can support our "tagging" idea?
  • How can we clearly separate and replace all proprietary technology in the future, to replace with open source ones?
  • How can we support the users to create complex charts easily?

  • Why not change all the menus to human voice?
  • One of the main reasons why IntelliCrops was designed in this way was to assist people around the world to maintain the system easily. Therefore Text-To-Speech was used. (Look at our motivation)
  • Although we cannot ignore the fact that human voice is better, text-to-speech technologies will get there sooner or later as the technology matures.

  • Can we support different languages in the future?
  • We have explored espeak as the next text-to-speech engine for multi-language support. Language translation is necessary for it to work.

  • Back to Home Page