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

📄 conf.bas

📁 三汇CTI示例程序源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
                        channels(ch).dtmf_str = ""
                    End If
                Else
                    'never forget to store the recent dtmf.
                    channels(ch).dtmf_str = channels(ch).dtmf_str + dtmf
                End If

            ' // Arc 8
            ElseIf (channels(ch).state_conference = CO_IN_CONFERENCE) Then
            
                dtmf = Chr(&HFFFF& And lParam)
                Select Case dtmf
                    Case "*"
                        'verbose infomation

                        SsmGetConfChInfo ch, GrpId, MmbrId, JoinMode, IsSpeaking, SilenceTime
                        SsmGetConfGrpInfo GrpId, TotalMember, TotalSpeaker, TotalSpeaking
                        SsmClearFileList ch
                        'Play "group id is ...".
                        SsmAddToFileList ch, "wav\\j1.wav", -1, 0, -1
                        add_list ch, GrpId
                        'Play "member id is ...".
                        SsmAddToFileList ch, "wav\\j2.wav", -1, 0, -1
                        add_list ch, MmbrId
                        'Play "join mode is ...".
                        SsmAddToFileList ch, "wav\\j3.wav", -1, 0, -1
                        add_list ch, JoinMode
                        'Play "is_speaking is ...".
                        SsmAddToFileList ch, "wav\\j4.wav", -1, 0, -1
                        add_list ch, IsSpeaking
                        'Play "silence time is ...".
                        SsmAddToFileList ch, "wav\\j5.wav", -1, 0, -1
                        add_list ch, SilenceTime
                        'play "total member is ...".
                        SsmAddToFileList ch, "wav\\j6.wav", -1, 0, -1
                        add_list ch, TotalMember
                        'Play "total speaker is ...".
                        SsmAddToFileList ch, "wav\\j7.wav", -1, 0, -1
                        add_list ch, TotalSpeaker
                        'Play "total speaking is ...".
                        SsmAddToFileList ch, "wav\\j8.wav", -1, 0, -1
                        add_list ch, TotalSpeaking
                        SsmPlayFileList ch

                    Case "9"
                        'Stop moving freq
                        'SsmSetVoiceEffect ch, 128
                        
                    Case "1"
                        'Moving freq up, like a woman
                        'SsmSetVoiceEffect(ch, 220);

                    Case "2"
                        'Moving freq down, like a man
                        'SsmSetVoiceEffect(ch, 70);
                         
                    Case "#"
                        
                        SsmPlayFile ch, "wav\\h.wav", -1, 0, -1
                        channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY
                        
                    Case Else
                        'Error! but no operation needed!

                End Select

            '// Arc 10
            ElseIf (channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY) Then
                dtmf = Chr(&HFFFF& And lParam)
                Select Case dtmf
                    Case "#"
                        'Exit talking securely
                        If (Len(channels(ch).dtmf_str) = 0) Then
                            If (channels(ch).ch_to_talk_securely >= 0) Then
                                
                                SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
                                SsmExitConfGroup ch, False
                                SsmJoinConfGroup channels(ch).conf_to_join, ch, channels(ch).last_join_mode, 0, False, False
                             
                                channels(ch).ch_to_talk_securely = -1
                                SsmPlayFile ch, "wav\\o.wav", -1, 0, -1
                            End If
                            
                        'Start talking securely
                        Else
                            If Val(channels(ch).dtmf_str) <> ch And Val(channels(ch).dtmf_str) < 1000 Then
                                channels(ch).ch_to_talk_securely = Val(channels(ch).dtmf_str)
                             
                                If (is_same_group(ch, channels(ch).ch_to_talk_securely)) Then
                                    Dim tmp As Long
                                    Dim tmp2 As Integer
                                    Dim tmp3 As Long
                                    SsmGetConfChInfo ch, tmp, tmp, channels(ch).last_join_mode, tmp2, tmp3
                                    SsmExitConfGroup ch, False
                                    
                                    SsmJoinConfGroup channels(ch).conf_to_join, _
                                            ch, 2, 0, False, False
                                    SsmLinkFrom ch, channels(ch).ch_to_talk_securely
                                    SsmPlayFile ch, "wav\\n.wav", -1, 0, -1
                                    
                                Else
                                    channels(ch).ch_to_talk_securely = -1
                                    SsmClearFileList ch
                                    SsmAddToFileList ch, "wav\\i.wav", -1, 0, -1
                                    SsmPlayFileList ch
                                    
                                End If
                            End If
                            channels(ch).dtmf_str = ""
                        End If
                        channels(ch).state_conference = CO_IN_CONFERENCE
                    Case Else
                        channels(ch).dtmf_str = channels(ch).dtmf_str + dtmf
                End Select

            '// Arc 11
            ElseIf (channels(ch).state_conference = CO_HOW_TO_JOIN) Then
                dtmf = Chr(&HFFFF& And lParam)
                Select Case dtmf
                    'Five entries, corresponding to five join modes.
                    Case "1", "2", "3", "4", "5"
                        If (SsmJoinConfGroup(channels(ch).conf_to_join, ch, Val(dtmf) - 1, 0, False, False) = 0) Then
                            SsmStopPlayFileList get_chs_master(ch)
                            SsmSetPlayDest get_chs_master(ch), 1
                            SsmClearFileList get_chs_master(ch)
                            add_list get_chs_master(ch), ch
                            
                            SsmAddToFileList get_chs_master(ch), "wav\\f.wav", -1, 0, -1
                            SsmStopPlayFile get_chs_master(ch)
                            SsmPlayFileList get_chs_master(ch)
                            channels(get_chs_master(ch)).IsPlayingBgSound = False
                            'SsmBindVCh(ch);
                            'SsmSetVoiceEffect(ch, 128);
                            channels(ch).state_conference = CO_IN_CONFERENCE
                        Else
                            SsmClearFileList ch
                            SsmAddToFileList ch, "wav\\p.wav", -1, 0, -1
                            SsmAddToFileList ch, "wav\\c.wav", -1, 0, -1
                            SsmPlayFileList ch
                        End If

                    'No specified join mode.
                    Case Else
                        SsmClearFileList ch
                        SsmAddToFileList ch, "wav\\e.wav", -1, 0, -1
                        SsmAddToFileList ch, "wav\\c.wav", -1, 0, -1
                        SsmPlayFileList ch
                End Select
            End If
        'Here is the first step in conf flowchart.
        Case TO_START
            If (channels(ch).state_conference = CO_IDLE) Then
                SsmSetDtmfStopPlay ch, True
                SsmPlayFile ch, "wav\\a.wav", -1, 0, -1
                channels(ch).state_conference = CO_CREATE_OR_JOIN
                channels(ch).dtmf_str = ""
            End If
        'Here is the last step in conf flowchart.
        Case TO_END
            If (channels(ch).state_conference = CO_CREATE_OR_JOIN) Then
                If (SsmCheckPlay(ch) = 0) Then
                    SsmStopPlay ch
                End If
                SsmSetDtmfStopPlay ch, False
                channels(ch).state_conference = CO_IDLE
            
            ElseIf (channels(ch).state_conference = CO_HOW_TO_JOIN) Then
                If (channels(ch).creater = True) Then
                    i = search_appoint_confgrp(channels(ch).conf_to_join)
                    SsmStopRecToFile Conf2Master(i).nMaster
                    channels(Conf2Master(i).nMaster).master = MASTER_IDLE
                    SsmFreeConfGroup channels(ch).conf_to_join
                    Conf2Master(i).nConfGrpId = -1
                    Conf2Master(i).nMaster = -1
                    Conf2Master(i).bInUse = False
                End If
                If (SsmCheckPlay(ch) = 0) Then
                    SsmStopPlay ch
                End If
                SsmSetDtmfStopPlay ch, False
                channels(ch).state_conference = CO_IDLE
            ElseIf (channels(ch).state_conference = CO_IN_CONFERENCE Or _
                    channels(ch).state_conference = CO_WHO_TO_TALK_SECURELY) Then
                SsmSetPlayDest get_chs_master(ch), 1
                SsmStopPlayFileList get_chs_master(ch)
                SsmClearFileList get_chs_master(ch)
                add_list get_chs_master(ch), ch
                SsmAddToFileList get_chs_master(ch), "wav\\g.wav", -1, 0, -1
                SsmStopPlayFile get_chs_master(ch)
                SsmPlayFileList get_chs_master(ch)
                channels(get_chs_master(ch)).IsPlayingBgSound = False
                SsmGetConfChInfo ch, GrpId, MmbrId, JoinMode, IsSpeaking, SilenceTime
                SsmGetConfGrpInfo GrpId, TotalMember, TotalSpeaker, TotalSpeaking
                '//SsmSetVoiceEffect(ch, 128);
                '//SsmUnBindVCh(ch);
                If (TotalMember = 2) Then
                    SsmStopRecToFile get_chs_master(ch)
                    SsmExitConfGroup ch, False
                    If (channels(ch).ch_to_talk_securely >= 0) Then
                        SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
                        channels(ch).ch_to_talk_securely = -1
                    End If
                    channels(get_master(GrpId)).master = MASTER_IDLE
                    SsmFreeConfGroup GrpId
                    i = search_appoint_confgrp(GrpId)
                    Conf2Master(i).nConfGrpId = -1
                    Conf2Master(i).nMaster = -1
                    Conf2Master(i).bInUse = False
                Else
                    If (channels(ch).ch_to_talk_securely >= 0) Then
                        SsmStopLinkFrom ch, channels(ch).ch_to_talk_securely
                        channels(ch).ch_to_talk_securely = -1
                    End If
                    SsmExitConfGroup ch, False
                End If
                If (SsmCheckPlay(ch) = 0) Then
                    SsmStopPlay ch
                End If
                SsmSetDtmfStopPlay ch, False
                channels(ch).state_conference = CO_IDLE
            End If
    End Select

    EventCallbackProc = 0
    End Function
    Public Function CallbackPt(ByVal PtValue As Long) As Long
        CallbackPt = PtValue
    End Function
