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

📄 recsysdlg.cpp

📁 百色电信中继电话录音系统,是对于电话会议接入到本中继系统进行电话录音
💻 CPP
📖 第 1 页 / 共 5 页
字号:
							{
								SsmSetKB(trkinfo[i].opch,1);	//回主叫ACM
								trkinfo[i].trunk_state=WAITE_ANSWER;
								SsmTalkWith(i,trkinfo[i].opch);
								trkinfo[trkinfo[i].opch].trunk_state=WAITE_ANSWER;
								throwmsg(trkinfo[i],"",p_orginfo);
								//	p_orginfo=p_orginfo%MAX_QUEUE;
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_ACM);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_BUSYTONE:	//被叫忙
							{
								SsmHangup(i);
								//	SsmHangup(trkinfo[i].opch);
								SsmSetKB(trkinfo[i].opch,2);	//回主叫SLB
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[i],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_BUSY);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_FAILURE:	//呼叫失败
							{
								getch=SsmGetAutoDialFailureReason(i);
								SsmHangup(i);
							//	SsmHangup(trkinfo[i].opch);
								SsmSetKB(trkinfo[i].opch,2);	//回主叫SLB
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								sprintf(trkinfo[i].release_resean,"%d",getch);
								throwmsg(trkinfo[i],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALFAILURE);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_INVALID_PHONUM:	//空号
							{
								SsmHangup(i);
							//	SsmHangup(trkinfo[i].opch);
								SsmSetKB(trkinfo[i].opch,5);	//回主叫UNN
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[i],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INVIALNO);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						default: 
							break;
						}
					}
					else							//主叫方处理
					{
						trkinfo[trkinfo[i].opch].line_state=chstate;
						if(chstate==S_CALL_STANDBY)	//主叫挂机
						{
							SsmHangup(trkinfo[i].opch);
							//若断断开双方连接失败,则显示出错信息
							exerec=SsmStopTalkWith(i,trkinfo[i].opch);
							if(exerec==-1)
							{
								SsmGetLastErrMsg(errmsg);
								throwmsg(trkinfo[i],errmsg,p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
								SsmStopTalkWith(i,trkinfo[i].opch);
							}
							//
							trkinfo[i].trunk_state=CHN_IDLE;
							trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
							strcpy(trkinfo[i].clear_time,curtime);
							throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
							::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_REV_OTHMSG);
							p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							continue;
						}
						chstate=SsmChkAutoDial(trkinfo[i].opch);
						switch(chstate) {
						case DIAL_DIALING:	//正在拨号
							{
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALING);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
								continue;
							}
							break;
						case DIAL_ECHOTONE:	//被叫示闲
							{
								SsmSetKB(i,1);	//回主叫ACM
								trkinfo[i].trunk_state=WAITE_ANSWER;
								trkinfo[trkinfo[i].opch].trunk_state=WAITE_ANSWER;
								SsmTalkWith(i,trkinfo[i].opch);
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_ACM);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_BUSYTONE:	//被叫忙
							{
							//	SsmHangup(i);
								SsmHangup(trkinfo[i].opch);
								SsmSetKB(i,2);	//回主叫SLB
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								SsmStopTalkWith(i,trkinfo[i].opch);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_BUSY);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_FAILURE:	//呼叫失败
							{
								getch=SsmGetAutoDialFailureReason(trkinfo[i].opch);
							//	SsmHangup(i);
								SsmSetKB(i,2);	//回主叫SLB
								SsmHangup(trkinfo[i].opch);
								SsmStopTalkWith(i,trkinfo[i].opch);
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								sprintf(trkinfo[trkinfo[i].opch].release_resean,"%d",chstate);
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALFAILURE);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_INVALID_PHONUM:	//空号
							{
							//	SsmHangup(i);
								SsmSetKB(i,5);	//回主叫UNN
								SsmHangup(trkinfo[i].opch);
								SsmStopTalkWith(i,trkinfo[i].opch);
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INVIALNO);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						default: 
							break;
						}
					}
					break;
				}
//***************CHECK_CHN结束********************************************

