Source: response/responseManager.js

/**
 * @author Sloan Seaman 
 * @copyright 2016 and on
 * @version .1
 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
 */

/**
 * Interface for classes that can manage responses
 *
 * @interface ResponseManager
 */

/**
 * Returns the specified response by looking through the defined providers.
 *
 * Optimized to only look once and if not found, will never look through the provider again.  This prevents
 * adding responses to the provider at a later time, but improves repeated lookup performance
 *
 * @function
 * @name  ResponseManager#get
 * @param  {String} responseId The id of the response
 * @return {Response} The response.  If not found, returns null
 */

/**
 * Helper method that retrieves and renders a response all in one call
 * 
 * @param  {String} responseId The id of the response
 * @param  {Object.<String,Object>} valuesMap The values to use when formatting the response
 * @return {String} The rendered string to send back to Alexa
 */

/**
 * Helper method to do an ask similar to the alexa api
 *
 * @function
 * @name  ResponseManager#ask
 * @param  {String} msg      The message to ask to the user
 * @param  {String} reprompt THe reprompt message
 * @return {String} The rendered string to send back to Alexa
 */

/**
 * Helper method to do an ask similar to the alexa api
 *
 * @function
 * @name  ResponseManager#tell
 * @param  {String} msg      The message to tell to the user
 * @return {String} The rendered string to send back to Alexa
 */

/**
 * Returns the list of registers  providers
 * 
 * @function
 * @name  ResponseManager#getRegisteredProviders
 * @return {Array.Provider} All of the registered providers
 */

/**
 * Adds providers
 *
 * @function
 * @name  ResponseManager#registerProvider
 * @param {Array.Provider} provider  Providers to use.  Can be an individual provider or an array
 */