'Get its master channel of the parameter 'conf'
Function get_master(ByVal Conf As Integer) As Integer
    get_master = Conf2Master(search_appoint_confgrp(Conf)).nMaster
End Function

'Get master channel of the conf that parameter 'channel' joined.
Function get_chs_master(ByVal ch As Integer) As Integer
    get_chs_master = channels(ch).nMaster
End Function

'get an idle channel for the master from the array master
Function get_idle() As Integer
    Dim i%
    For i = 0 To total_ch - 1
        If (channels(i).master = MASTER_IDLE) Then
            get_idle = i
            Exit Function
        End If
    Next i
    get_idle = -1
End Function

'check whether the two channel are in the same conference
Function is_same_group(ByVal ch1 As Integer, ByVal ch2 As Long) As Boolean

    Dim group1 As Long
    Dim group2 As Long
    Dim tmp As Long
    Dim tmp2 As Integer
    Dim tmp3 As Long
    If (SsmGetConfChInfo(ch1, group1, tmp, tmp2, tmp2, tmp3) = -1) Then
        is_same_group = False
    End If
    If (SsmGetConfChInfo(ch2, group2, tmp, tmp2, tmp2, tmp3) = -1) Then
        is_same_group = False
    End If

    If group1 = group2 Then
        is_same_group = True
    Else
        is_same_group = False
    End If

