|
|
@@ -7,6 +7,8 @@
|
|
7
|
7
|
|
|
8
|
8
|
COpPlayAndDtmf::COpPlayAndDtmf(COperationReactor* pParent, LONG Instance) : COperation(pParent, Instance),m_Dtmf("")
|
|
9
|
9
|
{
|
|
|
10
|
+ m_bExecuteEnd = FALSE;
|
|
|
11
|
+ m_bDtmfEnd = FALSE;
|
|
10
|
12
|
ZeroMemory(&m_PlayContent, sizeof(m_PlayContent));
|
|
11
|
13
|
}
|
|
12
|
14
|
|
|
|
@@ -51,6 +53,9 @@ bool COpPlayAndDtmf::start( LineOpParam* pParam )
|
|
51
|
53
|
if(m_pHostChan->state() != CHAN_LOGIC_STATE_STANDBY)
|
|
52
|
54
|
return false;
|
|
53
|
55
|
|
|
|
56
|
+ m_bExecuteEnd = FALSE;
|
|
|
57
|
+ m_bDtmfEnd = FALSE;
|
|
|
58
|
+
|
|
54
|
59
|
// 初始化放音内容
|
|
55
|
60
|
ZeroMemory(&m_PlayContent, sizeof(m_PlayContent));
|
|
56
|
61
|
m_PlayContent.nModel = (PlayVoiceMode)pParam->nParam1;
|
|
|
@@ -130,6 +135,16 @@ void COpPlayAndDtmf::onHostChanDtmf( LPCTSTR Dtmf )
|
|
130
|
135
|
{
|
|
131
|
136
|
ASSERT(Dtmf != NULL);
|
|
132
|
137
|
m_Dtmf += Dtmf;
|
|
|
138
|
+
|
|
|
139
|
+ if (m_PlayContent.nDtmfCount <= m_Dtmf.GetLength())
|
|
|
140
|
+ {
|
|
|
141
|
+ m_bDtmfEnd = TRUE; // 收号完成
|
|
|
142
|
+ }
|
|
|
143
|
+
|
|
|
144
|
+ if (m_bExecuteEnd == TRUE && m_bDtmfEnd == TRUE) // 如果 onChanAppExecuted 先执行完成
|
|
|
145
|
+ {
|
|
|
146
|
+ _end(true);
|
|
|
147
|
+ }
|
|
133
|
148
|
}
|
|
134
|
149
|
|
|
135
|
150
|
/*****************************************************************
|
|
|
@@ -155,6 +170,20 @@ void COpPlayAndDtmf::onChanAppExecuted( CVirtualChan* pHostChan, PAPP_EXEC_NOTIF
|
|
155
|
170
|
ASSERT(pNotify != NULL);
|
|
156
|
171
|
if (pNotify == NULL)
|
|
157
|
172
|
return;
|
|
158
|
|
- if(lstrcmp(pNotify->App, ESL_APP_PLAY_DTMF) == 0 || lstrcmp(pNotify->App, ESL_APP_PLAY) == 0)
|
|
159
|
|
- _end(true);
|
|
|
173
|
+ if (lstrcmp(pNotify->App, ESL_APP_PLAY_DTMF) == 0 || lstrcmp(pNotify->App, ESL_APP_PLAY) == 0)
|
|
|
174
|
+ {
|
|
|
175
|
+ m_bExecuteEnd = TRUE;
|
|
|
176
|
+ LOGGER(LOG_LEVEL_NORMAL, _T("{COpPlayAndDtmf}: 通道任务执行结束事件处理 主通道号: %d"), m_pHostChan->no());
|
|
|
177
|
+ if (m_PlayContent.nModel == PVM_PLAY_WAIT_DIGIT || m_PlayContent.nModel == PVM_WAIT_DIGIT)
|
|
|
178
|
+ {
|
|
|
179
|
+ if (m_bDtmfEnd == TRUE)
|
|
|
180
|
+ {
|
|
|
181
|
+ _end(true);
|
|
|
182
|
+ }
|
|
|
183
|
+ }
|
|
|
184
|
+ else
|
|
|
185
|
+ {
|
|
|
186
|
+ _end(true);
|
|
|
187
|
+ }
|
|
|
188
|
+ }
|
|
160
|
189
|
}
|