⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtestview.cpp

📁 处理各种电话投诉的危机情况
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			break;

		/******播放提示语音文件时对用户挂机、按键进行相应处理,无操作时重复播放******/
		case WS_PLAY :
			/*
				Can't call TW_CheckSignal(...) here
			*/
			//当用户挂机时
			if (TW_MonitorBusy (i, SIG_BUSY1, 5) || TW_MonitorBusy (i, SIG_BUSY2, 5))
			{
				sprintf (ChMess[i], "通道%2d (外线) : 在播放提示音期间用户挂机.", i);
				ChPaint (i);
				TW_StopPlayFile (i);
				TW_StopPlayFile(3);     //放音模块放音
				TW_HangUpCtrl (i);
				CS[i] = WS_HANGUP;
			}
		
			//当用户有按键时
			else if((dtmf=TW_GetDTMFChar (i)) != -1)
			{
				TW_StopPlayFile(i);
				TW_StopPlayFile(3);
			/*************在初使状态时按键***************/
				if(inputchar[i]==START)
				{
					switch	(dtmf)//根据按键不同转入不同功能
					{
						case  '1' ://进入投诉功能
						inputchar[i]=APPEAL;
						strcpy(filename[i] , chooseappeal);
						break;

						case  '2' ://进入留言功能
						inputchar[i]=LEAVEWORD;
						strcpy(filename[i] , leaveword);
						break;

						case  '3' ://进入查询功能
						inputchar[i]=INQUIRE;
						strcpy(filename[i] , chooseinf);
						break;

						case  '0' ://进入领导功能
						inputchar[i]=PARTICULAR;
						TW_FlushDTMF(i);
						strcpy(filename[i] , particular);
						break;

						default:
						strcpy(filename[i] , welcomfile);
						break;
					}
					TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
				     
				    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;  //放音模块开始播放
				}
				/**************在播放选择投诉或留言提示过程中按键***********/
				else if( inputchar[i] == APPEAL || inputchar[i] == LEAVEWORD)
				{
					switch (dtmf)
					{
					case '1':
					case '2':
					case '3':
					case '4':
						if(inputchar[i]==LEAVEWORD) dtmf='0';
						filenamestr=GetFileName(dtmf,i);
						strcpy(filename[i],filenamestr);
   						fail=TW_StartRecordFile( i , filename[i] , 0 , LONG_MAX);
                        if( fail==-1)
						{
							MessageBox("初始录音失败!","错误",MB_OK|MB_ICONSTOP);
							strcpy(filename[i],welcomfile);
							TW_StartPlayFile(i,filename[i],0,LONG_MAX);
				            TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放
							CS[i]=WS_PLAY;
							inputchar[i]=START;
						
						}
						else			
						  CS[i]=WS_RECORD;
					 break;
					default:
						if(inputchar[i]==LEAVEWORD)
						{
						filenamestr=GetFileName('0',i);
						strcpy(filename[i],filenamestr);
						fail=TW_StartRecordFile(i,filename[i],0,LONG_MAX);
					    if (fail==-1) //录音失败
						{
							MessageBox("初始录音失败!","错误",MB_ICONQUESTION);
							strcpy(filename[i],welcomfile);
							TW_StartPlayFile(i,filename[i],0,LONG_MAX);
				            TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放
							CS[i]=WS_PLAY;                                    
							inputchar[i]=START;
						}
						else
						  CS[i]=WS_RECORD;
						}	
						else                             
						{
						strcpy(filename[i],welcomfile);
						inputchar[i]=START;
						TW_StartPlayFile( i , filename[i] , 0 , LONG_MAX);
				        TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块开始播放
						}
					break;
					}
				}
				else if(inputchar[i]==INQUIRE)//进入查询功能
				{
					switch (dtmf)
					{
					case '1':
						strcpy(filename[i],INFORMATION1);
						CS[i]=WS_PLAYINF;
						break;
					case '2':
						strcpy(filename[i],INFORMATION2);
						CS[i]=WS_PLAYINF;
						break;
					case '3':
						strcpy(filename[i],INFORMATION3);
						CS[i]=WS_PLAYINF;
						break;
					default:
						strcpy(filename[i],chooseinf);
						break;
					}
					TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
				    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;  //放音模块
					while(TW_PlayFileRest(i)>0&&TW_PlayFileRest(3)>0);
				}
				else if(inputchar[i]==PARTICULAR)	//进入特殊功能输入密码
				{
					passwordpointer=0;
					password[passwordpointer++]=dtmf;
				    TW_StartTimer(i,30);
					CS[i]=WS_WAITFORPASSWORD;
				}
				
				else if(inputchar[i]==CHOOSECOMMAND)//正在播放选择放音文件时有按键则停止放音
				{
					//将放音要求送入放音队列并等待
					Key=dtmf;
	                if((Key=='*'||Key=='#')&&!(m_pSet->IsEOF()))
						m_pSet->MoveLast();
					else if(!m_pSet->IsBOF())
						  m_pSet->MoveFirst();

				 
					CS[i]=WS_WAITFORFILE;
				

				}
				else if(inputchar[i]==RECORDINF)//正在选择录制信息文件时有按键则进入相应录音状态
				{
					switch (dtmf)
					{	
					 case '1':
						TW_StartRecordFile(i , INFORMATION1 , 0 , LONG_MAX);
						sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件1...",i);
						ChPaint(i);
						for(j=0;j<30000;j++) ;
						CS[i]=WS_RECORD;
						break;
				    case '2':
						TW_StartRecordFile(i , INFORMATION2 , 0 , LONG_MAX);
					    sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件2...",i);
						ChPaint(i);
						for(j=0;j<30000;j++);
						CS[i]=WS_RECORD;
						break;
					case '3':
						TW_StartRecordFile(i , INFORMATION3 , 0 , LONG_MAX);
						sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件3...",i);
						ChPaint(i);
						for(j=0;j<30000;j++);
						CS[i]=WS_RECORD;
						break;
                    default :
						sprintf(ChMess[i],"通道%2d (外线) : 选择录制文件的类型错!",i);
						ChPaint(i);
						strcpy(filename[i],welcomfile);
						TW_StartPlayFile(i,filename[i],0,LONG_MAX);
				        TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块
						CS[i]=WS_PLAY;
						inputchar[i]=START;
						break;
					}
					
				}
			}
				//当提示语音文件或选择放音文件播放完时
			else if (TW_PlayFileRest (i) <= 0 && TW_PlayFileRest (3) <= 0 ) 
			{
				sprintf (ChMess[i], "通道%2d (外线) : 提示音播放完成.", i);
				ChPaint (i);
				TW_StartPlayFile (i, filename[i] , 0 , LONG_MAX);

				TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
				sprintf (ChMess[i], "通道%2d (外线) : 重新开始播放提示音...", i);
				ChPaint (i);
			}
			else    //否则直到文件播放完
			{
				TW_PlayFileRest(i);
				TW_PlayFileRest(3);
			}
		break;

        case WS_PLAYINF:
			        	//正在播放信息文件时有按键则停止放音
				
					strcpy(filename[i],welcomfile);
					TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
				    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
			        CS[i]=WS_PLAY;
					inputchar[i]=START;
				   break;

		case WS_RECORD:
			if (TW_MonitorBusy (i, SIG_BUSY1, 5) || TW_MonitorBusy (i, SIG_BUSY2, 5))
			{
				sprintf (ChMess[i], "通道%2d (外线) : 在录音期间用户挂机.", i);
				ChPaint (i);
				
				TW_StopRecordFile (i);
				//若不为录制信息文件状态则将文件名放入队列
				if(inputchar[i]!=RECORDINF)
				{
					//将文件名放入队列
				}
				TW_HangUpCtrl (i);
				CS[i] = WS_HANGUP;
		
			}
			else if((dtmf=TW_GetDTMFChar (i)) != -1)
			{
			   
			    for(j=0;j<30000;j++) ;
				TW_StopRecordFile(i);
				//若不为录制信息文件状态则将文件名放入队列
				if(inputchar[i]!=RECORDINF)
				{
				//将文件名放入队列
                  
					sprintf(ChMess[i],"通道%d (外线) : 正在保存记录信息...",i);
					ChPaint(i);

                    m_pSet->MoveLast();
					RecordNum=m_pSet->m_RecordNum+1;
					if(!m_pSet->CanAppend())
						MessageBox("记录不能被添加到数据库中!","数据库打开错误",MB_ICONERROR);
                    else
					{
					m_pSet->AddNew();

					m_pSet->m_RecordNum=RecordNum;
                    m_pSet->m_FileName=filename[i];
					m_pSet->m_type=filename[i][15];
		            m_pSet->m_memo="";
					if(m_pSet->CanUpdate())
					 m_pSet->Update();
					else
						MessageBox("数据库不能被更新!","数据库错误",MB_ICONERROR);
                    
                    m_pSet->Requery(); 
					m_pSet->MoveLast();
					}
				  
			     if( filename[i][15]!='0')
				 { 
				   sprintf(ChMess[i],"通道%2d (外线) : 计算机进行自动投诉. ",i);
				   ChPaint(i);
				   TW_HangUpCtrl(i);
				  
				   CS[i]=WS_AUTODIAL;
				   DIAL[i]=WS_INITIALIZED;
				   strcpy(ad.FileName,filename[i]);
				   
				   switch(filename[i][15])
				   { case '1':                     //安装部门
				             if(bPhoneNum)
								 strcpy(ad.PhoneNumber,PhoneNum[0]); 
							 else
				                 strcpy(ad.PhoneNumber,"8637772");

							 break;
				     case '2':                 //抢修部门
						     if(bPhoneNum)
								 strcpy(ad.PhoneNumber ,PhoneNum[1]);
							 else
						         strcpy(ad.PhoneNumber,"8630031");

							 break;
					 case '3':                 //维护部门
						     if(bPhoneNum)
								  strcpy(ad.PhoneNumber ,PhoneNum[2]);
							 else
						          strcpy(ad.PhoneNumber,"999,669507");

							 break;
					 default:                  //咨询部门
						     sprintf(ChMess[i],"通道%2d (外线) : 选择投诉的类型错误,一律按内线处理!",i);
   							 ChPaint(i);
							 TW_HangUpCtrl (i);
							 TW_GenerateRing(2);
							 CS[2]=WS_DEFAULT;
							 break;
				   }
				    TW_StartTimer(i,11);
                 }
   				else
				{
				 strcpy(filename[i],welcomfile);
			     TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
				 TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
				 inputchar[i]=START;
				 CS[i]=WS_PLAY;
				}
				} 
			   else     //播放欢迎信息文件
				{
					strcpy(filename[i],welcomfile);		
				    TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
				    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
					inputchar[i]=START;
					CS[i]=WS_PLAY;
					
				}	
			}
			else 
				TW_RecordFileRest(i);      //否则完成录制信息文件
			
		break;


        case WS_AUTODIAL:   //自动拔号进行投诉
			  switch(DIAL[i])
			  {
			  case WS_INITIALIZED:			   
				
					  if(TW_TimerElapsed(i)<0)
					  {
					  TW_OffHookCtrl(i);
					  DIAL[i]=WS_STARTDIAL;
					  sprintf(ChMess[i],"通道%2d (外线) : 计算机开始拔号.",i);
					  ChPaint(i);
					  }
					
					  break;
			  case WS_STARTDIAL:
				    
				    Sig=TW_CheckSignal(i,&SigCount,&SigLen);
				    if(Sig==SIG_DIAL)
					 {
					  TW_StartDial(i,(LPCSTR)ad.PhoneNumber);
					  DIAL[i]=WS_ONDIAL;
					  sprintf(ChMess[i],"通道%2d (外线) : 计算机正在拔号...",i);
					  ChPaint(i);
					 }
					// else
					// {
					//	 TW_HangUpCtrl(i);
					//	 DIAL[i]=WS_INITIALIZED;
					 //}
					  break;
              case  WS_ONDIAL:
				      if(TW_DialRest(i)==0)
					  { 
                        TW_GenerateRing(i);                       
						TW_StartTimer(i,90);
						TW_StartMonitor(i);
						DIAL[i]=WS_WAITOFFHOOK;
						sprintf(ChMess[i],"通道%2d (外线) : 计算机完成拔号,等待摘机. ",i);
						ChPaint(i);
					    
                      }
                      else 
						TW_DialRest(i);
					  break;
              case  WS_WAITOFFHOOK:
				      if(TW_MonitorOffHook(i,25))
					  {
						TW_PowerCtrl(i);
						sprintf(ChMess[i],"通道%2d (外线) : 相应抢修部门已摘机. ",i);
						ChPaint(i);
						DIAL[i]=WS_STARTPLAY;
						TW_StartTimer(i,40);
						
					  }
					  else if(TW_TimerElapsed(i)<0)
					  {
						TW_HangUpCtrl(i);
						strcpy(ad.PhoneNumber,"8227302");
						DIAL[i]=WS_INITIALIZED;
						TW_StartTimer(i,11);
						sprintf(ChMess[i],"通道%2d (外线) : 等待时间超时,计算机重拔上级号码... ",i);
						ChPaint(i);
					
					  }
					  break;
			  case   WS_STARTPLAY:
				     if(TW_StartPlayFile(i,ad.FileName,0,LONG_MAX)==0)
					 {  
						 sprintf(ChMess[i],"通道%2d (外线) : 找到的投诉记录是空文件或不存在!",i);
						 ChPaint(i);
                         strcpy(filename[i],welcomfile);
						 TW_StartPlayFile(i,filename[i],0,LONG_MAX);
						 TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音

						 inputchar[i]=START;
						 CS[i]=WS_PLAY;
						
                     }
                     else
					 {
					 TW_StartPlayFile (3,  ad.FileName, 0 , LONG_MAX) ; //放音模块放音
					  
					 sprintf(ChMess[i],"通道%2d (外线) : 计算机正在播放记录信息... ",i);
					 ChPaint(i);
					 DIAL[i]=WS_ONPLAY;
					 }
					 break;
			  case  WS_ONPLAY:
				     if(TW_MonitorBusy(i,SIG_BUSY1,5)|| TW_MonitorBusy(i,SIG_BUSY2,5))
					 {
						TW_StopPlayFile(i);
						TW_StopPlayFile(3);
						TW_HangUpCtrl(i);
						CS[i]=WS_HANGUP;
					
						sprintf(ChMess[i],"通道%2d (外线) : 相应抢修部门已挂机. " ,i);
						ChPaint(i);
					
					 }
					 else if(TW_TimerElapsed(i)<0)
					 {
						 TW_StopPlayFile(i);
						 TW_StopPlayFile(3);
						 TW_HangUpCtrl(i);
						 CS[i]=WS_HANGUP;
						 sprintf(ChMess[i],"通道%2d (外线) : 等待时间到,计算机结束播放!",i);
						 ChPaint(i);
			
					 }
					 else if(TW_PlayFileRest(i)<=0)
					 {
					    if(TW_PlayFileRest(3)<=0)
						{
						 DIAL[i]=WS_STARTPLAY;
						sprintf(ChMess[i],"通道%2d (外线) : 计算机已完成放音,再次重放...",i);
						ChPaint(i);
						}
                        else
							TW_PlayFileRest(3);
					 }
					 else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -