freeswitch的主被叫号码

 

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

sip信令中对于主被叫号码有多个头域显示,不同的配置参数又有多种头域组合,当我们在使用fs处理信令时,应该如何设置和获取主被叫号码在恰当的头域中。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.6.20

GCC:4.8.5

测试方案

A->fs1(55.138)->fs2(55.137)->B

A号码使用10011,B号码使用13712345678。

其中fs1上设置号码,fs2上展示获取号码。

rpid模式

fs1使用rpid模式 {sip_cid_type=rpid} ,也是fs的默认模式。拨号计划设置如下。

<action application="export" data="effective_caller_id_name=11111"/>

<action application="export" data="effective_caller_id_number=22222"/>

<action application="bridge" data="{sip_cid_type=rpid,sip_invite_full_from='33333' <sip:+44444@test.com>;tag=QN11rSr6yH0vF,sip_invite_to_uri=<sip:12345678@test.com>}sofia/external/$1@10.55.55.137:5080"/>

 

fs1发出的invite信令如下,头域中会使用“Remote-Party-ID”展示主叫号码。

INVITE sip:13712345678@10.55.55.137:5080 SIP/2.0

From: 33333 <sip:+44444@test.com>;tag=QN11rSr6yH0vF

To: <sip:12345678@test.com>

Remote-Party-ID: "11111" <sip:22222@10.55.55.138>;party=calling;screen=yes;privacy=off

 

fs2使用log展示不同的通道变量值。日志如下。

EXECUTE sofia/external/+44444@test.com log(destination_number=13712345678)

EXECUTE sofia/external/+44444@test.com log(sip_to_user=12345678)

EXECUTE sofia/external/+44444@test.com log(caller_id_name=11111)

EXECUTE sofia/external/+44444@test.com log(caller_id_number=22222)

EXECUTE sofia/external/+44444@test.com log(sip_from_user=+44444)

EXECUTE sofia/external/+44444@test.com log(sip_from_user_stripped=44444)

pid模式

fs1使用pid模式 {sip_cid_type=pid} 。拨号计划设置如下。

<action application="export" data="effective_caller_id_name=11111"/>

<action application="export" data="effective_caller_id_number=22222"/>

<action application="bridge" data="{sip_cid_type=pid,sip_invite_full_from='33333' <sip:+44444@test.com>;tag=QN11rSr6yH0vF,sip_invite_to_uri=<sip:12345678@test.com>}sofia/external/$1@10.55.55.137:5080"/>

 

fs1发出的invite信令如下,头域中会使用“P-Asserted-Identity”展示主叫号码。

INVITE sip:13712345678@10.55.55.137:5080 SIP/2.0

From: 33333 <sip:+44444@test.com>;tag=QN11rSr6yH0vF

To: <sip:12345678@test.com>

P-Asserted-Identity: "11111" <sip:22222@10.55.55.138>

 

fs2使用log展示不同的通道变量值。日志如下。

EXECUTE sofia/external/+44444@test.com log(destination_number=13712345678)

EXECUTE sofia/external/+44444@test.com log(sip_to_user=12345678)

EXECUTE sofia/external/+44444@test.com log(caller_id_name=11111)

EXECUTE sofia/external/+44444@test.com log(caller_id_number=22222)

EXECUTE sofia/external/+44444@test.com log(sip_from_user=+44444)

EXECUTE sofia/external/+44444@test.com log(sip_from_user_stripped=44444)

none模式

fs1使用none模式 {sip_cid_type=none} 。拨号计划设置如下。

<action application="export" data="effective_caller_id_name=11111"/>

<action application="export" data="effective_caller_id_number=22222"/>

<action application="bridge" data="{sip_cid_type=none,sip_invite_full_from='33333' <sip:+44444@test.com>;tag=QN11rSr6yH0vF,sip_invite_to_uri=<sip:12345678@test.com>}sofia/external/$1@10.55.55.137:5080"/>

 

fs1发出的invite信令如下,头域中只有“from”展示主叫号码。

INVITE sip:13712345678@10.55.55.137:5080 SIP/2.0

From: 33333 <sip:+44444@test.com>;tag=QN11rSr6yH0vF

To: <sip:12345678@test.com>

 

fs2使用log展示不同的通道变量值。日志如下。

EXECUTE sofia/external/+44444@test.com log(destination_number=13712345678)

EXECUTE sofia/external/+44444@test.com log(sip_to_user=12345678)

EXECUTE sofia/external/+44444@test.com log(caller_id_name=33333)

EXECUTE sofia/external/+44444@test.com log(caller_id_number=+44444)

EXECUTE sofia/external/+44444@test.com log(sip_from_user=+44444)

EXECUTE sofia/external/+44444@test.com log(sip_from_user_stripped=44444)

总结

fs收到invite信令时,通过“caller_id_number”获取主叫号码的头域优先级,Remote-Party-ID,P-Asserted-Identity,From。

fs收到invite信令时,通过“destination_number”获取的被叫号码是requestline中的号码。

fs收到invite信令时,通过“sip_from_user”和“sip_to_user”获取from和to头域中的号码。

 

空空如常

求真得真

posted @ 2024-02-02 17:34  求真得真  阅读(81)  评论(0编辑  收藏  举报