IVR录音流程

来源:互联网 发布:www.3322软件下载 编辑:程序博客网 时间:2024/04/29 20:21
         流程说明:**之录音子流程
    流程名称:Funp_RecordVoice()
    版  本:Release V1.0
    编写日期:2004-05-29
    修改日期:2004-05-29
    流程作者:Oseee
***************************************************/

/**************************************************
子流程输入输出参数说明:
   输入:
      _Field1: 接受方手机号码
   输出:
      _Field1: 录音生成的语音文件(包含路径)
      0:表示成功
      1:表示失败
***************************************************/

/***************************************************
寄存器使用说明:
   SR10:  主叫用户手机号码
   SR11:  语音文件路径 
    SR12:  带路径的语音文件名
    SR13:  接受方手机号码
  
   SR14:  录音文件暂时存储的变量
   SR20:  语音文件路径暂时过渡变量
   SR50:  暂存时间字符串
   SR60:  录音文件路径
***************************************************/

#include Funp_DateTimeToString         //当前日期转化为连续字符串子流程          

#define SUCCESS         0      //子流程成功完成
#define EXCEPTION         1      //子流程出现异常


TRACE ON

FUNCTION Funp_RecordVoice
{
   BEGIN:
       EvtStart[0]
          SAssign(SR13,_Field1)
            SAssign(SR10,_CallingNumber)
            ReadStrFromINI(_INIFileName,"PATH.LeaveWord",SR60)
            ReadStrFromINI(_INIFileName,"PATH.SYSTEM",SR11)
            -> stPlayTipVoice
    
    stPlayTipVoice:
         SAssign(SR12,SR11)
      SAdd(SR12,"15.vox")                 
      PlayFile(SR12,"?")
       EvtReturn[0] -> stGenerateFileName
       EvtReturn[3] -> stGenerateFileName
       EvtReturn[-1] -> stRecordFailure
       
    stGenerateFileName:      //生成录音文件名
       Funp_DateTimeToString()
       EvtReturn[-1]
          SAssign(SR50,_Field1)
          -> stStartRecord
       
    stStartRecord:        //开始录音
      SAssign(SR20,SR60)
      SAdd(SR20,SR50)
      SAdd(SR20,"_")
      SAdd(SR20,SR10)
      SAdd(SR20,"TO")
      SAdd(SR20,SR13)
      SAdd(SR20,".vox")
      SAssign(SR14,SR20)
      RecordVoice(SR14,-1,"?")
      EvtReturn[0] -> stPlaySureRecordVoice         
      EvtReturn[6] -> stRecordFailure
      EvtReturn[7] -> stRecordFailure
      EvtReturn[-1] -> stRecordFailure
   
   stPlaySureRecordVoice:    
      ClearMixTone()
      
       SAssign(SR12,SR11)
       SAdd(SR12,"16_1.vox")
       AddFileMixTone(SR12)
       
       AddFileMixTone(SR14)

       PlayMixTone("?",1)
       EvtReturn[0] -> stPlayOkOrAgain
       EvtReturn[3] -> stPlayOkOrAgain
       EvtReturn[-1] -> stRecordFailure
       
   stPlayOkOrAgain:    //播放确定录音或重录
       SAssign(SR12,SR11)
       SAdd(SR12,"16_2.vox")
       PlayFile(SR12,"?")
       EvtReturn[0] -> stGetSureDigit
       EvtReturn[3] -> stGetSureDigit
       EvtReturn[-1] -> stRecordFailure
       
   stGetSureDigit:       //获取按键
       GetDigits(1,10,"")
       EvtReturn[0] -> stCheckSureDigitButton
       EvtReturn[4] -> stPlayOkOrAgain
       EvtReturn[-1] -> stRecordFailure
       
   stCheckSureDigitButton:    
       CheckPushedButton()
       EvtReturn[1]
         SAssign(_Field1,SR14)
         IAssign(_result,SUCCESS)
         -> END
       EvtReturn[2] -> stDeleteRecordVox
       EvtReturn[-1] -> stPlayOkOrAgain
       
   stDeleteRecordVox:      //检测文件是否存在
      AccessFile(SR14)
      EvtReturn[0] -> stDeleteRecordVoxReal
      EvtReturn[-1]
         SAssign(_Field1,"")
         IAssign(_result,EXCEPTION)
         -> END
   
   stDeleteRecordVoxReal:    //删除文件
       RemoveFile(SR14)
       EvtReturn[0] -> stPlayTipVoice
       EvtReturn[-1] -> stRecordFailure
       
   stRecordFailure:      //用户录音出现错误
      SAssign(SR12,SR11)
      SAdd(SR12,"Syb.vox")
      PlayFile(SR12,"?")
      EvtReturn[0] -> stRecordFileIsExist
      EvtReturn[-1]
         SAssign(_Field1,"")
         IAssign(_result,EXCEPTION)
         -> END
   
   stRecordFileIsExist:    //录音失败后,录音文件是否存在
      AccessFile(SR14)
      EvtReturn[0] -> stRemoveRecordFile
      EvtReturn[-1]
         SAssign(_Field1,"")
         IAssign(_result,EXCEPTION)
         -> END
   
   stRemoveRecordFile:     //删除录音文件
      RemoveFile(SR14)
      EvtReturn[-1]
         SAssign(_Field1,"")
         IAssign(_result,EXCEPTION)
         -> END
原创粉丝点击