在网页中实现点击某一电话号码后拨通ip电话

原创 2004年09月24日 23:33:00
拨通电话的功能程序只能用服务商提供的,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

点击网页中的电话号码,实现“呼叫功能”

点击网页中的电话号码,实现“拨号功能”
  • lin931215
  • lin931215
  • 2017年09月17日 13:21
  • 262

实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打

标示文本中的手机号
  • Vincent_lhj
  • Vincent_lhj
  • 2016年11月30日 10:23
  • 2047

点击textView自动打电话属性

android:autoLink="phone"
  • xiyangyang8110
  • xiyangyang8110
  • 2016年09月26日 14:34
  • 330

手机访问页面电话号码,点击弹出拨打电话

这个很简单,今天遇到的一个需求,就记下来了。一行代码 110tel:后面是你要加的电话号码,例如110,就改成和href="tel:110"....
  • lihaitao_1
  • lihaitao_1
  • 2015年09月30日 17:18
  • 2458

Android 拨打webView 里面的电话号码的方法

http://blog.sina.com.cn/s/blog_4cd978f90102vrn9.html
  • lb8942334
  • lb8942334
  • 2016年08月16日 17:16
  • 1723

网页跳转拨打电话

网页开发点击直接拨打电话
  • zhao12238985
  • zhao12238985
  • 2015年01月05日 09:59
  • 854

点击网页上的手机号码直接拨打电话

今天写了一个html5的页面,使用bootstrap了目的是为了实现,一个页面同时适应手机、平板、和电脑不同分辨率的屏幕。在这个页面上有这么一个功能,点击网页上显示的手机号码直接拨打电话。功能很简单实...
  • lanyuxinkong
  • lanyuxinkong
  • 2015年03月13日 14:04
  • 5394

实现TextView中的短电话号码可点击

TextView中的 autolink=”phone”属性默认电话号码大于8位时才会视为电话号码可点击,那么电话号码如果短于8位(如至少5位)该如何设置呢?方法是在TextView 的 setText...
  • bangelua
  • bangelua
  • 2015年03月19日 22:25
  • 2774

android---TextView中电话号码、网址自动链接的实现方法

出自:http://www.cnblogs.com/jico/archive/2010/11/02/1867437.html 假若TextView文本中有电话号码或者网址,我想通过点击电话号...
  • CVSDN
  • CVSDN
  • 2016年03月04日 14:54
  • 2218

网站获取电话号码

首先,我们先来了解下,常规移动网络的连接方式:     1.WIFI,最省钱的方式,手机wifi上网其实电信、联通、移动的移动运营平台没啥事,因为他走的路由器其实是走的传统的有线上网。所以wif...
  • erouououni
  • erouououni
  • 2015年08月26日 11:04
  • 635
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在网页中实现点击某一电话号码后拨通ip电话
举报原因:
原因补充:

(最多只允许输入30个字)