您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

Kamailio/OpenSIPS学习笔记-如何通过Serial Forking实现呼叫前转

2018-04-23 13:45:25   作者:james.zhu    来源:CTI论坛   评论:0  点击:


  在软交换的呼叫处理过程中,我们经常会遇到呼叫失败或转第三方应用的问题。在实际电话系统的使用场景中,如果用户呼叫某一个分机的话,此分机如果拒绝了此呼叫,则要求IPPBX做进一步的处理,或者转其他分机或者转语音邮箱等。在今天的示例中,我们将使用开源软交换结合媒体服务器实现类似的功能需求。
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄥジ鏌熼惂鍝ョМ闁哄矉缍侀、姗€鎮欓幖顓燁棧闂備線娼уΛ娆戞暜閹烘缍栨繝闈涱儐閺呮煡鏌涘☉鍗炲妞ゃ儲鑹鹃埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涘┑鐐村灍閹崇偤宕堕浣镐缓缂備礁顑呴悘婵嬫倵椤撶喍绻嗛柕鍫濈箳閸掍即鏌涢悤浣镐簽缂侇喛顕ч埥澶娢熻箛鎾剁Ш闁轰焦鍔欏畷銊╊敊鐠侯煈鏀ㄧ紓鍌氬€风粈渚€顢栭崟顖涘殑闁告挷鐒﹂~鏇㈡煙閹规劦鍤欑痪鎯у悑閹便劌顫滈崱妤€骞嬮梺绋款儐閹瑰洭骞冨⿰鍫熷殟闁靛鍎崑鎾诲锤濡や胶鍙嗛梺鍝勬处濮樸劑宕濆澶嬬厵闁告劘灏欓悞鍛婃叏婵犲嫮甯涢柟宄版嚇瀹曘劍绻濋崒娑欑暭闂傚倷娴囧畷鐢稿窗閸℃稑纾块柟鎯版缁犳煡鏌曡箛鏇烆€屾繛绗哄姂閺屽秷顧侀柛鎾寸懇椤㈡岸鏁愰崱娆戠槇濠殿喗锕╅崢鍏肩濠婂懐纾奸柣鎰靛墮椤庢粌顪冪€涙ɑ鍊愮€殿喗鐓¢、妤呭礋椤戣姤瀚奸梻浣告贡鏋繛鎾棑缁骞樼€靛摜顔曢柣鐘叉厂閸涱厼鐓傞梺杞扮閻楀﹥绌辨繝鍥ч柛娑卞枛濞呫倝姊虹粙娆惧剬闁告挻绻勯幑銏犫攽閸モ晝鐦堥梺绋挎湰缁嬫垵鈻嶉敐鍜佹富闁靛牆绻掗崚浼存煏閸喐鍊愭鐐插暞缁傛帞鈧絽鐏氶弲顒€鈹戦悙鏉戠仸閽冮亶鎮归崶鈺佷槐婵﹨娅i幏鐘诲灳閾忣偆浜堕梻浣藉吹閸o附淇婇崶顒€绠查柕蹇曞Л閺€浠嬫倵閿濆簼绨介柛濠勫仱濮婃椽妫冨ù銈嗙洴瀹曟﹢濡搁妷顔藉枠濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬崘顫夐妵鍕冀椤愵澀绮堕梺缁樺笒閻忔岸濡甸崟顖氱闁瑰瓨绻嶆禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘介梺瑙勫劤椤曨厼煤閹绢喗鐓欐い鏃傜摂濞堟粓鏌℃担鐟板闁诡垱妫冮崹楣冩嚑椤掍焦娅﹀┑鐘垫暩婵參骞忛崘顔肩妞ゅ繐鍟版す鎶芥⒒娓氣偓閳ь剚绋撻埞鎺楁煕閺傝法肖闁瑰箍鍨归埞鎴犫偓锝庝簻缁愭稑顪冮妶鍡樼闁瑰啿绉瑰畷顐⑽旈崨顔规嫽婵炶揪绲介幉锛勬嫻閿熺姵鐓欓柧蹇e亝鐏忕敻鏌嶈閸撴艾顫濋妸锔芥珷婵°倓鑳堕埞宥呪攽閻樺弶鎼愮紒鐘垫嚀闇夐柨婵嗙墕閳ь兛绮欐俊鎼佸煛閸屾粌寮抽梻浣告惈閸熺娀宕戦幘缁樼厱閹艰揪绱曢敍宥囩磼鏉堚晛浠辨鐐村笒铻栧ù锝呭级鐎氫粙姊绘担鍛靛綊寮甸鍕仭闁靛ň鏅涚粈鍌溾偓鍏夊亾闁告洦鍓涢崢鐢告⒑閹勭闁稿鎳庨悾宄扮暆閳ь剟鍩€椤掑喚娼愭繛鍙夌矒瀵偆鎷犲顔兼婵炲濮撮鎰板极閸ヮ剚鐓熼柟閭﹀弾閸熷繘鏌涢悙鍨毈婵﹦绮幏鍛存嚍閵壯佲偓濠囨⒑闂堚晝绉剁紒鐘虫崌閻涱喛绠涘☉娆愭闂佽法鍣﹂幏锟�...
  1、在本示例中,我们使用了AVP和Serial Forking,用户需要创建两个分机,然后对接一个媒体服务器来进行实验。在此实验中,我们需要执行和配置相关的文件来保证环境能够正常运行。
  2、在配置流程中,用户首先需要添加一个avp指向外部的媒体服务器和分机邮箱号码。执行的命令如下:
  opensipsctl avp add –T usr_preferences 1004@proxy_ip callfwd 0 sip:2345678@proxy_ip
  // 注意,这里的proxy_IP 是外部媒体服务器的地址,1004 支持了一个语音邮箱。用户需要提前预设好此媒体服务器。
  在cfg文件中,添加需要加载avp 检测:
  if(avp_db_load("$ru","$avp(callfwd)")) {
  $ru=$avp(callfwd);
  xlog("forwarded to: $avp(callfwd)");
  }
  添加busy状态检测和处理流程:
  if (t_check_status("486")) {
  revert_uri();
  prefix("b"); # 表示通知系统播放状态忙信息
  xlog("L_ERR","> 486 ruri=<$ru>");
  route(media);
  route(relay);
  exit;
  }
  // 处理无应答流程:如果超时(408)或者临时不在线(480)
  if (t_check_status("408") || t_check_status("480")) {
  revert_uri();
  prefix("u");# 表示播放无应答消息提示
  xlog("L_ERR","> 480 ruri=<$ru>");
  route(media);
  route(relay);
  exit;
  }
  3、保存以上配置,如果配置成功的话,我们可以使用分机1000 呼叫1004进行测试,此呼叫会转到我们的媒体服务器网关。这里大家要注意,因为,我们在第一部中已经指向了外部的媒体服务器。
  然后,我们可以进行遇忙前转的处理测试。用户可以从1000分机呼叫1001,1001如果拒绝此呼叫后,会收到一个 “486 Busy here”。这里,用户可以很多免费的软电话进行拒绝呼叫测试。
  如果用户1004 呼叫1001时,在一定时间内没有接听,会转向一个此时处理。超市以后则进入到了语音邮箱留言。超时设置可以通过参数:
  modparam(“tm”, “fr_inv_timeout”, 10) //  默认为30秒。
  4、在本讲座中,我们讨论了关于如何使用开源软交换设置呼叫前转的处理方式,包括超时处理和遇忙设置。在此示例中,我们重点使用了avp和状态监测的一些方法。同时,需要用户添加一个新的avp指向外部的媒体服务器。通过此示例,用户可以使用软交换和媒体服务器的语音邮箱集成实现呼叫前转功能实现相对简单呼叫量大的需求。当然,在具体的使用环境中,用户的场景可能更加复杂,例如分机随行等或者转接其他分机或者移动端等功能。这样的需求需要和媒体服务器做进一步的融合才能满足。
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄥジ鏌熼惂鍝ョМ闁哄矉缍侀、姗€鎮欓幖顓燁棧闂備線娼уΛ娆戞暜閹烘缍栨繝闈涱儐閺呮煡鏌涘☉鍗炲妞ゃ儲鑹鹃埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涘┑鐐村灍閹崇偤宕堕浣镐缓缂備礁顑呴悘婵嬫倵椤撶喍绻嗛柕鍫濈箳閸掍即鏌涢悤浣镐簽缂侇喛顕ч埥澶娢熻箛鎾剁Ш闁轰焦鍔欏畷銊╊敊鐠侯煈鏀ㄧ紓鍌氬€风粈渚€顢栭崟顖涘殑闁告挷鐒﹂~鏇㈡煙閹规劦鍤欑痪鎯у悑閹便劌顫滈崱妤€骞嬮梺绋款儐閹瑰洭骞冨⿰鍫熷殟闁靛鍎崑鎾诲锤濡や胶鍙嗛梺鍝勬处濮樸劑宕濆澶嬬厵闁告劘灏欓悞鍛婃叏婵犲嫮甯涢柟宄版嚇瀹曘劍绻濋崒娑欑暭闂傚倷娴囧畷鐢稿窗閸℃稑纾块柟鎯版缁犳煡鏌曡箛鏇烆€屾繛绗哄姂閺屽秷顧侀柛鎾寸懇椤㈡岸鏁愰崱娆戠槇濠殿喗锕╅崢鍏肩濠婂懐纾奸柣鎰靛墮椤庢粌顪冪€涙ɑ鍊愮€殿喗鐓¢、妤呭礋椤戣姤瀚奸梻浣告贡鏋繛鎾棑缁骞樼€靛摜顔曢柣鐘叉厂閸涱厼鐓傞梺杞扮閻楀﹥绌辨繝鍥ч柛娑卞枛濞呫倝姊虹粙娆惧剬闁告挻绻勯幑銏犫攽閸モ晝鐦堥梺绋挎湰缁嬫垵鈻嶉敐鍜佹富闁靛牆绻掗崚浼存煏閸喐鍊愭鐐插暞缁傛帞鈧絽鐏氶弲顒€鈹戦悙鏉戠仸閽冮亶鎮归崶鈺佷槐婵﹨娅i幏鐘诲灳閾忣偆浜堕梻浣藉吹閸o附淇婇崶顒€绠查柕蹇曞Л閺€浠嬫倵閿濆簼绨介柛濠勫仱濮婃椽妫冨ù銈嗙洴瀹曟﹢濡搁妷顔藉枠濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬崘顫夐妵鍕冀椤愵澀绮堕梺缁樺笒閻忔岸濡甸崟顖氱闁瑰瓨绻嶆禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘介梺瑙勫劤椤曨厼煤閹绢喗鐓欐い鏃傜摂濞堟粓鏌℃担鐟板闁诡垱妫冮崹楣冩嚑椤掍焦娅﹀┑鐘垫暩婵參骞忛崘顔肩妞ゅ繐鍟版す鎶芥⒒娓氣偓閳ь剚绋撻埞鎺楁煕閺傝法肖闁瑰箍鍨归埞鎴犫偓锝庝簻缁愭稑顪冮妶鍡樼闁瑰啿绉瑰畷顐⑽旈崨顔规嫽婵炶揪绲介幉锛勬嫻閿熺姵鐓欓柧蹇e亝鐏忕敻鏌嶈閸撴艾顫濋妸锔芥珷婵°倓鑳堕埞宥呪攽閻樺弶鎼愮紒鐘垫嚀闇夐柨婵嗙墕閳ь兛绮欐俊鎼佸煛閸屾粌寮抽梻浣告惈閸熺娀宕戦幘缁樼厱閹艰揪绱曢敍宥囩磼鏉堚晛浠辨鐐村笒铻栧ù锝呭级鐎氫粙姊绘担鍛靛綊寮甸鍕仭闁靛ň鏅涚粈鍌溾偓鍏夊亾闁告洦鍓涢崢鐢告⒑閹勭闁稿鎳庨悾宄扮暆閳ь剟鍩€椤掑喚娼愭繛鍙夌矒瀵偆鎷犲顔兼婵炲濮撮鎰板极閸ヮ剚鐓熼柟閭﹀弾閸熷繘鏌涢悙鍨毈婵﹦绮幏鍛存嚍閵壯佲偓濠囨⒑闂堚晝绉剁紒鐘虫崌閻涱喛绠涘☉娆愭闂佽法鍣﹂幏锟�...
 
  关注微信公众号:asterisk-cn,获得有价值的行业分享
  freepbx 技术论坛:www.ippbx.org.cn
  Asterisk, freepbx技术文档: www.freepbx.org.cn
  欧米(Omni)智能客服解决方案
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com

【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

专题