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

📄 dbtestview.cpp

📁 处理各种电话投诉的危机情况
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					    TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音
						CS[i]=WS_PLAY;
						inputchar[i]=START;
						break;
					}
					
				}
			}
			else
			{
			if (!TW_OffHookDetect (i)) 
			{
				sprintf (ChMess[i], "通道%2d (内线) : 在播放提示音期间,内线挂机.", i);
				ChPaint (i);
				TW_StopPlayFile (i);
				TW_StopPlayFile(3);   //停止放音
				CS[i] = WS_HANGUP;
			}
			else if (TW_PlayFileRest (i) <= 0) 
			{
				if(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(3);
			}
			}
			break;

		case WS_DIALOUT:
			TW_StartTimer(i,5);
            if(!TW_OffHookDetect(i))
			{
			  sprintf(ChMess[i],"通道%2d (内线) : 用户已挂机!",i);
			  ChPaint(i);
			  CS[i]=WS_HANGUP;
			}
			else if(TW_TimerElapsed(i)<0)
			{
				sprintf(ChMess[i],"通道%2d (内线) : 等待时间到,计算机自动产生忙音!",i);
				ChPaint(i);
				TW_GenerateSignal(i,SIG_BUSY1);
				CS[i]=WS_BUSY;
			}
			else if((dtmf=TW_GetDTMFChar(i))!=-1)
			{
				cPhoneNum[iPointer++]=dtmf;
				if(iPointer>=7)
				{
					cPhoneNum[7]='\0';
					CS[i]=WS_AUTODIAL;
				}
			}
			break;

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

        case WS_RECORD:
			if (!TW_OffHookDetect (i))
			{
				sprintf (ChMess[i], "通道%2d (内线) : 在录音期间用户挂机.", i);
				ChPaint (i);
				
				TW_StopRecordFile (i);
				TW_StopRecordFile(3);
				CS[i] = WS_HANGUP;
		
			}
			else if((dtmf=TW_GetDTMFChar (i)) != -1)
			{
			   
			    for(j=0;j<30000;j++) ;
				TW_StopRecordFile(i);
				//若不为录制信息文件状态则将文件名放入队列
				if(inputchar[i]!=RECORDINF)
				{
				//将文件名放入队列
           
			//     if( filename[i][15]!='0')
			//	 { 
			//	   sprintf(ChMess[i],"通道%2d (内线) : 进行自动投诉. ",i);
			//	   ChPaint(i);

			//	   TW_StartTimer(i,5);
			//	   TW_GenerateSignal (i, SIG_BUSY1);
			//	   if (TW_TimerElapsed (i) < 0)
			//	   {
			//	   if (!TW_OffHookDetect (i)) 
			//	   {
			//	   sprintf (ChMess[i], "通道%2d (内线) : 在忙音下内线已挂机.", i);
			//	   ChPaint (i);
				   // TW_GenerateSignal (i, SIG_SILENCE);
				  
			//	   }
			//	   else
			//	   {
			//		   sprintf(ChMess[i],"通道%2d (内线) : 在忙音下内线仍未挂机.",i);
			//		   ChPaint(i);
			//	   }
			//	   }

			//	   CS[i]=WS_AUTODIAL;
			//	   DIAL[i]=WS_INITIALIZED;
			//	   strcpy(ad.FileName,filename[i]);
				   
			//	   switch(filename[i][15])
			//	   { case '1':
			//	             strcpy(ad.PhoneNumber,"8227302");
			//				 break;
			//	     case '2': 
			//			     strcpy(ad.PhoneNumber,"1279012312");
			//				 break;
			//		 case '3':
			//			     strcpy(ad.PhoneNumber,"1275094581");
			//				 break;
			//		 default:
			//			     sprintf(ChMess[i],"通道%2d (内线) : 选择投诉的类型错误,不能自动投诉!",i);
   			//				 ChPaint(i);
			//				 TW_StartTimer (i,5);
			//		         CS[i] = WS_TIMER;
			//				 break;
			//	   }
			//	    TW_StartTimer(i,10);   //延时10秒,等待挂机
              //   }
   			//	else
			//	{
			//	 strcpy(filename[i],welcomfile);
			  //   TW_StartPlayFile(i , 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:			   
				
					  TW_OffHookCtrl(1);
					  DIAL[i]=WS_STARTDIAL;
					  sprintf(ChMess[i],"通道%2d (内线) : 计算机开始拔号.",i);
					  ChPaint(i);
					  
					  break;
			  case WS_STARTDIAL:
				    
				    Sig=TW_CheckSignal(1,&SigCount,&SigLen);
				    if(Sig==SIG_DIAL)
					 {
					  TW_StartDial(1,(LPCSTR)cPhoneNum);
					  DIAL[i]=WS_ONDIAL;
					  sprintf(ChMess[i],"通道%2d (内线) : 计算机正在拔号...",i);
					  ChPaint(i);
					 }
				/*	else
					{
						TW_HangUpCtrl(1);
						DIAL[i]=WS_INITIALIZED;
					} */
				
					break;
              case  WS_ONDIAL:
				      if(TW_DialRest(1)==0)
					  { 
                        TW_RingCtrl(1);                       
						TW_StartMonitor(1);
						DIAL[i]=WS_WAITOFFHOOK;
						sprintf(ChMess[i],"通道%2d (内线) : 计算机完成拔号,等待摘机. ",i);
						ChPaint(i);
                      }
                      else 
						TW_DialRest(1);

					  break;
              case  WS_WAITOFFHOOK:
				      if(TW_MonitorOffHook(1,25))
					  {
						TW_PowerCtrl(1);
						sprintf(ChMess[i],"通道%2d (内线) : 被呼叫方已摘机. ",i);
						ChPaint(i);
						DIAL[i]=WS_CALLBACK;
					  }
					   
					  break;
			  case  WS_CALLBACK:
				     if(TW_MonitorBusy(1,SIG_BUSY1,5)||TW_MonitorBusy(1,SIG_BUSY2,5))
					 {
						 TW_HangUpCtrl(1);
						 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;
					
					 }
					 TW_ConnectChannels(1,i);
					 DIAL[i]=WS_WAITHANGUP;

			         break;
			  case  WS_WAITHANGUP:
				     sprintf(ChMess[i],"通道%2d (内线) : 两方正在通话...",i);
					 ChPaint(i);
				    if(!TW_OffHookDetect (i))
					 {
						TW_HangUpCtrl(1);
						TW_DisconnectChannels(1,i);
						TW_GenerateSignal (1, SIG_SILENCE);
						CS[i]=WS_HANGUP;
						sprintf(ChMess[i],"通道%2d (内线) : 用户已中止通话! " ,i);
						ChPaint(i);
					
					 }
					else if(TW_MonitorBusy(1,SIG_BUSY1,5)||TW_MonitorBusy(1,SIG_BUSY2,5))
					{
						TW_HangUpCtrl(1);
						sprintf(ChMess[i],"通道%2d (内线) : 被呼叫方已中止通话!",i);
						ChPaint(i);
						TW_DisconnectChannels(1,i);
						TW_GenerateSignal (1, SIG_SILENCE);
						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;
					
					}
					
					break;
			  default:
				    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);
				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);
			 
					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(i , filename[i] , 0 , LONG_MAX);
					TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音
					inputchar[i]=RECORDINF;
					CS[i]=WS_PLAY;
				
					}
					else 
					{
					sprintf(ChMess[i],"通道%2d (内线) : 输入口令错,计算机自动挂机!",i);
					ChPaint(i);
					TW_StartTimer (i, 3);
					CS[i] = WS_TIMER;
					}
				}
			}
			else if (TW_TimerElapsed (i) < 0)							//等待时间到
			{
				sprintf (ChMess[i], "通道%2d (内线) : 等待时间超时,计算机自动挂机.", i);
				ChPaint (i);
				TW_StartTimer (i, 3);
				CS[i] = WS_TIMER;
			}
		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_TIMER :
			
			if (!TW_OffHookDetect (i))
			{
				sprintf (ChMess[i], "通道%2d (内线) : 内线已挂机.", i);
				ChPaint (i);
				CS[i] = WS_HANGUP;
			}
			else if (TW_TimerElapsed (i) < 0) 
			{
				sprintf (ChMess[i], "通道%2d (内线) : 等待时间超时,计算机自动产生忙音.", i);
				ChPaint (i);
				TW_GenerateSignal (i, SIG_BUSY1);
				CS[i] = WS_BUSY;
			}
			break;

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

⌨️ 快捷键说明

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