Foxtable(狐表)用户栏目专家坐堂 → 请教老师这个怎么判断


  共有1861人关注过本帖树形打印复制链接

主题:请教老师这个怎么判断

帅哥哟,离线,有人找我吗?
xuzihang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
请教老师这个怎么判断  发帖心情 Post By:2023/12/29 18:04:00 [显示全部帖子]

请教老师   在窗口里有个按钮     怎么判断对方摘机和挂机,我怎么写都不对,

If BriSDKLib.QNV_CTRL_POLARITY Then   '检测反级
                    msgbox("检测反级!", 64, "提示")
                    If BRI_EVENT.lResult > 0 Then ,这里写的不对,  
                        
                        msgbox("对方摘机!", 64, "提示")
                      
                        '        Else BriSDKLib.QNV_GetDevCtrl(Vars("intChannelID"), BriSDKLib.QNV_CTRL_POLARITY, True) Then
                        '                        msgbox("对方未摘机或无反级功能!", 64, "提示")
               
                    End If
End If

------------------------------------------------
以下是参考全局里的代码

' 拨号后,被叫方摘机事件(该事件仅做参考,原因如下:)

' 原因:

' 该事件只适用于拨打是标准信号音的号码时,也就是拨号后带有标准回铃音的号码.

' 如:当拨打的对方号码是彩铃(彩铃手机号)或系统提示音(179xx)都不是标准回铃音时该事件无效.

'

' 反极信号是模拟线路中唯一可靠的判断对方摘机的方法,只是一方面需要开通才有该功能,另一方面在有些地方,即使申请也未必受理,因为该功能原本是针对公用电话计费的.

' 没有该功能,利用信号音做判断依据,但可靠性不能做到100%,尤其是在被叫方为彩铃时,检测率很低

' 拥有反级服务方式一:向电信的PSTN线路申请开通,该方式操作性不强,原因如上所述

' 拥有反级服务方式二:购买一个手机sim/3g卡,再购买一个带反级服务的sim/3g平台设备(200人民币左右),该设备会引出一个电话线接入到USB设备

' BRI_EVENT.lResult : 0 为语音信号分析的结果

' BRI_EVENT.lResult : 1 为反级检测的结果

Public Const BriEvent_RemoteHook  As Integer = 16

 

' 挂机事件

' 如果线路检测到被叫方摘机后,被叫方挂机时会触发该事件,不然被叫方挂机后就触发BriEvent_Busy事件

' 该事件或者BriEvent_Busy的触发都表示PSTN线路已经被断开

' 备注:该事件是根据线路的忙音信号检测,如果没有忙音就不会触发该事件

' 如果有反级服务就为可靠提示

' BRI_EVENT.lResult : 0 为语音信号分析的结果

' BRI_EVENT.lResult : 1 为反级检测的结果

Public Const BriEvent_RemoteHang  As Integer = 17

-----------------

'取得设备的可用模块

Public Function GetModule(ByVal chID As Int16) As String

    Dim strModule As String = ""

    Dim lModule As Long =BriSDKLib.QNV_DevInfo(chID,BriSDKLib.QNV_DEVINFO_GETMODULE)

    If(lModule And BriSDKLib.DEVMODULE_DOPLAY) Then strModule &= "有喇叭/"

    If(lModule And BriSDKLib.DEVMODULE_CALLID) Then strModule &= "有来电显示/"

    If(lModule And BriSDKLib.DEVMODULE_PHONE) Then strModule &= "话机拨号/"

    If(lModule And BriSDKLib.DEVMODULE_SWITCH) Then strModule &= "断开电话机,接收话机按键/"

    If(lModule And BriSDKLib.DEVMODULE_PLAY2TEL) Then strModule &= "播放语音到电话机/"

    If(lModule And BriSDKLib.DEVMODULE_HOOK) Then strModule &= "软摘机/"

    If(lModule And BriSDKLib.DEVMODULE_MICSPK) Then strModule &= "有耳机/MIC/"

    If(lModule And BriSDKLib.DEVMODULE_RING) Then strModule &= "模拟话机震铃/"

    If(lModule And BriSDKLib.DEVMODULE_STORAGE) Then strModule &= "FLASH数据存储/"

    If(lModule And BriSDKLib.DEVMODULE_FAX) Then strModule &= "收发传真/"

    If(lModule And BriSDKLib.DEVMODULE_POLARITY) Then strModule &= "反级检测/"

    Return strModule

End Function


------------------------------------------------------------------------------------------------
以下是二次开的说明

<!--[if !supportLists]-->1.1.1.1 <!--[endif]-->打开/关闭级性反转检测呼叫后对方摘挂机
QNV_CTRL_POLARITY

功能描述 ( Description )

打开/关闭级性反转检测呼叫后对方摘挂机

参数介绍 ( Parameters )

[in] nChannelID

                   控制的通道

[in] nValue

                                                                 0       关闭级性反转摘挂机检测

1       打开级性反转摘挂机检测

返回值 ( Return Values )

大于0表示成功,其它表示失败

备注 (Remarks)

- 对支持该功能的设备才有效

- 反极信号是模拟线路中唯一可靠的判断对方摘机的方法,只是一方面需要开通才有该功能,另一方面在有些地方,即使申请也未必受理,因为该功能原本是针对公用电话计费的。

