ivr

/*************************************************************
北京高阳圣思园信息技术有限公司IVR业务:
        流程说明:公司介绍子流程
    发布版本:Version 1.0.0 
         编写日期:2005-05-27
         修改日期:2006-03-02
         流程作者:Hisunsray
    联系方式:Tel - (010)84505155-531
                  E_Mail :zhaojt@hisunsray.com
    版权归属:北京高阳圣思园信息技术有限公司
*************************************************************/

/*************************************************************
主流程修改记录:
        2005-05-27:编制公司介绍子流程
        2006-03-02:修改流程为点歌台,增加上一条,下一条,重听操作
*************************************************************/

/*************************************************************
寄存器使用说明:
         SR10:   播放内容
         SR0:  系统提示音路径
         SR30: 播放的提示音
         SR50: 内容语音路径
         SR51: 播放的内容语音
         
*************************************************************/
/************************************************************
子流程输入输出参数说明:
    输入:
        无
        
    输出:    
        _Field1:点送的内容
    返回值:
        0:表示成功
        1:表示失败       
*************************************************************/
/*****************宏定义*************************************/
#define SUCCESS            0
#define EXCEPTION        1
/************************************************************/




TRACE ON

FUNCTION Func_key1
{

  /**
  开始
  */
    BEGIN:
        EvtStart[0]
        ReadStrFromINI(_INIFileName,"PATH.key1",SR0)          /*z:\0236\125901234\1\*/
        ReadStrFromINI(_INIFileName,"PATH.key1Content",SR50) /*z:\0236\125901234\1\content\*/
        ->stTipVoice                //跳转到函数
        
    /**
  播放欢迎语音
  */
    stTipVoice:
        SAssign(SR30,SR0)                     //把路径赋值给SR30
        SAdd(SR30,"Tip1.vox")                       //收听过程中按1键听下一条,2键听上一条,3键重听,按*键返回主菜单
        PlayFile(SR30,"?")                     //"?"代表按任意键打断,""表示不打断 
        
        //未打断
        EvtReturn[0]                
            SAssign(SR1,"song")                  //歌曲名称的共有名song
              SAssign(SR2,"1")                   //歌曲名称的编号
            -> stPlayContent
        
        //打断
        EvtReturn[3]                
            SAssign(SR1,"song")
              SAssign(SR2,"1")
            -> stPlayContent
            
        //异常    
        EvtReturn[-1] -> END                  //异常
    
    /**
  根据变量播放内容语音
  */
    stPlayContent:
        SAssign(SR51,SR50)                    //*z:\0236\125901234\1\content\*/
        SAdd(SR51,SR1)                              //z:\0236\125901234\1\content\song
        SAdd(SR51,SR2)                              //z:\0236\125901234\1\content\song1    SR2为计数变量,下一首则加,上一首则减
        SAdd(SR51,".vox")                         //播放第一首song1.vox
        PlayFile(SR51,"123#*")                    //z:\0236\125901234\1\content\song1.vox
        EvtReturn[0] -> stGetDigits           //等待用户按键
        EvtReturn[3] -> stGetDigits
        EvtReturn[-1] -> END
                
    stGetDigits:
        GetDigits(1,3,"")                          //获取用户按键,3秒超时
        EvtReturn[0]
            //SAssign(SR10,_EventData)
            -> stCheckButton                    //如果正常获取,则检查按键
        EvtReturn[4] -> stPlayContent         //超时重放
        EvtReturn[-1] -> END                  //返回
    
    stCheckButton:                 
        CheckPushedButton()                   //检查用户按键
        EvtReturn[1] -> stNext                //按键1
        EvtReturn[2] -> stBefore              //按键2
        EvtReturn[3] -> stPlayContent         //按键3
        EvtReturn[10] -> END                  //按键#
        EvtReturn[11] -> END                  //按键*
        EvtReturn[-1] -> stPlayContent        //其他按键
        
    stNext:                                       //听下一条
        StoI(IR2,SR2)                          //类型转换
        IAdd(IR2,1)                            //序号加1
        IEqual(IR2,10)                         //序号与10比较
        EvtReturn[2]                           //参数1大于参数2 
            SAssign(SR2,"1")
            ->stPlayContent
        EvtReturn[-1]
            ItoS(SR2,IR2)
              ->stPlayContent
          
    stBefore:                    //听上一条
        StoI(IR2,SR2)
        ISub(IR2,1)                          //序号减1
        IEqual(IR2,1)                        //序号与1比较
        EvtReturn[1]                         //参数1小于参数2
            SAssign(SR2,"10")
            ->stPlayContent
        EvtReturn[-1]                        //其他
            ItoS(SR2,IR2)
              ->stPlayContent
          
/********************************************随机播放内容音*****************************************************/

    stRandPlay:
        IntRand(IR2,11) //IR2中的随机数为0至10中的任意一个
        IEqual(IR2,0)
        EvtReturn[0]
            IAdd(IR2,1)
            ItoS(SR2,IR2)
            ->stPlayContent
        EvtReturn[-1]
            ItoS(SR2,IR2)
          ->stPlayContent

            
}        
    

 

posted @ 2014-10-16 16:57  meetrice  阅读(410)  评论(0编辑  收藏  举报