Click to Dial
Click to Dial,我们称之为点击呼叫或页面点击呼叫。浏览器用户以插件的形式或者页面的形式通过浏览器访问点击界面。用户通过点击页面的一个SIP URL链接,页面点击呼叫消息传递给电脑SIP终端,终端配置了呼叫方的SIP URL地址,通过REFER发送SIP终端,然后SIP终端和被呼叫方创建一个会话连接,实现双方呼叫。
![ec78e0137c38d68884b3bc9d71bb2558.png](https://i-blog.csdnimg.cn/blog_migrate/9644c95a35851d72c65fbcf69a46f8d0.jpeg)
这里的呼叫场景适合于简单的点对点的SIP呼叫场景。如果用户通过媒体服务器实现呼叫的话,处理流程和我们现在讨论的有所不同。具体的呼叫流程如下:
![71a0bcb953ce2d1dde23fe524abf1ec6.png](https://i-blog.csdnimg.cn/blog_migrate/32f3de59c78b88c293c40052aa8fac83.jpeg)
现在,我们配合具体的SIP消息内容和每一个流程来简单说明点击呼叫的处理过程。
![ace677655e68398a6419b4060ba0de2c.png](https://i-blog.csdnimg.cn/blog_migrate/2e91bedd1bf08650604fc8e71198eadf.jpeg)
首先,Bob的PC端SIP对BobSIP电话发送REFER消息(F1),这里的头域中设置了Refer-Sub:false,这表示PC端要求不生成REFER的dialog,仅支持2XX响应消息。关于Refer-Sub的使用方法和参数设置,读者可以查阅RFC4488。
![7f0cf66424d1f412e96ea2a8f340b09b.png](https://i-blog.csdnimg.cn/blog_migrate/03d9b44748c4d10cd261c1614e20e44b.jpeg)
然后,BobSIP电话终端回复202 接受(F2):
![59ccaa8a6d118253da596649719d6e77.png](https://i-blog.csdnimg.cn/blog_migrate/fdd7a194c513f302eca7c5eaa3fec6fe.jpeg)
接下来,Bob对Carol发送INVITE请求消息,表示需要对Carol进行呼叫(F3):
![54edc437837bc0f2bbd633ff1ec18637.png](https://i-blog.csdnimg.cn/blog_migrate/bf6f1ff7de1dfacccd2b635471af6707.jpeg)
接下来,Carol对Bob SIP 电话回复180 振铃(F4):
![465687907e222cb0694deb250ee1e61d.png](https://i-blog.csdnimg.cn/blog_migrate/168a1680d222dbb75003acbe0976022f.jpeg)
然后,Alice对Bob SIP电话回复200 OK(F5):
![1f0060ebea8fad141fbd96f61843af24.png](https://i-blog.csdnimg.cn/blog_migrate/d5b0a2b9947f9cf4b23b4e0718d7adcf.jpeg)
接下来,Bob的SIP 电话回复ACK确认消息(F6),然后实现双方语音流传输。
![a81915915f3197d9206a08559a5bfa9f.png](https://i-blog.csdnimg.cn/blog_migrate/c2e4a374b30e2bd41754444d88a69366.jpeg)
到此为止,整个点击呼叫的流程结束,双方开始电话互通。
事实上,现在点击呼叫业务功能可以通过很多种方式实现,可以通过浏览器插件的形式实现,也可以通过HTML加脚本语言的形式实现,WebRTC或者邮件终端插件工具来实现。
![6227dd9eff281b7300a1c7b00850c0cb.png](https://i-blog.csdnimg.cn/blog_migrate/512e5b635e7ef43f2e4f9ea98697fe82.jpeg)
特别是基于开源软交换的平台,例如Asterisk/FreePBX或者FreeSWITCH都可以通过接口语言来开发更加灵活的点击呼叫功能。例如,通过脚本语言加Asterisk AMI接口实现的页面点击呼叫功能。用户可以下载以下代码来实现点击呼叫功能。以下是一个PHP的页面点击呼叫实例地址,读者可以参考:
https://github.com/spbx/Simple-Click2Call-for-Asterisk-PBX/blob/master/click2dial.php
基于Asterisk的点击呼叫的插件,用户可以参考TBDialOut来实现,开源项目地址:
http://www.oak-wood.co.uk/tbdialout/
![ae4bad4dffa7c9437b2a828ed997501c.png](https://i-blog.csdnimg.cn/blog_migrate/c79ff183564478b600532319d4bfe02d.jpeg)