ΪÄúµÄSIPºó¶ËÌí¼ÓWebRTCºÍ´Óä¯ÀÀÆ÷µ÷Óù¦ÄÜ£¬ÓëÈκÎSIP·þÎñÆ÷¼æÈÝ£¬²¢°üÀ¨ÎÞ·ìÐÒéת»»µÄËùÓбØÒª×é¼þ£¬°üÀ¨ÄÚÖÃ×Ô¶¯TLSÖ¤Êé¡¢STUN¡¢TURNºÍ°´Ðè×Ô¶¯±à½âÂëÆ÷ת»»¡£×÷Ϊ͸Ã÷´úÀíÔËÐУ¬²»ÐèÒª¶ÔÄúµÄSIP·þÎñÆ÷½øÐÐÈκθü¸Ä¡£
ÏÔ×ÅÌØµã
VoIP WebRTCÍø¹Ø¿ÉÎ޷켯³Éµ½ÄúÏÖÓеÄSIPºÍVoIP»ù´¡ÉèÊ©¡£ÒÔÏÂÊÇËüµÄÖ÷ÒªÁÁµã¡£
ÍêÕûµÄ½â¾ö·½°¸£ºwebrtc2sipÍø¹Ø°üÀ¨³É¹¦ºÍ¿É¿¿µÄwebrtc-sipת»»ËùÐèµÄÒ»ÇУ¬ÄÚÖÃTURNºÍSTUNÄ£¿é£¬×Ô¶¯Éú³ÉÓÐЧµÄTLSÖ¤Ê飬DTLS/SRTP±àÂëÆ÷/½âÂëÆ÷£¬±à½âÂëÆ÷ת»»£¬Áé»î·ÓÉ£¬WebRTCºÍSIPÖ®¼äµÄת»»ÓÃÓÚÓïÒô¡¢ÊÓÆµ¡¢ÁÄÌì¡¢ºô½Ð×ªÒÆºÍÐí¶àÆäËû¹¦ÄÜ¡£
Ò×ÓÚʹÓõÄͼÐÎÓû§½çÃæ£ºÕýÈ·ºÍ×î¼ÑµÄWebRTC-SIPÅäÖÿÉÄÜÊÇÒ»¸öÕæÕýµÄÌôÕ½¡£VoIPÍø¹Ø²¢·ÇÈç´Ë£¬ÒòΪÔÚÆäGUIÅäÖÃÏòµ¼ÖÐÌṩÁËһЩÏêϸÐÅÏ¢£¨ÀýÈçÄúµÄSIP·þÎñÆ÷IP£©£¬
Ëü½«Õë¶ÔÄúµÄÓÃÀý×Ô¶¯ÓÅ»¯£¬°üÀ¨Õë¶ÔÄúµÄÓ²¼þºÍÍøÂçÓÅ»¯µÄNATÅäÖá¢TLSÖ¤Êé¹ÜÀí¡¢¶Ë¿ÚÉèÖúÍTURN/STUNÉèÖá£
ÍêÕûµÄ½â¾ö·½°¸£ºwebrtc2sipÍø¹Ø°üÀ¨³É¹¦ºÍ¿É¿¿µÄwebrtc-sipת»»ËùÐèµÄÒ»ÇУ¬ÄÚÖÃTURNºÍSTUNÄ£¿é£¬×Ô¶¯Éú³ÉÓÐЧµÄTLSÖ¤Ê飬DTLS/SRTP±àÂëÆ÷/½âÂëÆ÷£¬±à½âÂëÆ÷ת»»£¬Áé»î·ÓÉ£¬WebRTCºÍSIPÖ®¼äµÄת»»ÓÃÓÚÓïÒô¡¢ÊÓÆµ¡¢ÁÄÌì¡¢ºô½Ð×ªÒÆºÍÐí¶àÆäËû¹¦ÄÜ¡£
Ò×ÓÚʹÓõÄͼÐÎÓû§½çÃæ£ºÕýÈ·ºÍ×î¼ÑµÄWebRTC-SIPÅäÖÿÉÄÜÊÇÒ»¸öÕæÕýµÄÌôÕ½¡£VoIPÍø¹Ø²¢·ÇÈç´Ë£¬ÒòΪͨ¹ýÔÚÆäGUIÅäÖÃÏòµ¼ÖÐÌṩһЩÏêϸÐÅÏ¢£¨ÀýÈçÄúµÄSIP·þÎñÆ÷IP£©£¬Ëü½«Õë¶ÔÄúµÄÓÃÀý×Ô¶¯ÓÅ»¯£¬°üÀ¨NATÅäÖá¢TLSÖ¤Êé¹ÜÀí¡¢¶Ë¿ÚÉèÖúÍÕë¶ÔÄúµÄÓ²¼þºÍÍøÂçÓÅ»¯µÄTURN/STUNÉèÖá£
¼æÈÝÐÔ£º
ÔÚ·þÎñÆ÷¶Ë£¬Ëü¼æÈÝËùÓÐÖ§³ÖSIPÐÒéµÄPBX/VoIP·þÎñÆ÷/SIPÖмÌ/´úÀí/Íø¹Ø/ÔËÓªÉÌ£¬ÀýÈçAsterisk¡¢3CX¡¢Broadsoft¡¢Brekeke¡¢Yate¡¢FreePBX¡¢Elastix¡¢Trixbox¡¢Voipswitch¡¢FreeSWITCH¡¢Cisco¡¢Î÷ÃÅ×Ó¡¢»ªÎª¡¢NEC¡¢MitelµÈ¡£¶à¸öSIP·þÎñÆ÷Ö§³Ö£¨½«ºô½Ð·Óɵ½Ò»¸ö»ò¶à¸öSIP·þÎñÆ÷£¬½ÓÊÜÀ´×ÔÒ»¸ö»ò¶à¸ösip·þÎñÆ÷µÄºô½Ð£©¡£»¹Ö§³ÖÖ±½ÓSIP¶ÔµÈ·½¡£
ÔÚ¿Í»§¶Ë£¬Äú¿ÉÒÔʹÓÃÈκÎÔÚRFC7118ÖÐÖ¸¶¨µÄͨ¹ýWebSocketʵÏÖWebRTCºÍSIPµÄ¿â£¬Óë)¼æÈÝ¡£
WebRTC¶ÑÕ»´æÔÚÓÚChrome¡¢Firefox¡¢Edge¡¢OperaµÈä¯ÀÀÆ÷ÖУ¬IE»òSafariµÄWebRTC²å¼þ»òPJSIPµÈÔÉú¿âÖС£Ö§³ÖËùÓг£¼ûµÄWebRTCSIP¿Í»§¶ËºÍJavaScriptWebRTC¿â£¬ÀýÈçVoIP WebRTCSIP¿Í»§¶Ë¡¢ SIPML5¡¢ JSSIP¡¢ JSµÈ¡£ÔÚÖÇÄÜÊÖ»ú¡¢Æ½°åµçÄÔ»ǫ̀ʽ»úÉϹ¤×÷£¬Ê¹ÓÃÈκβÙ×÷ϵͳ£¨Windows¡¢Linux¡¢MAC¡¢Android¡¢iOS
Õâ¸öÔõôÔË×÷
WebRTC-SIPÍø¹Ø½«ÔÚÒÔÏÂÖ®¼äת»»£º
WebRTCÐÒéÌ×¼þ£ºÓÃÓÚÐÅÁîµÄwebsocket(WS/WSS)£¬ÓÃÓÚICEµÄTURN/STUN/RTPºòÑ¡ºÍÓÃÓÚýÌåµÄDTLS/SRTP£¨Í¨³£ÓÉ×îÖÕÓû§´ÓÆää¯ÀÀÆ÷ÖÐʹÓã©
ºÍSIPÐÒéÌ×¼þ£º»ùÓÚUDP/TCPµÄSIPÐÅÁî¡¢ÓÃÓÚýÌåµÄRTP/RTCP²¢Ö§³Ö¸÷ÖÖSIPÀ©Õ¹£¨ÓëÄúÏÖÓеÄIP-PBS»òÈí½»»»ÍêÈ«¼æÈÝ£©
VoIP WebRTCµ½SIPÍø¹ØÊÇWebRTC/SIPÐÒéת»»µÄ“Ò»Ì廯”½â¾ö·½°¸£¬ÄÚÖÃËùÓбØÒªµÄÄ£¿é£¬²¢·Ç³£×¢Òâϸ½Ú£¬ÀýÈçÊÊÓÃÓÚËùÓÐÍøÂçÌõ¼þµÄ¸÷ÖÖÁ¬½ÓÑ¡ÏÌṩ¿É¿¿µÄΪÄúµÄÓû§·þÎñ¡£
WebRTC2SIPÍø¹Ø¾ÍÏñWebRTC¿Í»§¶ËºÍÄúµÄSIP·þÎñÆ÷Ö®¼äµÄSBC£¬Ìṩ¸÷ÖÖ·þÎñ£¬ÀýÈç×¢²áÆ÷¡¢Â·ÓÉ¡¢´úÀí»òB2BUA¡¢rtcweb¶Ï·Æ÷¡¢ICEºÍýÌåתÂëÆ÷¡£Ëü½«Í¸Ã÷µØ¹¤×÷£¬Òò´ËÎÞÐè¸ü¸ÄÏÖÓÐSIP·þÎñÆ÷µÄÈκÎÉèÖÃÀ´´¦ÀíWebRTCÁ÷Á¿¡£Ëü½«Ê¹ÓÃͨÓÃSIPÕªÒªÉí·ÝÑéÖ¤ÒÔÍêȫ͸Ã÷µÄ·½Ê½½«ËùÓÐÉí·ÝÑé֤ת·¢µ½ÄúµÄÈí½»»»»ú£¬Òò´ËÎÞÐèÔÚÍø¹ØÉϽøÐÐÈκÎÓû§¹ÜÀí¡£
Ò»µ©WebRTC¿Í»§¶ËÆô¶¯£¬Ëü½«Í¨¹ýWebSocketÁ¬½ÓÁ¬½Óµ½Íø¹Ø²¢¿ªÊ¼×¢²á¡£ÕâЩÀ´×ÔHTTP/TCPµÄWebsocketÊý¾Ý°üÈ»ºóÓÉÍø¹Ø×ª»»Îª´¿SIPÐÅÁת·¢µ½ÄúµÄSIP·þÎñÆ÷£¨Í¨³£Í¨¹ýUDP£¬µ«ÄúÒ²¿ÉÒÔΪSIP´«ÊäÉèÖÃTCP£©¡£
ÔÚºô½ÐÁ¬½Ó֮ǰ»òºô½ÐÁ¬½Óʱ£¬RTC¿Í»§¶ËÕýÔÚÖ´ÐÐICE²éÕÒÒÔÊÕ¼¯Æä×Ô¼ºµÄºÍ¶ÔµÈµÄýÌ嵨ַ£¨ÐèÒª·¢ËÍýÌåµÄ´«Ê䣺IP£º¶Ë¿Ú×éºÏ£©¡£WebRTCÍø¹Ø½«ÒÔÖÇÄܵķ½Ê½´¦ÀíºÍÏìÓ¦ÕâЩSTUNºÍTURNÇëÇ󣬴ӶøÐγÉ×î¼ÑýÌå·¾¶¡£
ͨ¹ýºô½Ð½¨Á¢(INVITE)£¬WebRTC¿Í»§¶Ë½«ÉÏÊöÊÕ¼¯µÄµØÖ·×÷ΪSDPÖеÄICEºòÑ¡Õß·¢ËÍ¡£Íø¹Ø½«ÊÕ¼¯ËüÃDz¢ÇÒ»¹½«Ìí¼ÓһЩ¶îÍâµÄºòÑ¡£¨Í¨¹ýÍø¹ØµÄUDPºÍTCPÖм̣©£¬µ±Ë«·½Ö®¼äûÓÐÕÒµ½Ö±½Ó·¾¶»òÐèÒª½«DTLS/SRTPת»»ÎªRTPʱ¿ÉÒÔʹÓÃÕâЩºòÑ¡¡£
ÔÚºô½Ð½¨Á¢Ê±£¬Íø¹Ø½«¸ù¾ÝÇé¿ö£¨¿Í»§¶Ë¹¦ÄÜ¡¢¿Í»§¶Ë´ø¿í¡¢·þÎñÆ÷¹¦ÄÜ¡¢·þÎñÆ÷¸ºÔØ¡¢ÅäÖÃºÍÆäËûÒòËØ£©ÐÉÌ×î¼Ñ¿ÉÄܵÄýÌå²ÎÊý¡£
ÔÚͨ»°Ê±£¬WebRTCÍø¹Ø»á½«DTLS/SRTPýÌå´ÓWebRTC£¨Í¨³£ÒÔUDPÁ÷ʽ´«Ê䣬µ«ÓÐʱÒÔTCP´«Ê䣩ת»»Îª¿ÉÓÉÄúµÄSIP·þÎñÆ÷£¨Èí½»»»»ú¡¢IP-PBX¡¢´úÀí»òÆäËûÉ豸£©¡£
ÈçÓбØÒª£¨µ±ÔÚýÌåÐÉ̹ý³ÌÖÐûÓÐÕÒµ½Í¨Óñà½âÂëÆ÷ʱ£©£¬Ëü»¹½«ÔÚWebRTC±à½âÂëÆ÷£¨ÀýÈçG.711»òOPUS£©Ö®¼äת»»ÎªµçÐÅÖÐʹÓõÄͨÓñà½âÂëÆ÷£¨ÀýÈçG.729»òG.723£©Ö´ÐÐתÂ룬ÀýÈçOPUSµ½G.729»òG.729µ½G.711¡£
WebRTCÍø¹Ø»¹½«´¦Àí¶îÍâµÄ¹¦ÄÜ£¬ÀýÈçdtmf¡¢ºô½Ð×ªÒÆ¡¢ºô½Ð×ªÒÆ¡¢ºô½Ð·Ö²æ¡¢»áÒé¡¢ÁÄÌì¡¢SMS¡¢ÊÓÆµ¡¢Îļþ´«Êä¡¢ÔÚÏß״̬µÈ¡£ÆäÖÐһЩ¹¦ÄÜ¿ÉÒÔͨ¹ýÐÒéת»»Ö±½Ó´ÓWebRTCÓ³Éäµ½SIP£¬¶øÆäËû¹¦ÄÜ¿ÉÄÜÐèÒªÓë¿Í»§¶ËÈí¼þ½øÐжÀÌØµÄ´¦ÀíºÍÄÜÁ¦ÐÉÌ¡£
ĬÈÏÇé¿öÏ£¬Íø¹Ø½«¸ù¾ÝÄúÌṩµÄ»ù±¾ÉèÖã¨IP¡¢NATµÈ£©ÅäÖÃ×î¼ÑĬÈÏÖµ£¬µ«ÊÇ´ó¶àÊý²ÎÊýÒ²¿ÉÒÔÊÖ¶¯ÐÞ¸Ä/ÅäÖã¬ÀýÈçʹÓò»Í¬µÄ¶Ë¿Ú¡¢Ç¿ÖÆÌض¨µÄDTMFģʽ»òÇ¿ÖÆÌØ¶¨µÄ±à½âÂëÆ÷ת»»¡£