End Function
    
    Function search_idle_confgrp() As Integer
    Dim i%
    For i = 0 To master_num - 1
        If (Conf2Master(i).nConfGrpId = -1) Then
            search_idle_confgrp = i
            Exit Function
        End If
    Next i
    search_idle_confgrp = -1
    End Function

Function search_appoint_confgrp(ByVal grp As Integer) As Integer
    Dim i%
    For i = 0 To master_num - 1
        If Conf2Master(i).nConfGrpId = grp Then
            search_appoint_confgrp = i
            Exit Function
        End If
    Next i
    search_appoint_confgrp = -1
End Function
    
Function add_list(ByVal ch As Integer, ByVal num As Long)
Dim a%
Dim d%
Dim s As String
Dim file As String
If num = 0 Then
    SsmAddToFileList ch, "wav\\0.wav", -1, 0, -1
Else
    
    a = Log(num) / Log(10)
    
    Do While a >= 0
        'Get first bit (10-based)
        d = num \ (10 ^ a)
        num = num - d * (10 ^ a)
        a = a - 1
        s = Format(d)
    
        'Cat a filename
        file = "wav\\" + s + ".wav"
        'Add to the playlist
        SsmAddToFileList ch, file, -1, 0, -1
    Loop
End If
End Function

⌨️ 快捷键说明

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