| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "OpSendDtmf.h"
- #include "VirtualChan.h"
- #include "FsProxy.h"
- #include "OperationReactor.h"
- COpSendDtmf::COpSendDtmf(COperationReactor * pParent, long Instance) :COperation(pParent, Instance)
- {
- }
- COpSendDtmf::~COpSendDtmf(void)
- {
- }
- bool COpSendDtmf::attachHostChan(VirtualChan * pChan)
- {
- m_pHostChan = pChan;
- return true;
- }
- void COpSendDtmf::detachHostChan(void)
- {
- m_pHostChan = NULL;
- }
- bool COpSendDtmf::start(LineOpParam * pParam)
- {
- if (m_pHostChan == NULL || m_pHostChan->state() != CHAN_LOGIC_STATE_TALKING)
- {
- LOG_ERROR("通道[%s]发送[%s]按键失败,未在通话中", pParam->szParam1.c_str(), pParam->szParam2.c_str());
- return false;
- }
- m_dtmf = pParam->szDtmf;
- LOG_INFO("{COpSendDtmf}: 通道[%s]执行通道[%lu]发送按键, DTMF = %s", pParam->szParam1.c_str(), m_pHostChan->no(), m_dtmf.c_str());
- return CFsProxy::GetInstance().sendDtmf(uniqueId(), m_pHostChan->chanId(), m_dtmf);
- }
- void COpSendDtmf::onBackgroudJobDone(PBG_JOB_NOTIFY pNotify)
- {
- if (pNotify->JobBody.find(ESL_JOB_DONE_RES_FAILED) == std::string::npos)
- _end(true);
- else
- _end(false);
- }
- void COpSendDtmf::_end(bool IsSucceed)
- {
- if (IsSucceed)
- {
- LOG_INFO("{COpSendDtmf}: 线路[%ld][%lu]发送按键成功, DTMF = %s", m_Instance, m_pHostChan->no(), m_dtmf.c_str());
- }
- else
- {
- LOG_ERROR("{COpSendDtmf}: 线路[%ld][%lu]发送按键失败, DTMF = %s", m_Instance, m_pHostChan->no(), m_dtmf.c_str());
- }
- // 返回执行结果
- if (m_InstanceCancel != FS_LINK_INSTANCE_INVALID)
- m_pParent->onOpResult(m_InstanceCancel, !IsSucceed);
- m_pParent->onOpResult(m_Instance, this, IsSucceed, std::to_string(m_Instance));
- }
|