VXIplatform.h
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:8k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. /****************License************************************************
  2.  * Vocalocity OpenVXI
  3.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  18.  * registered trademarks of Vocalocity, Inc. 
  19.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  20.  * by Vocalocity.
  21.  ***********************************************************************/
  22. #ifndef _VXIPLATFORM_H
  23. #define _VXIPLATFORM_H
  24. #include "VXItypes.h"                  /* For VXIchar definition */
  25. #include "VXIvalue.h"                  /* For VXIMap and VXIMap */
  26. #include "VXIheaderPrefix.h"
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. /*
  31. ** ==================================================
  32. ** VXIplatform functions and definitions
  33. ** ==================================================
  34. */
  35.  /**
  36.   * @name VXIplatform
  37.   * @memo VoiceXML platform interface
  38.   * @version 1.0
  39.   * @doc
  40.   * Interface that supports multiple system operator user interfaces 
  41.   * by initializing the OpenVXI browser components and coordinating
  42.   * them to service calls.
  43.   */
  44. /*@{*/
  45.  /**
  46.   * Result codes for the platform functions
  47.   *
  48.   * Result codes less then zero are severe errors (likely to be
  49.   * platform faults), those greater then zero are warnings (likely to
  50.   * be application issues) 
  51.   */
  52. typedef enum VXIplatformResult {
  53.   /* Fatal error, shutdown          */
  54.   VXIplatform_RESULT_FATAL_ERROR         = -100,
  55.   /* Platform already initialized   */
  56.   VXIplatform_RESULT_ALREADY_INITIALIZED =  -60,
  57.   /* Platform not initialized       */
  58.   VXIplatform_RESULT_NOT_INITIALIZED     =  -59,
  59.   /* VXIinet interface error        */
  60.   VXIplatform_RESULT_INET_ERROR          =  -58,
  61.   /* VXIinterpreter interface error */
  62.   VXIplatform_RESULT_INTERPRETER_ERROR   =  -57,
  63.   /* VXIjsi interface error         */
  64.   VXIplatform_RESULT_JSI_ERROR           =  -56,
  65.   /* VXIlog interface error         */
  66.   VXIplatform_RESULT_LOG_ERROR           =  -55,
  67.   /* VXIprompt interface error      */
  68.   VXIplatform_RESULT_PROMPT_ERROR        =  -54,
  69.   /* VXIrec interface error         */
  70.   VXIplatform_RESULT_REC_ERROR           =  -53,
  71.   /* VXItel interface error         */
  72.   VXIplatform_RESULT_TEL_ERROR           =  -52,
  73.   /* VXItrd interface error         */
  74.   VXIplatform_RESULT_TRD_ERROR           =  -51,
  75.   /* VXIvalue interface error       */
  76.   VXIplatform_RESULT_VALUE_ERROR         =  -50,
  77.   /* I/O error                      */
  78.   VXIplatform_RESULT_IO_ERROR            =   -8,
  79.   /* Out of memory                  */
  80.   VXIplatform_RESULT_OUT_OF_MEMORY       =   -7,
  81.   /* System error, out of service   */
  82.   VXIplatform_RESULT_SYSTEM_ERROR        =   -6,
  83.   /* Errors from platform services  */
  84.   VXIplatform_RESULT_PLATFORM_ERROR      =   -5,
  85.   /* Return buffer too small        */
  86.   VXIplatform_RESULT_BUFFER_TOO_SMALL    =   -4,
  87.   /* Property name is not valid     */
  88.   VXIplatform_RESULT_INVALID_PROP_NAME   =   -3,
  89.   /* Property value is not valid    */
  90.   VXIplatform_RESULT_INVALID_PROP_VALUE  =   -2,
  91.   /* Invalid function argument      */
  92.   VXIplatform_RESULT_INVALID_ARGUMENT    =   -1,
  93.   /* Success                        */
  94.   VXIplatform_RESULT_SUCCESS             =    0,
  95.   /* Normal failure, nothing logged */
  96.   VXIplatform_RESULT_FAILURE             =    1,
  97.   /* Non-fatal non-specific error   */
  98.   VXIplatform_RESULT_NON_FATAL_ERROR     =    2,
  99.   /* Operation is not supported     */
  100.   VXIplatform_RESULT_UNSUPPORTED         =  100
  101. } VXIplatformResult;
  102. /* VXIplatform is an opaque data structure whose actual definition depends on
  103.  * the specific platform details.  Its actual definition is only required in
  104.  * the actual implementations of the functions defined below.  */
  105. struct VXIplatform;
  106. typedef struct VXIplatform VXIplatform;
  107. /**
  108.  * Performs initialization of the platform layer.
  109.  *
  110.  * @param args Configuration arguments. Implementation dependant.
  111.  * @param nbChannels The address of a pre-allocated VXIunsigned that is
  112.  *                   initialized with the number of available channels.
  113.  *
  114.  * @return  VXIplatform_SUCCES: success.
  115.  *
  116.  *          VXIplatform_INVALID_ARGUMENT: the availableChannels is NULL or
  117.  *          args does not contain valid configuration information.
  118.  *
  119.  *          VXIplatform_ALREADY_INITIALIZED: the platform already had been
  120.  *          successfully initialized.
  121.  *
  122.  *          VXIplatform_TEL_ERROR: Cannot initialize the VXItel layer.
  123.  *          VXIplatform_PROMPT_ERROR: Cannot initialize the VXIprompt layer.
  124.  *          VXIplatform_REC_ERROR: Cannot initialize the VXIrec layer.
  125.  *
  126.  **/
  127. VXIplatformResult VXIplatformInit(VXIMap *args, VXIunsigned *nbChannels);
  128. /**
  129.  * Performs final cleanup of the platform layer.
  130.  *
  131.  * @return VXIplatform_SUCCESS: success.
  132.  *         VXIplatform_NOT_INITIALIZED: layer not currently initialized.
  133.  **/
  134. VXIplatformResult VXIplatformShutdown(void);
  135. /**
  136.  * Creates a VXIplatform object for the specified channel number.  This
  137.  * creates the VXItel, VXIprompt and VXIrec objects associated with this
  138.  * channel.
  139.  *
  140.  * @param channelNum[in] The channel number of the platform to be created.
  141.  * @param args[in] Configuration arguments. Implementation dependant.
  142.  * @param platform[out] A pointer to the platform to be allocated.
  143.  **/
  144. VXIplatformResult VXIplatformCreateResources(VXIunsigned channelNum,
  145.      VXIMap *args,
  146.      VXIplatform **platform);
  147. /**
  148.  * Destroys the VXIplatform and any associated resources.
  149.  * Destroys the VXItel, VXIprompt and VXIrec objects associated with this
  150.  * channel.
  151.  **/
  152. VXIplatformResult VXIplatformDestroyResources(VXIplatform **platform);
  153. /**
  154.  * Enables the hardware to wait for call. Will return when the
  155.  * hardware is enabled.  Must be called before WaitForCall.
  156.  **/
  157. VXIplatformResult VXIplatformEnableCall(VXIplatform *platform);
  158. /**
  159.  * Waits for a call on the specified channel and answers the call.
  160.  **/
  161. VXIplatformResult VXIplatformWaitForCall(VXIplatform *platform);
  162. /**
  163.  * Starts the processing of the root document associated with the
  164.  * channel.
  165.  * @param url    [IN] Name of the VoiceXML document to fetch and 
  166.  *                  execute, may be a URL or a platform dependant path.
  167.  *                  See the Open( ) method in VXIinet.h for details
  168.  *                  about supported names, however for URLs this
  169.  *                  must always be an absolute URL and any query arguments
  170.  *                  must be embedded.
  171.  * @param sessionArgs [IN] Any arguments to be passed to the VXI.  Some of
  172.  *                  these, such as ANI, DNIS, etc. as required by VXML, but
  173.  *                  anything may be passed in.  These values are available
  174.  *                  through the session variable in ECMA script.
  175.  * @param result  [OUT] (Optional, pass NULL if not desired.) Return
  176.  *                  value for the VoiceXML document (from <exit/>), this
  177.  *                  is allocated on success and when there is an
  178.  *                  exit value (a NULL pointer is returned otherwise),
  179.  *                  the caller is responsible for destroying the returned
  180.  *                  value by calling VXIValueDestroy( ). If
  181.  *                  VXIinterp_RESULT_UNCAUGHT_FATAL_EVENT is returned,
  182.  *                  this will be a VXIString that provides the name
  183.  *                  of the VoiceXML event that caused the interpreter
  184.  *                  to exit.
  185.  *
  186.  * @return         VXIplatformResult
  187.  **/
  188. VXIplatformResult VXIplatformProcessDocument(const VXIchar *url,
  189.      VXIchar **sessionArgScript,
  190.      VXIValue **result,
  191.      VXIplatform *platform);
  192. /*@}*/
  193. #ifdef __cplusplus
  194. }
  195. #endif
  196. #include "VXIheaderSuffix.h"
  197. #endif  /* include guard */