事件: CallStatus


功能:

 

当通话状态改变时,该事件被触发,该时间包含很多消息.

形式:
  VB 代码:
Private Sub VoiceAngel1_CallStatus(ByVal LineIndex As Long, ByVal EventID As Long, ByVal Param1 As Long, ByVal Param2 As String)
C++ 代码:
void OnCallStatus(long LineIndex, long EventID, long Param1, LPCTSTR Param2)

参数:

 

LineIndex(Long)

发生事件的线路的索引.
EventID(Long)

事件标识符. 可以是以下值:
CALLSTATUS_DIALWELLDONE=0
拨号完毕.
CALLSTATUS_NO_SOUND_AFTER_DIALING=1
拨号后一定时间内没有检测到任何声音"
这个时间是由属性 NoResponseAfterDialingTimeout 决定的.
CALLSTATUS_RINGBACK=2
拨号后检测到回铃音, Param1代表回铃次数
CALLSTATUS_BUSY=3
拨号后检测到忙音.
cmdDrop.Enabled = True
CALLSTATUS_VOICE_PROMPT_DETECTED=4
拨号后检测到语音提示, 比如 "您拨打的用户已关机,..."
Param1 代表语音提示的编号. Param2 代表语音提示的描述. 比如 "CDMA 忙" 或者 "中国移动手机关机". Param1默认是0, Param2默认是空字符串,表示这是没有识别的提示音. 经过训练各种提示音之后,这两个参数会显示识别出的提示音的编号和描述. VoicePromptTrain 方法可以用来训练提示音.

CALLSTATUS_FAX_TONE=5
拨号后检测到传真信号.
CALLSTATUS_CALL_REJECTED=6
拨号后检测到对方拒绝接听(先回铃音, 后忙音).
CALLSTATUS_CONNECTED=7

电话在拨号, 应答或转接后接通. Param1 代表这三种接通的方式.
CONNECT_STYLE_OUTBOUND=0
    拨号之后接通. 这时候如果调用 CurrentCall,会返回                  CURRENT_CALL_ORIGINAL(0)
CONNECT_STYLE_INBOUND=1
     电话在应答(answer)后接通. 这时调用CurrentCall 会       返回  CURRENT_CALL_ORIGINAL(0)
CONNECT_STYLE_CONSULT=2
     电话在由StartTransfer方法发起的转接后接通       此时调用CurrentCall会返回      CURRENT_CALL_CONSULT(1).
 CONNECT_STYLE_CONFERENCE=3
      CompleteTransfer 被调用来完成转接,三方通话被建立. 此时调用CurrentCall会返回 CURRENT_CALL_CONFERENCE(2).
 CONNECT_STYLE_CONSULT_CANCELED=4
     转接过程中CancelTransfer 被调用, 原始对话接通. 此时调用 CurrentCall 将返回 CURRENT_CALL_ORIGINAL(0).


CALLSTATUS_COLOR_RING_BACK_TONE_DETECTED=8
拨号后彩铃被检测到.
CALLSTATUS_DIAL_FAILED=9
拨号失败,电话线可能没有插好.
CALLSTATUS_WAIT_CONNECTION_TIMEOUT
= 12
指定的超时时间到了,但是由 Dial 或者 StartTransfer 发起的拨号或转接还没有被应答. 超时时间在Dial,Transfer方法里可以被指定. 默认是30秒.
CALLSTATUS_MONITOR_CALL_STATUS_TIMEOUT =13
指定的超时时间到了,但是由 MonitorCallStatus 发起的检测静音还没有结果
CALLSTATUS_VOICE_PROMPT_TRAINED= 14
提示音被训练完毕, 以后可以识别同样的提示音了. 提示音训练是由 VoicePromptTrain方法发起的.
CALLSTATUS_RINGING= 15
检测到振铃. Param1 代表振铃次数 Answer 方法此时可以被调用来应答来电.
CALLSTATUS_CALLERID =16
检测到来电显示. Param2代表检测到的电话号码.
CALLSTATUS_CALLINFO= 17
来电信息被检测到. 通常用于交换机. Param1 代表一个TAPI结构LINECALLINFO的地址. 该结构包含来电信息.
CALLSTATUS_DISCONNECTED= 18
检测到对方挂机.
CALLSTATUS_BLINDTRANSFER_DONE =19
一个盲目转接被完成了.
Param1: 一个整数, 被以下消息使用.
CALLSTATUS_RINGING:
代表振铃次数.
CALLSTATUS_RINGBACK:
代表回玲次数.
CALLSTATUS_CONNECTED:
代表接通的方式.
CALLSTATUS_CALLINFO:
代表一个TAPI 结构 LINECALLINFO.
CALLSTATUS_VOICE_PROMPT_DETECTED
代表语音提示的编号.
Param2: 字符串,被以下消息使用.
CALLSTATUS_CALLERID:
代表来电显示.
CALLSTATUS_VOICE_PROMPT_DETECTED
代表提示音描述.


     

