📄 dbtestview.cpp
字号:
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 + -