⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 call.bas

📁 三汇CTI示例程序源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
                        ChInfo(nCh).szDtmf = ""

                End Select
            End Select
        
        Case E_MSG_PICKUP
            nCh = wParam
            Select Case ChInfo(nCh).nStep
                Case TRK_CHECK_HOOK
                    ChInfo(nCh).nStep = TRK_TALKING
                    SsmStopPlay (nCh)
                    SsmTalkWith nCh, ChInfo(nCh).nLinkCh

                Case USER_F_WAIT
                    ChInfo(nCh).nStep = USER_F_TALK
                    SsmStopPlay (nCh)
                    SsmTalkWith nCh, ChInfo(nCh).nLinkCh
                    
            End Select

        'event generated by the driver when the timer is overtime
        Case E_SYS_TIMEOUT
            'identify the channel number according to the flag 'timer'
            For i = 0 To nMaxCh - 1
                If wParam = ChInfo(i).nTimer Then
                    nCh = i
                    Exit For
                End If
            Next i
            If ChInfo(nCh).nStep = TRK_WAIT_DTMF Then

                If SsmStopTimer(ChInfo(nCh).nTimer) = -1 Then
                    MsgBox ("Fail to call SsmStopTimer")
                End If
                ChInfo(nCh).nTimer = -1
                SsmStopPlay (nCh)
                If SsmHangup(nCh) = -1 Then
                    MsgBox ("Fail to call SsmHangup")
                End If
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).szExtensionNum = ""
                ChInfo(nCh).szCallerId = ""
                ChInfo(nCh).szDtmf = ""
                ChInfo(nCh).nStep = TRK_IDLE
            End If
        
            
            If ChInfo(nCh).nStep = USER_WAIT_DTMF Then
                SsmStopSendTone nCh     'stop send tone
                SsmSendTone nCh, 3      'send howler tone
                If SsmStopTimer(ChInfo(nCh).nTimer) = -1 Then
                    MsgBox ("Fail to call SsmStopTimer")
                End If
                ChInfo(nCh).nTimer = -1
                ChInfo(nCh).nStep = USER_F_HANG
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).szExtensionNum = ""
            End If
        

        Case E_CHG_FlashCount
            nCh = wParam
            Select Case ChInfo(nCh).nStep
            Case USER_TALKING
                ChInfo(nCh).nFLinkCh = ChInfo(nCh).nLinkCh
                ChInfo(nCh).nLinkCh = -1
                SsmStopTalkWith nCh, ChInfo(nCh).nFLinkCh
                SsmSendTone nCh, 0   'dial tone
                ChInfo(nCh).nTimer = SsmStartTimer(15000, 1)
                EventCallbackProc E_F_FLASH, ChInfo(nCh).nFLinkCh, 0, 0
                ChInfo(nCh).nStep = USER_WAIT_DTMF
                
            Case USER_F_HANG
                SsmStopSendTone nCh
                If ChInfo(nCh).bFlag Then
                    SsmSendTone nCh, 3  'send howler tone
                    ChInfo(nCh).nStep = USER_WAIT_HANG
                    ChInfo(nCh).bFlag = False
                    ChInfo(nCh).nFLinkCh = -1
                    ChInfo(nCh).nLinkCh = -1
                Else
                    SsmTalkWith nCh, ChInfo(nCh).nFLinkCh
                    EventCallbackProc E_MSG_CONN, ChInfo(nCh).nFLinkCh, 0, 0
                    ChInfo(nCh).nLinkCh = ChInfo(nCh).nFLinkCh
                    ChInfo(nCh).nFLinkCh = -1
                    ChInfo(nCh).nStep = USER_TALKING
                End If
            
            End Select
            

        Case E_F_FLASH
            nCh = wParam
            If ChInfo(nCh).nStep = TRK_TALKING Then
                SsmPlayFile nCh, "bgmusic.wav", 6, 0, &HFFFFFFFF    'play file
                ChInfo(nCh).nStep = TRK_FLASH
            End If
  
        Case E_MSG_CONN
            nCh = wParam
            If ChInfo(nCh).nStep = TRK_FLASH Then
                SsmStopPlay nCh
                ChInfo(nCh).nStep = TRK_TALKING
            End If
            

        Case E_MSG_RELEASE
            nCh = wParam
            Select Case ChInfo(nCh).nStep
            Case TRK_TALKING
                SsmHangup nCh           'hang up the channel
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).nStep = TRK_IDLE
                ChInfo(nCh).szCallerId = ""
                ChInfo(nCh).szDtmf = ""
                
            Case TRK_FLASH
                SsmStopPlay nCh
                SsmHangup nCh
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).nStep = TRK_IDLE
                ChInfo(nCh).szCallerId = ""
                ChInfo(nCh).szDtmf = ""
                
            Case USER_TALKING
                SsmSendTone nCh, 3  'send howler tone
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).nStep = USER_WAIT_HANG
                
            Case USER_F_TALK
                SsmSendTone nCh, 3  'send howler tone
                ChInfo(nCh).nLinkCh = -1
                ChInfo(nCh).nStep = USER_F_HANG
            End Select
           
        'Event generated by the driver when the status of user channel changes
        Case E_CHG_HookState
            nCh = wParam
            nRes = lParam
            ChInfo(nCh).szDtmf = ""
            Select Case ChInfo(nCh).nStep
            Case USER_IDLE
                If nRes = 1 Then    'user channel pickup
                    If ChInfo(nCh).bIsPick Then
                        ChInfo(nCh).bIsPick = False
                        SsmStopRing nCh     'stop ring to ch1
                        EventCallbackProc E_MSG_PICKUP, ChInfo(nCh).nLinkCh, 0, 0
                        ChInfo(nCh).nStep = USER_TALKING
                    ElseIf ChInfo(nCh).bIsFlash Then
                        ChInfo(nCh).bIsFlash = False
                        SsmStopRing nCh     'stop ring to ch2
                        EventCallbackProc E_MSG_PICKUP, ChInfo(nCh).nLinkCh, 0, 0
                        ChInfo(nCh).nStep = USER_TALKING
                    End If
                End If
                
            Case USER_TALKING
                If nRes = 0 Then    'user channel hangup
                    SsmStopTalkWith nCh, ChInfo(nCh).nLinkCh
                    EventCallbackProc E_MSG_RELEASE, ChInfo(nCh).nLinkCh, 0, 0
                    ChInfo(nCh).nLinkCh = -1
                    ChInfo(nCh).nStep = USER_IDLE
                    ChInfo(nCh).szCallerId = ""
                    
                End If
                
            Case USER_WAIT_DTMF
                If nRes = 0 Then
                    SsmStopTimer ChInfo(nCh).nTimer
                    ChInfo(nCh).nTimer = -1
                    ChInfo(nCh).szExtensionNum = ""

                    If ChInfo(nCh).bFlag Then
                        ChInfo(nCh).bFlag = False
                        
                        ChInfo(nCh).nStep = USER_IDLE
                    Else
                        EventCallbackProc E_MSG_RELEASE, ChInfo(nCh).nFLinkCh, 0, 0
                        ChInfo(nCh).nStep = USER_IDLE
                    End If
                    ChInfo(nCh).nLinkCh = -1
                    ChInfo(nCh).nFLinkCh = -1
                    ChInfo(nCh).szCallerId = ""
            
                End If
                
            Case USER_F_WAIT
                If nRes = 0 Then
                    ChInfo(ChInfo(nCh).nLinkCh).bIsFlash = False
                    ChInfo(ChInfo(nCh).nLinkCh).nLinkCh = -1
                     ChInfo(ChInfo(nCh).nLinkCh).szCallerId = ""
                    SsmStopRing ChInfo(nCh).nLinkCh
                    SsmStopPlay nCh
    
                    If ChInfo(nCh).bFlag Then
                        ChInfo(nCh).bFlag = False
                        
                        ChInfo(nCh).nStep = USER_IDLE
                    Else
                        EventCallbackProc E_MSG_RELEASE, ChInfo(nCh).nFLinkCh, 0, 0
                        ChInfo(nCh).nStep = USER_IDLE
                    End If
                    ChInfo(nCh).szCallerId = ""
                    ChInfo(nCh).nLinkCh = -1
                    ChInfo(nCh).nFLinkCh = -1
                End If
                
            Case USER_WAIT_HANG
                If nRes = 0 Then
                    SsmStopSendTone nCh
                    ChInfo(nCh).nStep = USER_IDLE
                    ChInfo(nCh).szCallerId = ""
                    ChInfo(nCh).szDtmf = ""
                End If
                
            Case USER_F_TALK
                If nRes = 0 Then
                    SsmStopTalkWith nCh, ChInfo(nCh).nLinkCh
                    ChInfo(nCh).szCallerId = ""
                    If ChInfo(nCh).bFlag Then
                        ChInfo(nCh).bFlag = False
    
                        EventCallbackProc E_MSG_RELEASE, ChInfo(nCh).nLinkCh, 0, 0
                        ChInfo(nCh).nLinkCh = -1
                        ChInfo(nCh).nFLinkCh = -1
                        ChInfo(nCh).nStep = USER_IDLE
                    Else
                        SsmTalkWith ChInfo(nCh).nLinkCh, ChInfo(nCh).nFLinkCh
                        ChInfo(ChInfo(nCh).nLinkCh).nLinkCh = ChInfo(nCh).nFLinkCh
                        ChInfo(ChInfo(nCh).nFLinkCh).nLinkCh = ChInfo(nCh).nLinkCh
                        EventCallbackProc E_MSG_CONN, ChInfo(nCh).nFLinkCh, 0, 0
                        ChInfo(nCh).nLinkCh = -1
                        ChInfo(nCh).nFLinkCh = -1
                        ChInfo(nCh).nStep = USER_IDLE
                    End If
                End If
            
            Case USER_F_HANG
                If nRes = 0 Then
                
                    SsmStopSendTone nCh
                    If ChInfo(nCh).bFlag Then
                        ChInfo(nCh).bFlag = False
                        ChInfo(nCh).nStep = USER_IDLE
                    Else
                        EventCallbackProc E_MSG_RELEASE, ChInfo(nCh).nFLinkCh, 0, 0
                        ChInfo(nCh).nStep = USER_IDLE
                    End If
                    ChInfo(nCh).nLinkCh = -1
                    ChInfo(nCh).nFLinkCh = -1
                    ChInfo(nCh).szCallerId = ""

                End If
                
            End Select
            
        
        'Event generated by the driver when DTMF is received
        Case E_CHG_RcvDTMF
            nCh = wParam
            cNewDtmf = Chr(&HFFFF& And lParam)      'Newly received DTMF
            
            ChInfo(nCh).szDtmf = ChInfo(nCh).szDtmf + cNewDtmf
            
            Select Case ChInfo(nCh).nStep
            Case TRK_WAIT_DTMF
                ChInfo(nCh).szExtensionNum = ChInfo(nCh).szExtensionNum + cNewDtmf

                For i = 0 To nMaxCh - 1

                    If ChInfo(nCh).szExtensionNum = ChInfo(i).szOwnNum Then
                        ChInfo(nCh).bChk = True
                        ChInfo(nCh).nLinkCh = i
                        Exit For
                    End If
                Next i
                If ChInfo(nCh).bChk Then
                    SsmStopTimer ChInfo(nCh).nTimer
                    ChInfo(nCh).nTimer = -1
                    If CheckChIsUseable(ChInfo(nCh).nLinkCh) Then   'useable
                        SsmPlayFile nCh, "bgmusic.wav", 6, 0, &HFFFFFFFF
                        SsmStartRing ChInfo(nCh).nLinkCh
                        ChInfo(ChInfo(nCh).nLinkCh).bIsPick = True
                        ChInfo(nCh).szExtensionNum = ""
                        ChInfo(nCh).bChk = False
                        ChInfo(ChInfo(nCh).nLinkCh).nLinkCh = nCh
                        ChInfo(ChInfo(nCh).nLinkCh).szCallerId = ChInfo(nCh).szCallerId
                        ChInfo(nCh).nStep = TRK_CHECK_HOOK
                    Else
                        SsmHangup nCh
                        ChInfo(nCh).szExtensionNum = ""
                        ChInfo(nCh).nLinkCh = -1
                        ChInfo(nCh).bChk = False
                        ChInfo(nCh).nStep = TRK_IDLE

                    End If

                Else
                    ChInfo(nCh).nStep = TRK_WAIT_DTMF
                End If
            Case USER_WAIT_DTMF
                ChInfo(nCh).szExtensionNum = ChInfo(nCh).szExtensionNum + cNewDtmf
                For i = 0 To nMaxCh - 1
                    If ChInfo(nCh).szExtensionNum = ChInfo(i).szOwnNum Then
                        ChInfo(nCh).bChk = True
                        ChInfo(nCh).nLinkCh = i
                        Exit For
                    End If
                Next i
                If ChInfo(nCh).bChk Then
                    SsmStopTimer ChInfo(nCh).nTimer
                    ChInfo(nCh).nTimer = -1
                    If CheckChIsUseable(ChInfo(nCh).nLinkCh) Then   'useable
                        SsmPlayFile nCh, "bgmusic.wav", 6, 0, &HFFFFFFFF
                        SsmStartRing ChInfo(nCh).nLinkCh
                        ChInfo(ChInfo(nCh).nLinkCh).bIsFlash = True
                        ChInfo(nCh).szExtensionNum = ""
                        ChInfo(ChInfo(nCh).nLinkCh).nLinkCh = nCh
                        ChInfo(ChInfo(nCh).nLinkCh).szCallerId = ChInfo(nCh).szOwnNum
                        ChInfo(nCh).bChk = False
                        ChInfo(nCh).nStep = USER_F_WAIT
                    Else
                        SsmSendTone nCh, 1  'busy tone
                        ChInfo(nCh).szExtensionNum = ""
                        ChInfo(nCh).nLinkCh = -1
                        ChInfo(nCh).bChk = False
                        ChInfo(nCh).nStep = USER_F_HANG
                        ChInfo(nCh).szCallerId = ""
                        ChInfo(nCh).szDtmf = ""
                        
                    End If
                    
                Else
                    ChInfo(nCh).nStep = USER_WAIT_DTMF
                End If

            End Select

        End Select

    EventCallbackProc = 0
    End Function
    Public Function CallbackPt(ByVal PtValue As Long) As Long
        CallbackPt = PtValue
    End Function

    


    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -