在网页中实现点击某一电话号码后拨通ip电话
来源:互联网 发布:算法必须有输入和输出 编辑:程序博客网 时间:2024/04/30 08:12
拨通电话的功能程序只能用服务商提供的,Web上所要做的是调用该Com组件,呵呵,就看这种组件提供的接口了。
---------------------------------------------------------------
<!--
--------------------------------------------------------------------------
该页面可以让使用者呼叫指定的地址和接受呼叫。
电话操作有:创建、连接、应答、挂机
在收到打入电话振铃的时候,可以设置电话的优先权
QOS保证(QoS一般从呼叫建立时间、丢包率、抖动(延迟变化)、MOS值和端到端时延几个方面来评价。)
管理视频需要用到tapi控件的IVideoWindow属性,而在vbscript中获取不到window的handle,所以视频是不可以调用的。
注意:调用IVideoWindow属性只能在"stream active"事件发生时
--------------------------------------------------------------------------
-->
<html>
<head>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<title>sinodigital</title>
<SCRIPT LANGUAGE="JavaScript"><!--
var ua = navigator.userAgent;
var an = navigator.appName;
// Is it IE?
bMSIE = (ua.indexOf("MSIE")>=1);
if (! bMSIE)
{
alert("只能在ie中运行");
window.close;
}
//-->
</SCRIPT>
<script LANGUAGE="VbScript">
'下列常量从tapi3if.idl中拷贝
Const TAPIMEDIAMODE_AUDIO = &H08&
Const TAPIMEDIAMODE_VIDEO = &H8000&
Const S_MEDIA_AUDIOVIDEO = &H8008&
Const TD_CAPTURE = 0
Const TD_RENDER = 1
Const QSL_NEEDED = 1
Const AS_INSERVICE = 0
Const DC_NORMAL = 0
Const TE_CALLSTATE = 8
Const TE_CALLNOTIFICATION = 4
Const CS_DISCONNECTED = 3
Const CS_IDLE = 0
Const CS_OFFERING = 4
Const CS_CONNECTED = 2
Const CNE_OWNER = 0
Const CIS_CALLERIDNAME = 0
'IDs接口
'可以在tapi3.idl, tapi3if.idl, rend.idl中找到
Const IID_String_ITMediaSupport = "{B1EFC384-9355-11D0-835C-00AA003CCABD}"
Const IID_String_ITTerminalSupport="{B1EFC385-9355-11D0-835C-00AA003CCABD}"
Const IID_String_ITBasicCallControl = "{B1EFC389-9355-11D0-835C-00AA003CCABD}"
'Const IID_String_ITCallInfo = "{B1EFC390-9355-11d0-835C-00AA003CCABD}"
Const IID_String_ITCallInfo = "{350F85D1-1227-11D3-83D4-00C04FB6809F}"
Const IID_String_ITStreamControl= "{EE3BD604-3868-11D2-A045-00C04FB6809F}"
Const IID_String_ITDirectoryObjectConference= "{F1029E5D-CB5B-11D0-8D59-00C04FD91AC0}"
Const IID_String_ITCallStateEvent = "{62F47097-95C9-11d0-835D-00AA003CCABD}"
Const IID_String_ITCallNotificationEvent = "{895801DF-3DD6-11d1-8F30-00C04FB6809F}"
Const IID_String_IVideoWindow = "{56A868B4-0AD4-11CE-B03A-0020AF0BA770}"
'下面这个CLSID tapi3.h 的定义
Const CLSID_String_VideoWindowTerm = "{F7438990-D6EB-11d0-82A6-00AA00B5CA1B}"
'****************************************************************************
'全局变量
'****************************************************************************
'设置成true,可以在不能完成连接的时候跳过
DIM sUnableToComplete
DIM sbNeedToExit
sUnableToComplete = False
sbNeedToExit = False
DIM pRegisteredCallNotification(50)
DIM pRegisteredName(50)
DIM iQtaRegistered
iQtaRegistered = 0
DIM sCurrentAddressType
sCurrentAddressType = -1
DIM spITCall
spITCall = Empty
DIm pVideoWindow1
DIm pVideoWindow2
</script>
<script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
'错误处理
Sub CheckError(strMsg)
if not Err.number = 0 Then
MsgBox strMsg & ":" & Err.number & ";"&Err.description
sbNeedToExit = True
Err.Clear
End If
End Sub
'********************************************************************
'********************************************************************
'********************************************************************
'********************************************************************
' 枚举拨入电话,并现实在list中
Sub window_onload
On Error Resume Next
'如果Tapi控件没有初试化就退出
If sUnableToComplete = True Then
Exit Sub
End If
'监听所有地址
DIM intTmp
intTmp = Find_Address_And_Register()
If sbNeedToExit Then
Exit Sub
End If
If intTmp = 0 Then
MsgBox "不能找到任何可用ip地址",0,"初试化中"
Exit Sub
End If
' 选择第一个ip地址(如果存在多个ip地址)
selAddress.options(0).selected = True
call changeOptionsState()
window.status = "完成"
End Sub
'********************************************************************
'********************************************************************
'********************************************************************
'********************************************************************
'如果已经启动服务则查找所有地址,计算机必需至少有一个音频设备,并注册所有地址,注册完毕后返回注册地址的数量
Function Find_Address_And_Register()
On Error Resume Next
DIM bUsefulAddress
DIM bSupportVideoOrAudio
DIM bSupportVideo
Find_Address_And_Register = 0
For Each pITAddress in TAPIOBJ.Addresses
bUsefulAddress = False
if pITAddress.State = AS_INSERVICE Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
if not Err.number = 0 Then
Err.Clear
Else
bSupportVideo = pITMediaSupport.QueryMediaType(TAPIMEDIAMODE_VIDEO)
bSupportVideoOrAudio = _
pITMediaSupport.QueryMediaType(TAPIMEDIAMODE_AUDIO) or bSupportVideo
call CheckError("Find_Address_And_Register:ITMediaSupport.QueryMediaType" )
bUsefulAddress = bSupportVideoOrAudio
End If
End If
if bUsefulAddress Then
iQtaRegistered = iQtaRegistered + 1
if bSupportVideo Then
modes = S_MEDIA_AUDIOVIDEO
Else
modes = TAPIMEDIAMODE_AUDIO
End If
pRegisteredCallNotification(iQtaRegistered) = TAPIOBJ.RegisterCallNotifications(pITAddress,True,True,modes,0)
pRegisteredName(iQtaRegistered) = pITAddress.AddressName
if not Err.number = 0 Then 'Probably this address does not support incoming calls
iQtaRegistered = iQtaRegistered - 1
Err.Clear
Else
Find_Address_And_Register = Find_Address_And_Register + 1
End If
DIM oOption
Set oOption = document.createElement("OPTION")
oOption.text = pITAddress.AddressName
oOption.value = pITAddress.AddressName
selAddress.add(oOption)
Set oOption = Nothing
End IF
Next
call TAPIOBJ.SetApplicationPriority("IEXPLORE.EXE",TAPIMEDIAMODE_AUDIO,TRUE)
call TAPIOBJ.SetApplicationPriority("IEXPLORE.EXE",TAPIMEDIAMODE_VIDEO,TRUE)
End Function
Sub changeOptionsState
On Error Resume Next
Selstr = ""
bSupportVideo = false
For i = 0 to selAddress.length - 1
If selAddress.options(i).selected = True Then
selstr = selAddress.options(i).value
Exit For
End If
Next
For Each pITAddress in TAPIOBJ.Addresses
if pITAddress.AddressName =SelStr Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
call CheckError("changeOptionsState:Query ITAddress for ITMediaSupport" )
bSupportVideo = _
pITMediaSupport.Query
---------------------------------------------------------------
<!--
--------------------------------------------------------------------------
该页面可以让使用者呼叫指定的地址和接受呼叫。
电话操作有:创建、连接、应答、挂机
在收到打入电话振铃的时候,可以设置电话的优先权
QOS保证(QoS一般从呼叫建立时间、丢包率、抖动(延迟变化)、MOS值和端到端时延几个方面来评价。)
管理视频需要用到tapi控件的IVideoWindow属性,而在vbscript中获取不到window的handle,所以视频是不可以调用的。
注意:调用IVideoWindow属性只能在"stream active"事件发生时
--------------------------------------------------------------------------
-->
<html>
<head>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<title>sinodigital</title>
<SCRIPT LANGUAGE="JavaScript"><!--
var ua = navigator.userAgent;
var an = navigator.appName;
// Is it IE?
bMSIE = (ua.indexOf("MSIE")>=1);
if (! bMSIE)
{
alert("只能在ie中运行");
window.close;
}
//-->
</SCRIPT>
<script LANGUAGE="VbScript">
'下列常量从tapi3if.idl中拷贝
Const TAPIMEDIAMODE_AUDIO = &H08&
Const TAPIMEDIAMODE_VIDEO = &H8000&
Const S_MEDIA_AUDIOVIDEO = &H8008&
Const TD_CAPTURE = 0
Const TD_RENDER = 1
Const QSL_NEEDED = 1
Const AS_INSERVICE = 0
Const DC_NORMAL = 0
Const TE_CALLSTATE = 8
Const TE_CALLNOTIFICATION = 4
Const CS_DISCONNECTED = 3
Const CS_IDLE = 0
Const CS_OFFERING = 4
Const CS_CONNECTED = 2
Const CNE_OWNER = 0
Const CIS_CALLERIDNAME = 0
'IDs接口
'可以在tapi3.idl, tapi3if.idl, rend.idl中找到
Const IID_String_ITMediaSupport = "{B1EFC384-9355-11D0-835C-00AA003CCABD}"
Const IID_String_ITTerminalSupport="{B1EFC385-9355-11D0-835C-00AA003CCABD}"
Const IID_String_ITBasicCallControl = "{B1EFC389-9355-11D0-835C-00AA003CCABD}"
'Const IID_String_ITCallInfo = "{B1EFC390-9355-11d0-835C-00AA003CCABD}"
Const IID_String_ITCallInfo = "{350F85D1-1227-11D3-83D4-00C04FB6809F}"
Const IID_String_ITStreamControl= "{EE3BD604-3868-11D2-A045-00C04FB6809F}"
Const IID_String_ITDirectoryObjectConference= "{F1029E5D-CB5B-11D0-8D59-00C04FD91AC0}"
Const IID_String_ITCallStateEvent = "{62F47097-95C9-11d0-835D-00AA003CCABD}"
Const IID_String_ITCallNotificationEvent = "{895801DF-3DD6-11d1-8F30-00C04FB6809F}"
Const IID_String_IVideoWindow = "{56A868B4-0AD4-11CE-B03A-0020AF0BA770}"
'下面这个CLSID tapi3.h 的定义
Const CLSID_String_VideoWindowTerm = "{F7438990-D6EB-11d0-82A6-00AA00B5CA1B}"
'****************************************************************************
'全局变量
'****************************************************************************
'设置成true,可以在不能完成连接的时候跳过
DIM sUnableToComplete
DIM sbNeedToExit
sUnableToComplete = False
sbNeedToExit = False
DIM pRegisteredCallNotification(50)
DIM pRegisteredName(50)
DIM iQtaRegistered
iQtaRegistered = 0
DIM sCurrentAddressType
sCurrentAddressType = -1
DIM spITCall
spITCall = Empty
DIm pVideoWindow1
DIm pVideoWindow2
</script>
<script ID="clientEventHandlersVBS" LANGUAGE="vbscript">
'错误处理
Sub CheckError(strMsg)
if not Err.number = 0 Then
MsgBox strMsg & ":" & Err.number & ";"&Err.description
sbNeedToExit = True
Err.Clear
End If
End Sub
'********************************************************************
'********************************************************************
'********************************************************************
'********************************************************************
' 枚举拨入电话,并现实在list中
Sub window_onload
On Error Resume Next
'如果Tapi控件没有初试化就退出
If sUnableToComplete = True Then
Exit Sub
End If
'监听所有地址
DIM intTmp
intTmp = Find_Address_And_Register()
If sbNeedToExit Then
Exit Sub
End If
If intTmp = 0 Then
MsgBox "不能找到任何可用ip地址",0,"初试化中"
Exit Sub
End If
' 选择第一个ip地址(如果存在多个ip地址)
selAddress.options(0).selected = True
call changeOptionsState()
window.status = "完成"
End Sub
'********************************************************************
'********************************************************************
'********************************************************************
'********************************************************************
'如果已经启动服务则查找所有地址,计算机必需至少有一个音频设备,并注册所有地址,注册完毕后返回注册地址的数量
Function Find_Address_And_Register()
On Error Resume Next
DIM bUsefulAddress
DIM bSupportVideoOrAudio
DIM bSupportVideo
Find_Address_And_Register = 0
For Each pITAddress in TAPIOBJ.Addresses
bUsefulAddress = False
if pITAddress.State = AS_INSERVICE Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
if not Err.number = 0 Then
Err.Clear
Else
bSupportVideo = pITMediaSupport.QueryMediaType(TAPIMEDIAMODE_VIDEO)
bSupportVideoOrAudio = _
pITMediaSupport.QueryMediaType(TAPIMEDIAMODE_AUDIO) or bSupportVideo
call CheckError("Find_Address_And_Register:ITMediaSupport.QueryMediaType" )
bUsefulAddress = bSupportVideoOrAudio
End If
End If
if bUsefulAddress Then
iQtaRegistered = iQtaRegistered + 1
if bSupportVideo Then
modes = S_MEDIA_AUDIOVIDEO
Else
modes = TAPIMEDIAMODE_AUDIO
End If
pRegisteredCallNotification(iQtaRegistered) = TAPIOBJ.RegisterCallNotifications(pITAddress,True,True,modes,0)
pRegisteredName(iQtaRegistered) = pITAddress.AddressName
if not Err.number = 0 Then 'Probably this address does not support incoming calls
iQtaRegistered = iQtaRegistered - 1
Err.Clear
Else
Find_Address_And_Register = Find_Address_And_Register + 1
End If
DIM oOption
Set oOption = document.createElement("OPTION")
oOption.text = pITAddress.AddressName
oOption.value = pITAddress.AddressName
selAddress.add(oOption)
Set oOption = Nothing
End IF
Next
call TAPIOBJ.SetApplicationPriority("IEXPLORE.EXE",TAPIMEDIAMODE_AUDIO,TRUE)
call TAPIOBJ.SetApplicationPriority("IEXPLORE.EXE",TAPIMEDIAMODE_VIDEO,TRUE)
End Function
Sub changeOptionsState
On Error Resume Next
Selstr = ""
bSupportVideo = false
For i = 0 to selAddress.length - 1
If selAddress.options(i).selected = True Then
selstr = selAddress.options(i).value
Exit For
End If
Next
For Each pITAddress in TAPIOBJ.Addresses
if pITAddress.AddressName =SelStr Then
DIM pITMediaSupport
Set pITMediaSupport = MAPPER.QueryDispatchInterface(_
IID_String_ITMediaSupport,pITAddress)
call CheckError("changeOptionsState:Query ITAddress for ITMediaSupport" )
bSupportVideo = _
pITMediaSupport.Query
- 在网页中实现点击某一电话号码后拨通ip电话
- ios lable中电话号码点击拨打电话
- 点击网页中的电话号码,实现“呼叫功能”
- IOS加载网页后点击页面号码拨打电话实例
- webView简单使用:网页中有电话,在客户端点击打电话(一)
- Android中Recyclerview使用11----选中某一条目,在点击后取消选中
- 关于在textvie中提取电话号码,点击跳转拨打界面
- 如何实现点击按钮后,隐藏datagrid的某一列
- 实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打
- 实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打
- 手机访问页面电话号码,点击弹出拨打电话
- 安卓开发中实现替换webview加载网页失败时的页面和失败后点击后重新加载
- 可以在网页中点击运行代码
- 在android中实现电话拨打功能
- 在iphone程序中调用 电话,短信,网页,邮件功能
- 在iphone程序中调用 电话,短信,网页,邮件功能
- 点击A链接后网页自动定位在某个位置
- 实现TextView中的短电话号码可点击
- 2004.09.24,Fri - 看了石家庄的图片,想家了
- 从php3升级到php4出现的一个参数传递问题
- Css中奇妙的Expression
- 豺狼哲学
- 俺也装linux 了
- 在网页中实现点击某一电话号码后拨通ip电话
- 我们真的需要英雄?
- 从头上拔下根黑色的线来
- 把男友升级为老公的时候发生的BUG
- 影视音乐,不了的情怀
- 有沒有愛是可以重來的 (一)
- 男人25岁前的忠告
- What does "8Ball is focused on designers" mean?
- DirectX