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

📄 dbtestview.cpp

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

		case WS_WAITFORPASSWORD :   //等待密码状态
			Sig = TW_CheckSignal (i, &SigCount, &SigLen);
		    
			if ((Sig == SIG_BUSY1 || Sig == SIG_BUSY2) && SigCount >= 3) //忙音
			{
				sprintf (ChMess[i], "通道%2d (外线) : 等待口令期间用户挂机!", i);
				ChPaint (i);
				TW_HangUpCtrl (i);
				CS[i] = WS_HANGUP;
			}
		
			else if((dtmf=TW_GetDTMFChar (i)) != -1)					//用户有按键
			{
				password[passwordpointer++]=dtmf;
				if(passwordpointer>=4)									//输入键达到4个
				{
					password[4]='\0';
					if(strcmp(password,truepassword1)==0)				//选择放音文件密码正确
					{
					strcpy(filename[i],choosecommand);					//播放选择播放命令文件
					TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
					TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;

			 
					sprintf(ChMess[i],"通道%2d (外线) : 正在选择相应留言或投诉信息文件.",i);
					ChPaint(i);
					inputchar[i]=CHOOSECOMMAND;
					CS[i]=WS_PLAY;
				 
					
					}
					else if(strcmp(password,truepassword2)==0)
					{
					sprintf(ChMess[i],"通道%2d (外线) : 正在选择录制相应信息文件.",i);
					ChPaint(i);
					strcpy(filename[i],recordinf);						//播放选择录音文件类型
					TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音
					TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
					inputchar[i]=RECORDINF;
					CS[i]=WS_PLAY;
				
					}
					else 
					{
					sprintf(ChMess[i],"通道%2d (外线): 输入口令错,计算机自动挂机!",i);
					ChPaint(i);
					TW_HangUpCtrl (i);
					CS[i] = WS_HANGUP;
					}
				}
			}
			else if (TW_TimerElapsed (i) < 0)							//等待时间到
			{
				sprintf (ChMess[i], "通道%2d (外线) : 等待时间超时,计算机自动挂机.", i);
				ChPaint (i);
				TW_HangUpCtrl (i);
				CS[i] = WS_HANGUP;
			}
		break;

		case WS_WAITFORFILE:
			
				//查询相应的文件名区,若不为空时播放文件且
				//取出第一个文件的指针开始放音

		    
            if(Key=='*')
			 {
				
				if(m_pSet->m_type=='0')
				{
				   if(m_pSet->m_FileName=="")
                  {
					sprintf(ChMess[i],"通道%2d (外线) : 找到留言记录所对应的语音文件为空!",i);
			        ChPaint(i);
				  }
				  else
				  {
				   strcpy(filename[i],m_pSet->m_FileName);
				   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(m_pSet->IsBOF())
				 {	
			      sprintf(ChMess[i],"通道%2d (外线) : 没有找到相应类型的留言记录.",i);
			      ChPaint(i);
				 }				
				 else	
				 {
					 m_pSet->MovePrev();
                      break;
				 }
				}
			 }
			 else if(Key=='#')
			 {
				 if(m_pSet->m_type=='1'||m_pSet->m_type=='2'||m_pSet->m_type=='3')
				 {
                    if(m_pSet->m_FileName=="")
                  {
					sprintf(ChMess[i],"通道%2d (外线) : 找到投诉记录所对应的语音文件为空!",i);
			        ChPaint(i);
				  }
				  else
				  {
				   strcpy(filename[i],m_pSet->m_FileName);
				   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(!m_pSet->IsBOF())
					 {
						 m_pSet->MovePrev();
						 break;
					 }
					 else
					 {
					   sprintf(ChMess[i],"通道%2d (外线) : 没有找到相应类型的投诉记录!",i);
			           ChPaint(i); 
                     }
				 }
			 }
             else
			 {
                if(!m_pSet->IsEOF())
				{
				  if(Key==m_pSet->m_type)
				  {
                    if(m_pSet->m_FileName=="")
                  {
					sprintf(ChMess[i],"通道%2d (外线) : 找到记录所对应的语音文件为空!",i);
			        ChPaint(i);
				  }
				  else
				  {
				   strcpy(filename[i],m_pSet->m_FileName);
				   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) ;
				  }
				  }
                  
				  m_pSet->MoveNext();
				  break;
				}
				else
				{
                   	    sprintf(ChMess[i],"通道%d (外线) : 查询放音全部结束!",i);
						ChPaint(i);

						TW_FlushDTMF(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;
				}
			 }
			sprintf(ChMess[i],"通道%d (外线) : 查询放音全部结束!",i);
			ChPaint(i);

		    TW_FlushDTMF(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;    


		case WS_BUSY :
			if (!TW_OffHookDetect (2)) 
			{
				sprintf (ChMess[2], "通道%2d (内线) : 内线已在忙音等待下挂机.", i);
				ChPaint (2);
				TW_GenerateSignal (2, SIG_SILENCE);
				CS[2] = WS_HANGUP;
			}
			break;

		default:
			break;
	}
}

 // 内线模块实现如下
void  CDBtestView::InternalChannels(WORD i)
{
   WORD Sig;
   DWORD  SigCount, SigLen;
   int dtmf,j ;
   //char ch;
   //int point=1,result;
  // long fail;
	switch (CS[i]) {
       
			case WS_DEFAULT:
             
			   TW_StartTimer(2,30);  
			
			   if(TW_OffHookDetect(2))
			   {
				   TW_PowerCtrl(2);
				   if(TW_StartPlayFile(2,ad.FileName,0,LONG_MAX)==0)
					 {  
						 sprintf(ChMess[2],"通道%2d (内线) : 相应投诉语音是空文件或不存在!",i);
						 ChPaint(2);
                         strcpy(filename[i],welcomfile);
						 TW_StartPlayFile(2,filename[i],0,LONG_MAX);
						 TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音

						 inputchar[2]=START;
						 CS[2]=WS_PLAY;
						
                     }
                     else
					 {
					 TW_StartPlayFile (2,  ad.FileName, 0 , LONG_MAX) ; //内线模块正在放音
					 TW_StartPlayFile(3,ad.FileName,0,LONG_MAX);
					 for(j=0;j<3;j++)
					 {
					 while(TW_PlayFileRest(2)>0&&TW_PlayFileRest(3)>0)
					 {
					  sprintf(ChMess[2],"通道%2d (内线) : 正在播放相应投诉语音记录... ",i);
					  ChPaint(2);
					
					  TW_PlayFileRest(2);
                      TW_PlayFileRest(3);
					 }
					 }
                      sprintf(ChMess[2],"通道%2d (内线) : 计算机已完成放音,结束放音...",i);
					  ChPaint(2);
					  TW_GenerateSignal (2, SIG_BUSY1);
				      CS[i] = WS_BUSY;
					
					 }
			   }
			   else if (TW_TimerElapsed (2) < 0) 
			   {
				sprintf (ChMess[2], "通道%2d (内线) : 等待时间超时,自动停止振玲.", i);
				ChPaint (2);
                TW_PowerCtrl(2);
			    CS[i]=WS_HANGUP;
			   }

               break;
		case WS_HANGUP :
			if (TW_OffHookDetect (i)) 
			{
				sprintf (ChMess[i], "通道%2d (内线) : 有电话摘机.", i);
				ChPaint (i);
				TW_FlushDTMF (i);
				inputchar[i]=START;
				strcpy(filename[i],welcomfile);//播放初始放音文件
				
				if (TW_StartPlayFile (i, filename[i] , 0 , LONG_MAX) == -1)
				{
					sprintf (ChMess[i], " 通道%d (内线) : 初始放音失败.", i);
					ChPaint (i);
				    TW_StartTimer (i, 10);
					CS[i] = WS_TIMER;
				}
				else 
				{
				    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音

					sprintf (ChMess[i], "通道%2d (内线) : 正在播放提示音...", i);
					ChPaint (i);
					CS[i] = WS_PLAY;
				}
				  
			}
			break;

		case WS_PLAY :
			//CheckDtmf (i);
		    if((dtmf=TW_GetDTMFChar (i)) != -1)
			{
				TW_StopPlayFile(i);
			/*************在初使状态时按键***************/
				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;

						case '*': //进入呼出功能
                        CS[i]=WS_DIALOUT;
						strcpy(filename[i],dialout);
						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':
			 			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_ICONSTOP);
			 				strcpy(filename[i],welcomfile);
			 				TW_StartPlayFile(i,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);
			 				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);
			 			}
			 		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) ; //放音模块放音

				}
				else if(inputchar[i]==PARTICULAR)	//进入特殊功能输入密码
				{
					passwordpointer=0;
					password[passwordpointer++]=dtmf;
				    TW_StartTimer(i,15);
					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);

⌨️ 快捷键说明

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