描述:

 

想了解VoiceAngel如何判断外呼状态,请参考判断外呼状态.

     

相关方法:

 

See above.

     

参考:

 

Judging the Telephony Line Status. Dial ,Answer VoicePromptTrain StartPlaying MonitorCallStatus StartTransfer CancelTransfer CompleteTransfer BlindTransfer

     

演示代码( VB):

'The following code plays a wave file after getting a connected event.

Private Sub VoiceAngel1_CallStatus(ByVal LineIndex As Long, ByVal EventID As Long, ByVal Param1 As Long, ByVal Param2 As String)
Dim strCurCall As String

Select Case VoiceAngel1.CurrentCall
Case CURRENT_CALL_ORIGINAL
strCurCall = "Call "
Case CURRENT_CALL_CONSULT
strCurCall = "Consultation call "
End Select

Dim enumEventID As CALLSTATUS_EVENT
enumEventID = EventID

Select Case enumEventID
Case CALLSTATUS_DIALWELLDONE
showMsg "Dial well done"
Case CALLSTATUS_NO_SOUND_AFTER_DIALING
showMsg "No response after dialing."
Case CALLSTATUS_RINGBACK
showMsg "Ring Back " + CStr(Param1)
Case CALLSTATUS_BUSY
showMsg strCurCall + CStr(LineIndex) + "Busy"
cmdDrop.Enabled = True
Case CALLSTATUS_VOICE_PROMPT_DETECTED
showMsg strCurCall + CStr(LineIndex) + "VoicePromptDetected,ID=" + CStr(Param1) + ",Description=" + Param2
ckUseSpeakerphone.Enabled = True
Case CALLSTATUS_FAX_TONE
showMsg "Fax tone detected!"
Case CALLSTATUS_CALL_REJECTED
showMsg "Call rejected"
Case CALLSTATUS_CONNECTED

Select Case Param1

Case CONNECT_STYLE_OUTBOUND
showMsg CStr(LineIndex) + "Line connected after dialing"
Case CONNECT_STYLE_INBOUND
showMsg CStr(LineIndex) + "line connected after answering."
Case CONNECT_STYLE_CONSULT
'This is caused by StartTransfer
showMsg CStr(LineIndex) + "line:Consultation Call connected duration transfering."
cmdCompleteTransfer.Enabled = True
cmdSwapHold.Enabled = True
Case CONNECT_STYLE_CONFERENCE
'This is caused by calling CompleteTransfer method.
showMsg CStr(LineIndex) + "line:Conference Call connected after completing transfering."
Case CONNECT_STYLE_CONSULT_CANCELED
'This is caused by calling CanceTransfer method.
showMsg CStr(LineIndex) + "line:Original Call connected after canceling transfering."
End Select

Case CALLSTATUS_WAIT_CONNECTION_TIMEOUT

showMsg CStr(LineIndex) + "Timout while waiting connection of " + strCurCall
Case CALLSTATUS_MONITOR_CALL_STATUS_TIMEOUT
Case CALLSTATUS_VOICE_PROMPT_TRAINED
showMsg "VoicePrompt Trained"
cmdDrop_Click
Case CALLSTATUS_RINGING
cmdAnswer.Enabled = True
showMsg CStr(Param1) + " Ring"
Case CALLSTATUS_CALLERID
showMsg "CallerID:" & Param1
Case CALLSTATUS_CALLINFO
showMsg "CallInfo detected, the pointer to the TAPI LINECALLINFO structure is:" & Param1
Case CALLSTATUS_DISCONNECTED
showMsg "Call Disconnected."
Case CALLSTATUS_BLINDTRANSFER_DONE
showMsg "Blind Transfer completed"
End Select
End Sub