| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include "StdAfx.h"
- #include "PlaySoundReq.h"
- #include "ProxyExten.h"
- #include "ControlShell.h"
- #include "ProxyShell.h"
- #include "MC.h"
- CPlaySoundReq::CPlaySoundReq(CProxyShell* pParent, CPduEntity& ReqPdu) : CReqBase(pParent, ReqPdu)
- {
- }
- CPlaySoundReq::~CPlaySoundReq(void)
- {
- }
- /*****************************************************************
- **【函数名称】 request
- **【函数功能】 发出请求(命令方式)
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CPlaySoundReq::request( void )
- {
- // 初始化放音内容
- PlayVoiceContent content;
- memset(&content, 0, sizeof(PlayVoiceContent));
- content.nModel = (PlayVoiceMode)m_ReqPdu.GetDataInt(3);
- content.nDtmfCount = m_ReqPdu.GetDataInt(9);
- content.nDtmfPeriod = m_ReqPdu.GetDataInt(10);
- content.nTts = m_ReqPdu.GetDataInt(4); // TTS类型
- content.nTtsDigitMode = m_ReqPdu.GetDataInt(5); // TTS数字播报模式
- content.nTtsSpeed = m_ReqPdu.GetDataInt(7); // TTS语速
- content.nTtsVolume = m_ReqPdu.GetDataInt(8); // TTS音量
- content.cDtmfEnd = m_ReqPdu.GetDataString(11).GetAt(0);
- sprintf_s(content.szFileName, MAX_PATH, _T("%s"), m_ReqPdu.GetDataString(12));
- // 放音启动日志
- LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 线路[%lu]放音收号, FileName = %s, Mode = %lu"),
- m_pHostLine->lineId(), content.szFileName, content.nModel);
- // 启动放音
- return CMC::GetInstance().playSound(m_pHostLine->devId(), &content);
- }
- /*****************************************************************
- **【函数名称】 cancel
- **【函数功能】 操作取消(命令方式)
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CPlaySoundReq::cancel( long InstanceCancel )
- {
- // 放音停止日志
- LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 线路[%lu]取消放音收号"), m_pHostLine->lineId());
- m_InstanceCancel = InstanceCancel;
- CMC::GetInstance().playStop(m_pHostLine->devId());
- end(false, NULL);
- // 返回
- return true;
- }
- /*****************************************************************
- **【函数名称】 hangUp
- **【函数功能】 操作中挂机(命令方式)
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CPlaySoundReq::hangUp( long InstanceHangUp )
- {
- LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 线路[%lu]放音收号因挂机取消"), m_pHostLine->lineId());
- return CMC::GetInstance().playStop(m_pHostLine->devId());
- }
- /*****************************************************************
- **【函数名称】 end
- **【函数功能】 操作完成
- **【参数】 IsSucceed 操作是否成功
- lpData 随路数据
- **【返回值】
- ****************************************************************/
- void CPlaySoundReq::end( bool IsSucceed, LPCTSTR lpData )
- {
- if(IsSucceed)
- {
- LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 线路[%lu]放音收号成功"), m_pHostLine->lineId());
- }
- else
- {
- LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{LineReq}: 线路[%lu]放音收号失败"), m_pHostLine->lineId());
- } // end if
- // 返回执行结果
- if(m_InstanceCancel != 0)
- {
- m_pParent->notifyReqResult(m_ReqPdu, m_InstanceCancel, !IsSucceed, lpData);
- } // end if
- m_pParent->onLineReqEnd(this, IsSucceed, lpData);
- }
- /*****************************************************************
- **【函数名称】 onDevChEvent
- **【函数功能】 线路向上层发送的设备主动事件
- **【参数】 pEventLine 触发事件的线路
- EvtType 事件类型
- lpContent 事件内容
- **【返回值】
- *****************************************************************/
- void CPlaySoundReq::onDevChEvent( CVirtualProxy* pEventLine, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent )
- {
- if(EvtType == DEV_CH_EVT_PLAY_END)
- {
- if(lpContent == CONST_ERR_PLAY_AUDIO)
- end(false, NULL);
- else
- end(true, lpContent);
- }
- }
- /*****************************************************************
- **【函数名称】 onLineStateChanged
- **【函数功能】 线路状态变化事件响应接口
- **【参数】 pEventLine 状态变化的线路实体指针
- LineState 线路当前状态
- Call 主呼叫ID
- SubCall 子呼叫ID
- lpCallerNum 主叫号码
- lpCalleeNum 被叫号码
- **【返回值】
- ****************************************************************/
- void CPlaySoundReq::onLineStateChanged( CVirtualProxy* pEventLine, VIRTUAL_LINE_STATE LineState, long Call, long SubCall, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum )
- {
- // 正在放音时外线挂机
- if(LineState == VIRTUAL_LINE_STATE_FREE)
- end(false, NULL);
- }
|