Lync 的呼叫轉移

Lync裏面的一個非常重要的功能就是呼叫轉移了,具體的設置方法就是如下。用戶設置一個號碼,然後其它人呼叫該用戶的Lync號碼的時候,無論該用戶的Lync是在線還是離線,呼叫永遠都是轉移到用戶設置在這裏的號碼。即便Lync客戶端離線了,呼叫也可以轉移出去,這樣就一個呼叫都不會漏了。

image

 

到這裏覺得都沒有問題,結果在測試的時候,你會發現這樣的轉移是不成功的。爲什麼?我們首先來看看呼叫的流程

 

image

 

手機用戶呼叫021-88881002,經過網關轉變成爲標準的E.164格式進入Lync,然後Lync用戶設置了把呼叫轉移到自己的手機18687654321,我們先看看網關上收到的數據包。

 

INVITE sip:[email protected];user=phone SIP/2.0
FROM: <sip:18912345678;[email protected];user=phone>;epid=6F3B6CC71C;tag=4d1a2de
TO: <sip:[email protected];user=phone>
CSEQ: 4 INVITE
CALL-ID: 348720d8-329b-45fb-a91c-605866583850
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 192.168.1.62:50044;branch=z9hG4bKeffed08c
CONTACT: <sip:Lync2010.ucdemo.net:5068;transport=Tcp;maddr=192.168.1.62;ms-opaque=55308d269ad5bea4>
CONTENT-LENGTH: 338
SUPPORTED: 100rel
USER-AGENT: RTCC/4.0.0.0 MediationServer
CONTENT-TYPE: application/sdp
ALLOW: ACK
Allow: CANCEL,BYE,INVITE,PRACK,UPDATE
 
v=0
o=- 5 1 IN IP4 192.168.1.62
s=session
c=IN IP4 192.168.1.62
b=CT:1000
t=0 0
m=audio 49226 RTP/AVP 97 101 13 0 8
c=IN IP4 192.168.1.62
a=rtcp:49227
a=label:Audio
a=sendrecv
a=rtpmap:97 RED/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:13 CN/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=ptime:20
 

 

發現一個問題沒有?裏面沒有任何的關於021-88881002的信息,我們可以這麼理解,呼叫達到了Lync之後,Lync重新發起了一路對18687654321的呼叫,而呼叫的主叫則不是Lync用戶,而是原本呼入的手機號碼18912345678。這樣的邏輯卻是也對,因爲18687654321上面應該顯示出主叫是18912345678。但是很遺憾的是,我們國內很多地方的E1線路有一個非常嚴格的規定,要通過這條E1中繼線路發出呼叫,主叫方的號碼必須是你所擁有的DID號碼段內的號碼。所以這樣的呼叫是無法通過E1呼出去的。

 

解決問題的思路就是,針對Lync發起的這路呼叫,我們需要把主叫號碼修改爲Lync用戶的號碼,這樣的呼叫才能順利地進入運營商的網絡。而在這樣的情況下,18687654321上面顯示的主叫號碼則是自己的座機號碼,有點怪,是不是?不過習慣就好。

 

要解決這個問題需要網關和Lync雙方共同完成。

第一步:首先需要Lync送出來的SIP invite帶着原始的Lync用戶信息,

第二步:網關根據這個信息進行相關信息的修改,然後再進行落地。

 

第一步的做法:

在中介服務器上修改:\Program Files\Microsoft Lync Server 2010\Mediation Server\MediationServerSvc.exe.config文件,填入如下的內容,其中192.168.1.198是網關的IP地址。

 

<?xml version=”1.0″ encoding=”utf-8″?>
<configuration>
<appSettings>
<add key=”192.168.1.198.ReferredBySupported” value=”true”/>
</appSettings>
<runtime>
<generatePublisherEvidence enabled=”false”/>
</runtime>
</configuration>

 

image

 

然後重新啓動中介服務。

 

我們在抓一個包看看,

INVITE sip:[email protected];user=phone SIP/2.0
FROM: <sip:18912345678;[email protected];user=phone>;epid=9B06D4BE71;tag=6f47a78d83
TO: <sip:[email protected];user=phone>
CSEQ: 7 INVITE
CALL-ID: ec6fb552-1a09-436c-8141-451b1e52dc5a
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 192.168.1.62:50603;branch=z9hG4bKb8a9fab
CONTACT: <sip:Lync2010.ucdemo.net:5068;transport=Tcp;maddr=192.168.1.62;ms-opaque=6d5c4f1bb489ae4e>
CONTENT-LENGTH: 338
REFERRED-BY: <tel:+862188881002>
SUPPORTED: 100rel
USER-AGENT: RTCC/4.0.0.0 MediationServer
CONTENT-TYPE: application/sdp
ALLOW: ACK
Allow: CANCEL,BYE,INVITE,PRACK,UPDATE
 
v=0
o=- 4 1 IN IP4 192.168.1.62
s=session
c=IN IP4 192.168.1.62
b=CT:1000
t=0 0
m=audio 53782 RTP/AVP 97 101 13 0 8
c=IN IP4 192.168.1.62
a=rtcp:53783
a=label:Audio
a=sendrecv
a=rtpmap:97 RED/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtpmap:13 CN/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=ptime:20
 
 

我們會看到,前面的主叫和被叫都沒有什麼變化,但是裏面卻多了一行,REFERRED-BY: <tel:+862188881002> ,那接下來的工作就簡單很多了,讓網關完成這個轉換過程就可以順利的把呼叫送出去了。在網關上要完成這個動作比較簡單,基本的思路就是取出REFERRED-BY然後替換Calling Number。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章