REFER是SIP的一个扩展请求方法,用于通知接收方(用户代理)访问REFER中提供的URI/URL资源。该方法由RFC3515(The Session Initiation Protocol (SIP) Refer Method)定义。
REFER可以用来实现许多应用功能,比如呼叫转接。例如,A正在和B通话,如果A认为B需要和C通话,那么A可以发送SIP REFER请求给B,并在请求中提供了C的联系地址信息,B收到请求后将尝试呼叫C,与C建立通话。在呼叫过程中,B会向A报告呼叫的状态(是否成功等)。B与C建立通话后,A和B之间的通话会结。
REFER请求通过消息中的Refer-To头域提供要访问的URI/URL资源,示例如下:
用户代理必须联系Refer-To头域中提供的URI标识的资源,如果Refer请求中有0个或多于1个Refer-To头域,用户代理必须回复400(BadRequest)。REFER请求在暗中完成了Refer事件的订阅, 使用NOTIFY机制通知REFER处理的状态。每个NOTIFY必须包含一个类型为“message/sipfrag”的消息体。状态如下:
处理开始:SIP/2.0 100 Trying
处理成功:SIP/2.0 200 OK
处理失败:SIP/2.0 503 Service Unavailable 或者 SIP/2.0 603 Declined
Refer 呼叫流程及消息示例: