//来电呼入事件
if(evtType==XMS_EVT_CALLIN)
{
//激发:外线呼入、空闲内线(未振铃时)摘机 主体:chn,不是voc 放音文件要在驱动机目录
if(iDevMain==XMS_DEVMAIN_VOIP)
{
Acs_CallControl_Data * pCallEvt = (Acs_CallControl_Data *)FetchEventData(evt);
VoIPCallPrivate_t *paramVoIPCall = (VoIPCallPrivate_t *)&(pCallEvt->m_PrivData);
int ivoipchn = evt->m_DeviceID.m_s16ChannelID;
DSP[iDspID].Voip[ivoipchn].iProtocol = paramVoIPCall->m_s32Protocol;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszTelNo, pCallEvt->m_s8CallingNum);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszAddr, paramVoIPCall->m_s8CallerAddress);
DSP[iDspID].Voip[ivoipchn].addrCaller.port = (USHORT)paramVoIPCall->m_s32CallerPort;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszUserID, paramVoIPCall->m_s8CallerUserID);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszTelNo, pCallEvt->m_s8CalledNum);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszAddr, paramVoIPCall->m_s8CalleeAddress);
DSP[iDspID].Voip[ivoipchn].addrCallee.port = (USHORT)paramVoIPCall->m_s32CalleePort;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszUserID, paramVoIPCall->m_s8CalleeUserID);
tVoip* voipchn=&DSP[iDspID].Voip[ivoipchn];
voipchn->itm->SubItems->Strings[5]=(voipchn->addrCaller.tszTelNo);
tVoc* voc=&DSP[iDspID].Voc[0];
//1.呼叫应答
XMS_ctsAnswerCallIn (g_acsHandle,&voipchn->deviceID, NULL ); //如不回应,会直接挂外线
//2.连接通道。!!!要在设置voip通道参数前面,否则听不到放音
My_Link(&voc->deviceID,&voipchn->deviceID);
//3.设置voip通道参数,听到欢迎语音
MixerControlParam_t paramMixer = {0};
paramMixer.m_u8SRC1_Ctrl = XMS_MIXER_FROM_PLAY;
paramMixer.m_u16SRC_ChID1 = voc->deviceID.m_s16ChannelID; //!!voc的设备ID
RetCode_t ret = XMS_ctsSetParam(g_acsHandle, &voipchn->deviceID,
VOIP_PARAM_RTPMIXER, sizeof(paramMixer), ¶mMixer);
//获取语音资源 (初始绑定式)
//int iFreeVocChn=0;//outchn->ivoc_join;//GetOneFreeVocChn_ByCfg(iDspID);
//4.放音
My_PlayFile(&voc->deviceID,String(VocPath + "\\welcome.wav").c_str(),false); //outvocchn->deviceID
}
}
if(evtType==XMS_EVT_CALLIN)
{
//激发:外线呼入、空闲内线(未振铃时)摘机 主体:chn,不是voc 放音文件要在驱动机目录
if(iDevMain==XMS_DEVMAIN_VOIP)
{
Acs_CallControl_Data * pCallEvt = (Acs_CallControl_Data *)FetchEventData(evt);
VoIPCallPrivate_t *paramVoIPCall = (VoIPCallPrivate_t *)&(pCallEvt->m_PrivData);
int ivoipchn = evt->m_DeviceID.m_s16ChannelID;
DSP[iDspID].Voip[ivoipchn].iProtocol = paramVoIPCall->m_s32Protocol;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszTelNo, pCallEvt->m_s8CallingNum);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszAddr, paramVoIPCall->m_s8CallerAddress);
DSP[iDspID].Voip[ivoipchn].addrCaller.port = (USHORT)paramVoIPCall->m_s32CallerPort;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCaller.tszUserID, paramVoIPCall->m_s8CallerUserID);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszTelNo, pCallEvt->m_s8CalledNum);
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszAddr, paramVoIPCall->m_s8CalleeAddress);
DSP[iDspID].Voip[ivoipchn].addrCallee.port = (USHORT)paramVoIPCall->m_s32CalleePort;
strcpy(DSP[iDspID].Voip[ivoipchn].addrCallee.tszUserID, paramVoIPCall->m_s8CalleeUserID);
tVoip* voipchn=&DSP[iDspID].Voip[ivoipchn];
voipchn->itm->SubItems->Strings[5]=(voipchn->addrCaller.tszTelNo);
tVoc* voc=&DSP[iDspID].Voc[0];
//1.呼叫应答
XMS_ctsAnswerCallIn (g_acsHandle,&voipchn->deviceID, NULL ); //如不回应,会直接挂外线
//2.连接通道。!!!要在设置voip通道参数前面,否则听不到放音
My_Link(&voc->deviceID,&voipchn->deviceID);
//3.设置voip通道参数,听到欢迎语音
MixerControlParam_t paramMixer = {0};
paramMixer.m_u8SRC1_Ctrl = XMS_MIXER_FROM_PLAY;
paramMixer.m_u16SRC_ChID1 = voc->deviceID.m_s16ChannelID; //!!voc的设备ID
RetCode_t ret = XMS_ctsSetParam(g_acsHandle, &voipchn->deviceID,
VOIP_PARAM_RTPMIXER, sizeof(paramMixer), ¶mMixer);
//获取语音资源 (初始绑定式)
//int iFreeVocChn=0;//outchn->ivoc_join;//GetOneFreeVocChn_ByCfg(iDspID);
//4.放音
My_PlayFile(&voc->deviceID,String(VocPath + "\\welcome.wav").c_str(),false); //outvocchn->deviceID
}
}