//***************WAITE_ANSWER开始********************************************
			case WAITE_ANSWER:
				{
					
					if(trkinfo[i].iscaller==false)	//被叫方处理
					{
						trkinfo[i].line_state=chstate;
						if(chstate==S_CALL_STANDBY)	//被叫挂机
						{
							SsmHangup(trkinfo[i].opch);
							SsmHangup(i);
							//若断断开双方连接失败,则显示出错信息
							exerec=SsmStopTalkWith(i,trkinfo[i].opch);
							if(exerec==-1)
							{
								SsmGetLastErrMsg(errmsg);
								throwmsg(trkinfo[i],errmsg,p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
								SsmStopTalkWith(i,trkinfo[i].opch);
							}
							trkinfo[i].trunk_state=CHN_IDLE;
							trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
							strcpy(trkinfo[i].clear_time,curtime);
							throwmsg(trkinfo[i],"",p_orginfo);
							::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INHUNGUP);
							p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							continue;
						}
						getch=SsmChkAutoDial(i);
						switch(getch) {
						case DIAL_NOANSWER:	//被叫无人应答
							{
								SsmHangup(i);
								SsmHangup(trkinfo[i].opch);
								//若断断开双方连接失败,则显示出错信息
								exerec=SsmStopTalkWith(i,trkinfo[i].opch);
								if(exerec==-1)
								{
									SsmGetLastErrMsg(errmsg);
									throwmsg(trkinfo[i],errmsg,p_orginfo);
									::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
									p_orginfo=(p_orginfo+1)%MAX_QUEUE;
									SsmStopTalkWith(i,trkinfo[i].opch);
								}
					//
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[i],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_NOANSWER);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_VOICE:	//被叫摘机
							{
								SsmPickup(trkinfo[i].opch);		//帮主叫摘机
							/*	orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmPickup");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								SsmSetRecMixer(trkinfo[i].opch,true,2);		//录主叫方
							/*	orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecMixer");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								SsmSetRecVolume(trkinfo[i].opch,2);
							/*	orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecVolume");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								if(trkinfo[i].EnRecord)
								{
									SsmRecToFile(trkinfo[i].opch,trkinfo[i].rec_filename,
										17,	//IMA ADPCM
										0L,	//录音起始位置
										0xffffffff,		//4G录音大小
										10,
										0				//以文件大小决定录音
										);
								/*	sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmRecToFile");
									orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								}
								trkinfo[i].trunk_state=RECORDING;
								trkinfo[trkinfo[i].opch].trunk_state=RECORDING;
								throwmsg(trkinfo[i],"",p_orginfo);
								strcpy(trkinfo[i].answer_time,curtime);
								strcpy(trkinfo[trkinfo[i].opch].answer_time,curtime);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_SAY);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						default : break;
						}
					}
					else		//主叫方处理
					{
						trkinfo[trkinfo[i].opch].line_state=chstate;
						if(chstate==S_CALL_STANDBY)	//主叫挂机
						{
							SsmHangup(trkinfo[i].opch);
							SsmHangup(i);
							//若断断开双方连接失败,则显示出错信息
					exerec=SsmStopTalkWith(i,trkinfo[i].opch);
					if(exerec==-1)
					{
						SsmGetLastErrMsg(errmsg);
						throwmsg(trkinfo[i],errmsg,p_orginfo);
						::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
						p_orginfo=(p_orginfo+1)%MAX_QUEUE;
						SsmStopTalkWith(i,trkinfo[i].opch);
					}
					//
							trkinfo[i].trunk_state=CHN_IDLE;
							trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
							strcpy(trkinfo[i].clear_time,curtime);
							throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
							::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INHUNGUP);
							p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							continue;
						}
						getch=SsmChkAutoDial(trkinfo[i].opch);	//检测被叫
						switch(getch) {
						case DIAL_NOANSWER:	//无人应答
							{
								SsmHangup(i);
								SsmHangup(trkinfo[i].opch);
								//若断断开双方连接失败,则显示出错信息
								exerec=SsmStopTalkWith(i,trkinfo[i].opch);
								if(exerec==-1)
								{
									SsmGetLastErrMsg(errmsg);
									throwmsg(trkinfo[i],errmsg,p_orginfo);
									::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
									p_orginfo=(p_orginfo+1)%MAX_QUEUE;
									SsmStopTalkWith(i,trkinfo[i].opch);
								}
					//
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_NOANSWER);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						case DIAL_VOICE:
							{
								SsmPickup(i);	//主叫摘机
							/*	sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmPickup");
								orginfo_queue[p_orginfo].trunkno=i;
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								SsmSetRecMixer(i,true,2);		//录主叫方
							/*	orginfo_queue[p_orginfo].trunkno=i;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecMixer");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								SsmSetRecVolume(i,2);
							/*	orginfo_queue[p_orginfo].trunkno=i;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecVolume");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								if(trkinfo[i].EnRecord)
								{
								SsmRecToFile(i,trkinfo[i].rec_filename,
									17,	//IMA ADPCM
									0L,	//录音起始位置
									0xffffffff,		//4G录音大小
									10,
									0				//以文件大小决定录音
									);
							/*	orginfo_queue[p_orginfo].trunkno=i;
								sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmRecToFile");
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
								}
								trkinfo[i].trunk_state=RECORDING;
								trkinfo[trkinfo[i].opch].trunk_state=RECORDING;
								strcpy(trkinfo[i].answer_time,curtime);
								strcpy(trkinfo[trkinfo[i].opch].answer_time,curtime);
								throwmsg(trkinfo[i],"",p_orginfo);
								::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_SAY);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
							}
							break;
						default: break;
						}
					}
					break;
				}
//***************WAITE_ANSWER结束********************************************


//***************RECORDING开始********************************************
			case RECORDING:
				{
					if(trkinfo[i].iscaller==false)		//被叫方处理
					{
						trkinfo[i].line_state=chstate;
						switch(chstate)	
						{
						case S_CALL_STANDBY:		//被叫挂机
							{
								trkinfo[i].trunk_state=CHN_IDLE;
								trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
								strcpy(trkinfo[i].clear_time,curtime);
								throwmsg(trkinfo[i],"",p_orginfo);
								if(trkinfo[i].EnRecord)
								{
									SsmStopRecToFile(trkinfo[i].opch);
									::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_HUNGUP_B);
								}
								else
								{
									::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_HUNGUP_NOREC);
								}
								SsmHangup(trkinfo[i].opch);
								SsmHangup(i);
								p_orginfo=(p_orginfo+1)%MAX_QUEUE;
								//若断断开双方连接失败,则显示出错信息
								exerec=SsmStopTalkWith(i,trkinfo[i].opch);
								if(exerec==-1)
								{
									SsmGetLastErrMsg(errmsg);
									throwmsg(trkinfo[i],errmsg,p_orginfo);
									::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
									p_o

⌨️ 快捷键说明

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