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

ChatGPT电话接入:PSTN语音交互的工程实现与场景价值 语音助手本质上是人机交互的桥梁,其核心在于语音识别(ASR)、语义理解与语音合成(TTS)三大技术模块的协同。传统App语音受限于网络稳定性、系统权限和用户认知门槛,而基于PSTN电话网的AI语音交互,则依托电信级信令容错、离线知识快照与强意图锚定等设计,在信号弱、环境噪、操作简等真实约束下保障关键信息可达。这种‘为场景而生’的架构,显著提升了医疗咨询、老年服务、应急响应等高可靠性需求场景的可用性。ChatGPT电话版正是将ASR鲁棒性、TTS韵律控制与本地化知识图谱深度融合的典型实践,代表了AI从数字原生 阅读详情
拨通电话的功能程序只能用服务商提供的,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
构建VoIP Web callback系统 ---基于Web方式的phone2phone通信方式(2)     体验方式 我们使用开源软交换机(open-source IPBX)Asterisk实现Web callback功能,用户体验方式为: 1. 在首页输入您的电话号码:  2.点击“立即拨打”按钮:   3在弹出页面输入您朋友的电话号码(固定电话加区号) 4点击绿色“呼叫”按钮上面弹出来的对话框 阅读详情

相关推荐

网页回拨电话源代码(python)

网页回拨电话源代码 Python的 基于标准sip协议,windows下

实现手机访问网站时点击手机号码直接拨打电话的功能

目前基本所有浏览器都支持WTAI函数了,WTAI 全称Wireless Telephony Applications Interface ;这个函数最长用的功能是拨打电话功能,并且在不同机型上基本适应差不多了,但是发送短信功能还不大行,很多手机不支持。 下面简单说一下几个常用功能:拨打电话、发送短信、存入电话薄 <a href="wtai://wp/mc;10000">拨打10000电...

日常爱喝茶,闲时聊科技 4018

东方网络电话免费回拨源码

东方网络电话免费回拨源码

uniApp点击拨打手机号

记录自己在使用uniapp拨打手机的api时遇到并解决的问题,防止下次会忘记

m0_66202404的博客 442

免费电话(回拨、网络)

免费电话 回拨电话 网络电话 demo 免费使用!

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1109

网站调用手机的拨号键实现直接进行拨号

12345678网站调用手机的拨号键实现直接进行拨号,直接替换上面的12345678为需要拨打的联系方式即可。

小菜鸟的HelloWorld 1372

【大模型】一图看懂3D因果卷积!

本文将系统性地介绍从1D到3D的因果卷积原理,通过直观的动图演示帮助读者理解其工作机制,并重点探讨3D因果卷积在大规模视频生成中的独特价值和应用前景。

xian0710830114的专栏 2199

H5页面拨打电话

h5网页中使用打电话功能 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法。 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能。 1.最常用WEB页面JS实现一键拨...

boy火巨的博客 1619

Blender - Shrinkwrap - 更方便的制作贴合模型的表面来建模

Shrinkwrap 修改器 使用 Blender 想要快速建模可以贴合现有模型表面的效果:衣服、皮肤、等效果,可以使用 Shrinkwrap 修改器,这个修改器的名字其实按照英文上的理解,翻译为:收缩的包裹效果 应用 如这块铁皮,它要贴合机身弯曲的效果,可以先建好一个铁皮,再 Shrinkwrap 到一个指定的网格上 留意的参数 Target 要贴合的对象(目前我已知是可以贴合到网格对象上,实在是方便) VertexGroup 顶点组,和之前讲到过的,顶点组可以组设顶点的权重,意思这个可.

Jave.Lin 的学习笔记 6068

数据分析面试八股文--技能软件类

数据分析的“三板斧"指的是三个在 Python 数据分析领域广泛使用的库:NumPy,Pandas,和 Matplotlib。这三个库提供了处理和分析数据的强大工具。NumPyNumPy(Numerical Python)是一个开源 Python 库,用于支持大型多维数组和矩阵运算。此外,NumPy 还提供了大量的数学函数来操作这些数组。np.array():创建数组np.arange():返回一个有终点和起点的固定步长的排列。

zfyzfw的博客 4377

h5点击电话号跳转手机拨号

我们首先在<head>标签中添加代码。需要使用到h5的 <a>标签。然后再想要的位置添加代码。这样最重的样式是这样的。

newbaby123的博客 2933

从压电传感器到示波器:手把手教你用CA3140搭建电荷放大器(含PCB布局与调零技巧)

本文详细介绍了如何使用CA3140运算放大器搭建专业级电荷放大器,从压电传感器信号特性分析到PCB布局与调零技巧,全程实战演示。重点解析了CA3140的低通滤波器设计、反馈网络参数计算及抗干扰增强方案,帮助电子爱好者高效实现微弱电荷信号的稳定转换与测量。

weixin_31355483的博客 597

什么是IP地址、子网掩码、网关、DNS

IP地址是设备在网络中的唯一标识,类似于每个设备的“住址”,用于标识网络中的设备和它们的位置。

lonelyxxyo的博客 3204

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

情感分析在金融领域的应用:舆情影响股价预测

我们都知道,股价的波动受到多种因素的影响,而大众的情绪和看法就是其中很重要的一部分。我们在日常生活中都有根据别人的评价来判断事物好坏的经验,在金融市场里,舆情就像是大众对某家公司的集体评价,它能反映出市场参与者的情绪和预期。学习这方面的知识,能帮助投资者更好地把握市场动态,做出更明智的投资决策,无论是个人投资者还是金融机构的分析师,都能从中受益。有一天,你看到某家知名企业被曝光了严重的产品质量问题,新闻铺天盖地,股民们也都在热议纷纷,负面情绪弥漫。这时,你会不会觉得这家公司的股价可能要下跌了呢?