- 没有该功能,利用信号音做判断依据,但可靠性不能做到100%,尤其是在被叫方为彩铃时,检测率很低

例如 (Example)

QNV_SetDevCtrl(0, QNV_CTRL_POLARITY ,1);


[此贴子已经被作者于2023/12/29 21:15:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 14:13:00 [显示全部帖子]

老师谦虚了,永远是我老师。
报错了,没有参数也没法判断啊
图片点击可在新窗口打开查看此主题相关图片如下:qq图片2323.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2023/12/30 14:13:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 14:40:00 [显示全部帖子]

就是官方给的案例,没有动,下面的好用
-------------------------------------------------
例如:窗口里的 按钮(停止拨号
If BriSDKLib.QNV_General(vars("intChannelID"), BriSDKLib.QNV_GENERAL_STOPDIAL, 0, Nothing) > 0 Then
 BriSDKLib.QNV_SetDevCtrl(Vars("intChannelID"), BriSDKLib.QNV_CTRL_DOHOOK, False)
    If drCurrentRow IsNot Nothing Then
                      drCurrentRow("挂机时间") = Date.Now
      End If
 End If
                          CanAddnew = True
                           CloseContact()
-----------------------------------------------------------

全局代码

Default

Public Speaker As New DotNetSpeech.SpVoice() 'TTS文字转语音

 

'''

Public EventForm As FormEventReport

 

Public drCurrentRow As DataRow

 

Public CanAddnew As Boolean = True

 

'录音结构

<StructLayout(LayoutKind.Sequential)> _

Public Structure tag_pstn_Data

    Public uChannelID As Int16 '设备通道

    Public lPlayFileHandle As Int32 '播放句柄

    Public lRecFileHandle As Int32 '录音句柄

End Structure

 

'呼叫信息结构,用于号码,录音文件路径等

<StructLayout(LayoutKind.Sequential)> _

Public Structure CallLog_Data

    <MarshalAs(UnmanagedType.ByValArray, SizeConst: = BriSDKLib.MAX_BRIEVENT_DATA)> _

    Public szData As [Byte]()

End Structure

 

Public m_tagpstnData(BriSDKLib.MAX_CHANNEL_COUNT) As tag_pstn_Data '所有通道的录音结构

。。。。。

---------------------------------------------------------------------

'页签的全局代码, 和自定义函数和窗口配合

Public Sub Tab_SelectedTabChanged(ByVal sender As Object, ByVal e As EventArgs)

    Dim Tab As C1Command.C1DockingTab = sender

    If Tab.SelectedIndex = 0 Then

        Tab.CanCloseTabs = False

    Else

        Tab.CanCloseTabs = True

    End If

End Sub

Public Sub Tab_TabPageClosing(ByVal sender As Object, ByVal e As C1.Win.C1Command.TabPageCancelEventArgs)

    Functions.Execute("TabPageClosing", sender, e)

End Sub

Public Sub Tab_TabPageClosed(ByVal sender As Object, ByVal e As C1.Win.C1Command.TabPageEventArgs)

    Functions.Execute("TabPageClosed", sender, e)

End Sub



 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 14:44:00 [显示全部帖子]

这个也好用
  BriSDKLib.QNV_SetDevCtrl(Vars("intChannelID"), BriSDKLib.QNV_CTRL_LINEOUT, 1)'自动打开线路输入开关,如果不打开以上连个开关,就不能正常拨号

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 14:47:00 [显示全部帖子]

老师我测试了,没有效果,去电铃声一想起就弹出对话框成功,等真正对方摘机了什么也不提示了; 

盒子有反级功能,但是不知道怎么写判断对方摘挂机的状态; 
[此贴子已经被作者于2023/12/30 14:49:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 14:52:00 [显示全部帖子]

老师能不能官方教程里没有加这个全局参数啊


 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 17:37:00 [显示全部帖子]

老师是这段么,这段是电话机的挂机,现在是检测对方摘机和挂机,也就是说远程摘机和挂机
                        Case BriSDKLib.BriEvent_PhoneHang '电话机挂机
                            StopRecord(EventData.uChannelID) '挂机停止录音
                            AppendStatus("电话机挂机",EventData.uChannelID)
                            If drCurrentRow IsNot Nothing
                                drCurrentRow("挂机时间") = Date.Now
                                AppendCallRecord("电话机挂机",EventData.uChannelID)
                            End If
                            CloseContact()
                            CanAddnew = True
                            Exit Select

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 17:47:00 [显示全部帖子]

老师他是这个意思,我没理解
-------------------------------------------
比如远程摘机,在收到远程摘机消息BriEvent_RemoteHook的时候,如果有反极信号的话,lResult是HOOK_POLARITY(值是1),否则不是这个值
HOOK_POLARITY是一个宏定义的常数,你要比较的是lResult是不是等于这个宏定义的常数

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 18:07:00 [显示全部帖子]

老师,远程挂机好用,我加个提示了,挂机时候弹出来了,现在我试一试远程摘机

 回到顶部
帅哥哟,离线,有人找我吗?
xuzihang
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:332 积分:2471 威望:0 精华:0 注册:2012/6/23 11:15:00
  发帖心情 Post By:2023/12/30 18:12:00 [显示全部帖子]

老师远程摘机   加进去了 这个   没好用   Case BriSDKLib.QNV_CTRL_POLARITY 

 回到顶部
总数 13 1 2 下一页