我正在为通过SIP进行自动调用的脚本工作,并遇到了呼叫者ID的问题。
脚本运行很简单:
- 通过邀请方法访问客户的电话(例如, 1234567890(
- 当客户接听电话时,使用参考方法将呼叫转移给其个人经理。
- 经理通过与客户建立的对话框接收来电。
在步骤2-3上,管理器始终从称为s@1.2.3.4的联系人接收呼叫(其中1.2.3.4是我们的SIP服务器的IP地址(。如何设置客户电话而不是s@1.2.3.4
?
我使用的参考请求如下:
REFER sip:+1234567890@1.2.3.4:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.1:5100;rport;branch=z9hG4bK160892
From: <sip:100@192.168.1.1>;tag=29899
To: <sip:+1234567890@1.2.3.4:5060>
Call-ID: 28990ec994a682147cf87eda75f97664@192.168.1.1
CSeq: 22 REFER
Contact: <sip:100@192.168.1.1:5100>
Max-Forwards: 70
Refer-to: sip:111@1.2.3.4
Referred-By: <sip:+1234567890@1.2.3.4:5060>
Content-Length: 0
这里100是呼叫机器人的SIP ID,192.168.1.1是机器人的IP,111是经理的SIP ID。
我尝试使用这样的参考:
Refer-to: <sip:111@1.2.3.4?Call-ID=28990ec994a682147cf87eda75f97664@192.168.1.1&From=%3Csip%3A%2B1234567890%401.2.3.4%3A5060%3E&Contact=%3Csip%3A%2B1234567890%401.2.3.4%3A5060%3E>
Refer-to: <sip:111@1.2.3.4?Call-ID="69ca6b4e1874aa07569ee234cf746a3c@192.168.1.1"&From="<sip:+1234567890@1.2.3.4:5060>"&Contact="<sip:+1234567890@1.2.3.4:5060>">
Refer-to: <sip:111@1.2.3.4;method=INVITE?Call-ID="d71d3cc87f88eb1522859296889d39fb@192.168.1.1"&From="sip:+1234567890@1.2.3.4:5060"&Contact="<sip:+1234567890@1.2.3.4:5060>">
但没有我预期的事情,即将到来的经理电话的呼叫者ID仍然是s@1.2.3.4
。我们需要正确的呼叫者ID才能获取通话记录。
使用的SIP软件:Kerio操作员(基于星号(。
我可以使用什么参考或其他标题来发送正确的呼叫者ID?
首先,关于请求:
- 引用的标题应包含推荐人的sip uri,而不是裁判的sip uri。
- 参考请求应在现有对话框中发送。看来您在任何对话框的外部发送参考请求(NO提供的标签(。
从您的描述中,我得出您使用B2B SIP服务器。这意味着,当客户的电话( 1234567890@1.2.3.4(收到参考请求时,结果邀请请求将发送到SIP服务器(s@1.2.3.4(。然后,SIP服务器将创建一个新的邀请请求,并将其发送到经理的电话(111@1.2.3.4(。
SIP服务器到管理员手机的邀请请求将包含以下值:
- 到标头 -> 111@1.2.3.4
- 来自标题 -> 1234567890@1.2.3.4
- 联系标头 -> s@1.2.3.4
然后,经理的电话必须将"从标头值"用作呼叫者ID,而不是联系头的值。
您可能要检查
- 如果邀请请求包含正确的标题值
- 如果经理的电话使用右标头确定呼叫者ID。
我希望这会有所帮助。