AI 原生应用开发的博客 1147

从订外卖的角度来理解- 一个网页是如何到你手上的。

我们先来想像这么一个场景:有一个名字叫做linux的美食城 ,  然后这个美食城的第80号店铺 名字叫做Apache ,你进入店中 , 服务员立马递给你一个菜单index.html  然后你开始浏览菜单,你发现菜单上有两种菜系,一种是川菜(后缀php)  ,另一种是粤菜(后缀jsp) 。 接下来你开始点菜了,  你想吃一道川菜:麻婆豆腐.php    还想吃一道粤菜:盐焗鸡.jsp   你点好单后...

SVNzK的博客 451

btstack ble ota开发笔记(2)-mcuboot移植

紧接上一篇文章,要实现一个完整的ota demo,除了实现ota image的传输通道外,还需要“bootloader”这个角色来帮我们实现ota image的校验、安全、引导以及启动,这里我选择开源的组件mcuboot,下面开始介绍mcuboot在stm32f4-discovery上的移植。首先估算下bootloader & application image的大小,确定好flash的分布情况,因为后续会涉及到flash的操作(读、写、擦除),为了方便程序的编写,各个image area在flash中的起

weixin_38177846的博客 2350

DNS的故事:从域名到IP,它是如何悄悄帮你上网的?—— 一份按时间线展开的 DNS 完全解析

你是否想过,每次你在浏览器中输入像 **http://www.google.com** 这样好记的网址,背后的电脑是怎么找到这个网站的实际位置的? 答案就是——**DNS(Domain Name System,域名系统)**

weixin_43172311的博客 2228

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java网络编程概述和两个描述IP的类——InetAddress类及 InetSocketAdress类

  网络编程要解决的问题:一是确认数据传输的起点和终点,我们不关注数据传输通道如何建立,这属于更底层,我们只关注通道两端的计算机的映射是如何建立的。二是确保数据传输的安全与高效,安全意味着数据不能被丢失和篡改、用算法层层封装,导致数据臃肿,导致传输成本高与低效;而确保数据的高效意味着数据要轻简传输,这使数据的安全得不到保障。所以程序员要根据不同场景取舍。   网络编程与网页编程是不...

aimee12012的博客 200

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

浏览器打开域名变成localhost_科普:网页打开的过程中经历了什么?

文适用于编程初学者或者对网页打开的过程感兴趣的朋友来阅读,本文希望以大家都能读懂的方式去描述网页打开的过程,其中每一个环节展开来讲都能单独成一篇长文,希望以后有机会再与大家探讨。现代人。早上一睁眼,先看一眼手机……上班路上看了一路手机……吃饭依然在看手机……上厕所坐马桶上依然在看手机,要是忘了带手机,提上裤子出去拿了手机回来继续……晚上睡觉前还在看手机……曾经衣食住行是我们生活的必须条件,当进社会...

weixin_39946313的博客 2386

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

多方通话从预约走向自助

中国的电话会议业务已开展多年,目前市场上存在着众多面向企业用户的电话会议通信产品。然而,用户经常抱怨,他们开电话会议时,如果使用传统的电话会议产品,需要事先预约电话会议的时间和方数,会议中途既不能临时延长、缩短会议时间,也不能随意增减通话的方数。 6月12日,263网络通信公司在北京发布了其CC电话会议产品,正是出于对当前电话会议用户需求的考虑以及行业发展现状的把握。基于互联网与通信的融合,C

zhangmingde的专栏 777

ping和网关入门(一)

    先了解下网关;  举个例子, 从一个房间走到另一个房间,必然要经过一扇门。   同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。   默认网关的意思是:   一个房间肯定有很多扇门,一个网络主机中有多个网关,   那如果一台主机找不到网关,就会把数据包发给默认指定的网关,   由这个网关处理数据包;   默认网关一般填写:192.168.X.1   今天很...

天程十八的博客 1万+

端口地址

我们都知道,用IE浏览网站,通常使用HTTP 80端口,而连接FTP服务器下载软件,一般情况下使用的端口数字会是21。那么,这些奇怪的数字到底是什么,又有什么用途呢? 我们先来做一个假设,假设你在一家很大的公司工作,这个公司有许多的部门:市场部、销售部、售前支持部、售后服务部、行政部、人事部……,但这些部门共用同一个商业电话号码。这样,当某个客户拨打此电话号码寻求相...

weixin_34400525的博客 250

鱼叉式钓鱼攻击

目录 鱼叉式钓鱼攻击 攻击目标 钓鱼技术 链接操控 过滤器规避 网站伪造 电话网钓 WIFI免费热点网钓 隐蔽重定向漏洞 鱼叉式钓鱼攻击 鱼叉式钓鱼(Spear phishing)指一种源于亚洲与东欧只针对特定目标进行攻击的网络钓鱼攻击。 攻击目标 由于鱼叉式网络钓鱼锁定之对象并非一般个人,而是特定公司、组织之成员,故受窃之数据已非一般网络钓鱼所窃取之个人资料,而是其他高度敏感性资料,如知识产权及商业机密。 网络钓鱼是指诱导人们连接那些已经被黑客锁定的目标。这种攻击方法的成功率很

谢公子的博客 7376
上一篇: C#程序员面试(一)答案
下一篇: SQL导出数据到EXCEL文件
abaowu
博客等级 码龄22年 68粉丝 169原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值