Independent Submission                                           S. Levy
Request for Comments: 5806                                 Cisco Systems
Category: Historic                                        M. Mohali, Ed.
ISSN: 2070-1721                                              Orange Labs
                                                              March 2010
        
Independent Submission                                           S. Levy
Request for Comments: 5806                                 Cisco Systems
Category: Historic                                        M. Mohali, Ed.
ISSN: 2070-1721                                              Orange Labs
                                                              March 2010
        

Diversion Indication in SIP

SIP中的分流指示

Abstract

摘要

This RFC, which contains the text of an Internet Draft that was submitted originally to the SIP Working Group, is being published now for the historical record and to provide a reference for later Informational RFCs. The original Abstract follows.

本RFC包含最初提交给SIP工作组的互联网草案的文本,目前正在发布,以备历史记录,并为以后的信息RFC提供参考。原始摘要如下。

This document proposes an extension to the Session Initiation Protocol (SIP). This extension provides the ability for the called SIP user agent to identify from whom the call was diverted and why the call was diverted. The extension defines a general header, Diversion, which conveys the diversion information from other SIP user agents and proxies to the called user agent.

本文档建议对会话启动协议(SIP)进行扩展。此扩展为被调用的SIP用户代理提供了识别呼叫从谁处转移以及呼叫转移原因的能力。该扩展定义了一个通用头Diversion,它将来自其他SIP用户代理和代理的转向信息传递给被调用的用户代理。

This extension allows enhanced support for various features, including Unified Messaging, Third-Party Voicemail, and Automatic Call Distribution (ACD). SIP user agents and SIP proxies that receive diversion information may use this as supplemental information for feature invocation decisions.

此扩展支持各种功能,包括统一消息、第三方语音邮件和自动呼叫分配(ACD)。接收转移信息的SIP用户代理和SIP代理可以将其用作功能调用决策的补充信息。

Status of This Memo

关于下段备忘

This document is not an Internet Standards Track specification; it is published for the historical record.

本文件不是互联网标准跟踪规范;它是为了历史记录而出版的。

This document defines a Historic Document for the Internet community. This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not a candidate for any level of Internet Standard; see Section 2 of RFC 5741.

本文档定义了互联网社区的历史文档。这是对RFC系列的贡献,独立于任何其他RFC流。RFC编辑器已选择自行发布此文档,并且未声明其对实现或部署的价值。RFC编辑批准发布的文件不适用于任何级别的互联网标准;见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc5806.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc5806.

IESG Note

IESG注释

This document contains an early proposal to the IETF SIP Working Group that was not chosen for standardization. Discussions on the topic resulted in the informational RFC 3325, "Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks", and the standard solution that was chosen can be found in RFC 4244, "An Extension to the Session Initiation Protocol (SIP) for Request History Information".

本文件包含向IETF SIP工作组提交的早期提案,该提案未被选为标准化提案。关于该主题的讨论产生了信息性RFC 3325,“在可信网络中声明身份的会话启动协议(SIP)的专用扩展”,所选择的标准解决方案可在RFC 4244“请求历史信息的会话启动协议(SIP)扩展”中找到。

Copyright Notice

版权公告

Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2010 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。

Table of Contents

目录

   1. Introduction ....................................................4
   2. Terminology .....................................................4
      2.1. Requirements Language ......................................4
      2.2. Definitions ................................................4
      2.3. Abbreviations ..............................................5
   3. Overview ........................................................5
      3.1. When Is the Diversion Header Used? .........................6
   4. Extension Syntax ................................................6
   5. Detailed Semantics ..............................................7
      5.1. UAS Behavior ...............................................7
      5.2. UAC Behavior ...............................................7
      5.3. Redirect Server Behavior ...................................7
      5.4. Proxy Server Behavior ......................................7
   6. Examples Using Diversion Header .................................8
      6.1. Call Forward Unconditional .................................8
      6.2. Call Forward on Busy ......................................13
      6.3. Call Forward on No-Answer .................................17
      6.4. Call Forward on Unavailable ...............................21
      6.5. Multiple Diversions .......................................24
   7. Security Considerations ........................................27
   8. Further Examples ...............................................27
      8.1. Night Service/Automatic Call Distribution (ACD)
           Using Diversion Header ....................................27
      8.2. Voicemail Service Using Diversion Header ..................36
      8.3. Questions and Answers on Alternative Approaches ...........41
 9. Mapping ISUP/ISDN Redirection Information to SIP
      Diversion Header ...............................................42
      9.1. Mapping ISUP/ISDN Diversion Reason Codes ..................42
      9.2. Mapping ISUP Redirection Information to SIP
           Diversion Header ..........................................43
      9.3. Mapping ISDN Redirection Information to SIP
           Diversion Header ..........................................47
      9.4. Information Loss in SIP to ISUP/ISDN Translation ..........52
   10. Contributors ..................................................53
   11. Acknowledgements ..............................................53
   12. Normative References ..........................................53
        
   1. Introduction ....................................................4
   2. Terminology .....................................................4
      2.1. Requirements Language ......................................4
      2.2. Definitions ................................................4
      2.3. Abbreviations ..............................................5
   3. Overview ........................................................5
      3.1. When Is the Diversion Header Used? .........................6
   4. Extension Syntax ................................................6
   5. Detailed Semantics ..............................................7
      5.1. UAS Behavior ...............................................7
      5.2. UAC Behavior ...............................................7
      5.3. Redirect Server Behavior ...................................7
      5.4. Proxy Server Behavior ......................................7
   6. Examples Using Diversion Header .................................8
      6.1. Call Forward Unconditional .................................8
      6.2. Call Forward on Busy ......................................13
      6.3. Call Forward on No-Answer .................................17
      6.4. Call Forward on Unavailable ...............................21
      6.5. Multiple Diversions .......................................24
   7. Security Considerations ........................................27
   8. Further Examples ...............................................27
      8.1. Night Service/Automatic Call Distribution (ACD)
           Using Diversion Header ....................................27
      8.2. Voicemail Service Using Diversion Header ..................36
      8.3. Questions and Answers on Alternative Approaches ...........41
 9. Mapping ISUP/ISDN Redirection Information to SIP
      Diversion Header ...............................................42
      9.1. Mapping ISUP/ISDN Diversion Reason Codes ..................42
      9.2. Mapping ISUP Redirection Information to SIP
           Diversion Header ..........................................43
      9.3. Mapping ISDN Redirection Information to SIP
           Diversion Header ..........................................47
      9.4. Information Loss in SIP to ISUP/ISDN Translation ..........52
   10. Contributors ..................................................53
   11. Acknowledgements ..............................................53
   12. Normative References ..........................................53
        
1. Introduction
1. 介绍

This RFC, which contains the text of an Internet Draft that was submitted originally to the SIP Working Group, is being published now for the historical record and to provide a reference for later Informational RFCs.

本RFC包含最初提交给SIP工作组的互联网草案的文本,目前正在发布,以备历史记录,并为以后的信息RFC提供参考。

In the legacy telephony network, redirection information is passed through the network in ISDN/ISUP (ISDN User Part) signaling messages. This information is used by various service providers and business applications to support enhanced features for the end user.

在传统电话网络中,重定向信息在ISDN/ISUP(ISDN用户部分)信令消息中通过网络传递。各种服务提供商和业务应用程序使用此信息来支持最终用户的增强功能。

An analogous mechanism of providing redirection information would enable such enhanced features for SIP users.

提供重定向信息的类似机制将为SIP用户启用此类增强功能。

The Diversion header allows implementation of feature logic based on from whom the call was diverted.

转接头允许基于呼叫转接人实现功能逻辑。

2. Terminology
2. 术语
2.1. Requirements Language
2.1. 需求语言

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

2.2. Definitions
2.2. 定义

diversion:

改道:

A change to the ultimate destination endpoint of a request. A change in the Request-URI of a request that was not caused by a routing decision. This is also sometimes called a deflection or redirection.

对请求的最终目标端点的更改。不是由路由决定引起的请求的请求URI的更改。这有时也称为偏转或重定向。

A diversion can occur when the "user" portion of the Request-URI is changed for a reason other than expansion or translation.

当请求URI的“用户”部分由于扩展或转换以外的原因发生更改时,可能会发生转移。

A diversion can occur when only the "host" portion of the Request-URI has changed if the change was due to a non-routing decision.

如果更改是由于非路由决定引起的,则当请求URI的“主机”部分仅发生更改时,可能会发生转移。

divertor:

偏滤器:

The entity that diverted the call.

转移呼叫的实体。

recursing:

递归:

A SIP proxy or user agent that handles a received or internally generated 3xx response by forking new request(s) itself.

一种SIP代理或用户代理,通过自身分叉新请求来处理接收到的或内部生成的3xx响应。

non-recursing:

非递归:

A SIP proxy or user agent that handles a received or internally generated 3xx response by forwarding it upstream.

一种SIP代理或用户代理,通过向上游转发来处理接收到的或内部生成的3xx响应。

2.3. Abbreviations
2.3. 缩写

CFUNC: Call Forward Unconditional

CFUNC:无条件呼叫转发

CFTOD: Call Forward Time-of-Day

CFTOD:一天中的提前呼叫时间

CFB: Call Forward on Busy

CFB:忙时呼叫前转

CFNA: Call Forward on No Answer

CFNA:无应答呼叫

CFUNV: Call Forward Unavailable

CFUNV:呼叫转发不可用

ACD: Automatic Call Distribution

自动呼叫分配

3. Overview
3. 概述

In order to implement certain third-party features such as Third-Party Voicemail and Automatic Call Distribution (ACD) applications, diversion information needs to be given to the called third party so that he may respond to the caller intelligently. In these situations, the party receiving a diverted call needs answers for two questions:

为了实现某些第三方功能,例如第三方语音邮件和自动呼叫分配(ACD)应用程序,需要向被叫第三方提供转移信息,以便他可以智能地响应呼叫者。在这些情况下,接收转接呼叫的一方需要回答两个问题:

Question 1: From whom was the request diverted?

问题1:请求是从谁那里转移过来的?

Question 2: Why was the request diverted?

问题2:为什么请求被转移?

This document proposes usage of the Diversion header to answer these questions for the party receiving the diverted call.

本文件建议使用转接头为接收转接呼叫的一方回答这些问题。

Insertion of the previous Request-URI (before the diversion occurred) into the Diversion header answers question 1.

将上一个请求URI(在转移发生之前)插入到转移头中回答了问题1。

Insertion of the "reason" tag into the Diversion header (by the divertor) answers question 2.

将“原因”标签插入分流总管(由分流器)可回答问题2。

3.1. When Is the Diversion Header Used?
3.1. 何时使用导流总管?

The Diversion header SHOULD be added when a SIP proxy server, SIP redirect server, or SIP user agent changes the ultimate endpoint that will receive the call.

当SIP代理服务器、SIP重定向服务器或SIP用户代理更改将接收呼叫的最终端点时,应添加转移头。

Diversion information SHOULD NOT be added for normal call routing changes to the Request-URI. Thus, the Diversion header is not added when features such as speed dial change the Request-URI.

对于请求URI的正常呼叫路由更改,不应添加转移信息。因此,当诸如speed dial之类的特性更改请求URI时,不会添加分流标头。

When a diversion occurs, a Diversion header SHOULD be added to the forwarded request or forwarded 3xx response. The Diversion header MUST contain the Request-URI of the request prior to the diversion. The Diversion header SHOULD contain a reason that the diversion occurred.

发生转移时,应将转移头添加到转发的请求或转发的3xx响应中。转移头必须包含转移前请求的请求URI。分流总管应包含分流发生的原因。

Existing Diversion headers received in an incoming request MUST NOT be removed or changed in forwarded requests.

在传入请求中接收到的现有转移头不能在转发的请求中删除或更改。

Existing Diversion headers received in an incoming response MUST NOT be removed or changed in the forwarded response.

传入响应中接收到的现有分流标头不得在转发响应中删除或更改。

A Diversion header is added when features such as call forwarding or call deflection change the Request-URI.

当呼叫转移或呼叫偏移等功能更改请求URI时,会添加转移标头。

4. Extension Syntax
4. 扩展语法

The syntax of the Diversion header is:

导流总管的语法为:

   Diversion = "Diversion" ":" 1# (name-addr *( ";" diversion_params ))
   diversion-params = diversion-reason | diversion-counter |
                      diversion-limit | diversion-privacy |
                      diversion-screen | diversion-extension
   diversion-reason = "reason" "="
                   ( "unknown" | "user-busy" | "no-answer" |
                     "unavailable" | "unconditional" |
                     "time-of-day" | "do-not-disturb" |
                     "deflection" | "follow-me" |
                     "out-of-service" | "away" |
                     token | quoted-string )
   diversion-counter = "counter" "=" 1*2DIGIT
   diversion-limit = "limit" "=" 1*2DIGIT
   diversion-privacy = "privacy" "=" ( "full" | "name" |
                       "uri" | "off" | token | quoted-string )
   diversion-screen = "screen" "=" ( "yes" | "no" | token |
                                        quoted-string )
   diversion-extension = token ["=" (token | quoted-string)]
        
   Diversion = "Diversion" ":" 1# (name-addr *( ";" diversion_params ))
   diversion-params = diversion-reason | diversion-counter |
                      diversion-limit | diversion-privacy |
                      diversion-screen | diversion-extension
   diversion-reason = "reason" "="
                   ( "unknown" | "user-busy" | "no-answer" |
                     "unavailable" | "unconditional" |
                     "time-of-day" | "do-not-disturb" |
                     "deflection" | "follow-me" |
                     "out-of-service" | "away" |
                     token | quoted-string )
   diversion-counter = "counter" "=" 1*2DIGIT
   diversion-limit = "limit" "=" 1*2DIGIT
   diversion-privacy = "privacy" "=" ( "full" | "name" |
                       "uri" | "off" | token | quoted-string )
   diversion-screen = "screen" "=" ( "yes" | "no" | token |
                                        quoted-string )
   diversion-extension = token ["=" (token | quoted-string)]
        
   The following is an extension of tables 4 and 5 in [RFC3261] for the
   Diversion header:
                       where  enc.  e-e ACK BYE CAN INV OPT REG
   _____________________________________________________________
   Diversion              R           h   -   -   -   o   -   -
   Diversion             3xx          h   -   -   -   o   -   -
        
   The following is an extension of tables 4 and 5 in [RFC3261] for the
   Diversion header:
                       where  enc.  e-e ACK BYE CAN INV OPT REG
   _____________________________________________________________
   Diversion              R           h   -   -   -   o   -   -
   Diversion             3xx          h   -   -   -   o   -   -
        
5. Detailed Semantics
5. 详细语义
5.1. UAS Behavior
5.1. 无人机行为

A SIP User Agent Service (UAS) that receives a request and returns a 3xx SHOULD add a Diversion header containing the previous Request-URI and the reason for the diversion.

接收请求并返回3xx的SIP用户代理服务(UAS)应添加包含先前请求URI和转移原因的转移头。

5.2. UAC Behavior
5.2. UAC行为

A SIP UAC that receives a 3xx containing a Diversion header SHOULD copy the Diversion header into each downstream forked request that resulted from the 3xx.

接收到包含分流头的3xx的SIP UAC应将分流头复制到由3xx产生的每个下游分叉请求中。

5.3. Redirect Server Behavior
5.3. 重定向服务器行为

A SIP redirect server that receives a request and returns a 3xx containing a Contact that diverts the request to a different endpoint SHOULD add a Diversion header containing the Request-URI from the incoming request and the reason for the diversion.

接收请求并返回3xx(包含将请求转移到不同端点的联系人)的SIP重定向服务器应添加转移头,其中包含来自传入请求的请求URI以及转移原因。

5.4. Proxy Server Behavior
5.4. 代理服务器行为

A non-recursing SIP proxy that receives a 3xx containing a Diversion header SHOULD forward the 3xx containing the Diversion header upstream unchanged.

接收到包含分流头的3xx的非递归SIP代理应将包含分流头的3xx转发到上游。

A SIP proxy that receives a request and invokes a feature that changes the Request-URI of the forwarded request in order to divert the request to a different endpoint SHOULD add a Diversion header containing the Request-URI from the incoming request and the reason for the diversion.

接收请求并调用更改转发请求的请求URI以将请求转移到不同端点的功能的SIP代理应添加转移头,其中包含来自传入请求的请求URI以及转移原因。

A SIP proxy that receives a request and returns a 3xx containing a Contact that diverts the request to a different endpoint SHOULD add a Diversion header containing the Request-URI from the incoming request and the reason for the diversion.

接收请求并返回3xx(包含将请求转移到不同端点的联系人)的SIP代理应添加转移头,其中包含来自传入请求的请求URI以及转移原因。

5.4.1. Proxy Logic for Diversion Header
5.4.1. 分流头的代理逻辑
      if (pdu.is_request()) {
          if (request-URI is changed due to a called feature) {
              if (proxy.is_recursing()) {
                  Add the Diversion header (indicating the reason
                    that the call has been diverted) to
                    the downstream forwarded request(s).
              } else {
                  Add the Diversion header (indicating the reason
                    that the call has been diverted) to
                    the upstream forwarded 3xx response.
              }
          }
      } else if (pdu.is_response()) {
          if (pdu.is_3xx()) {
              if (proxy.is_recursing()) {
                Copy Diversion header into forwarded INVITE(s).
              } else {
                Forward response upstream.
              }
          }
      }
        
      if (pdu.is_request()) {
          if (request-URI is changed due to a called feature) {
              if (proxy.is_recursing()) {
                  Add the Diversion header (indicating the reason
                    that the call has been diverted) to
                    the downstream forwarded request(s).
              } else {
                  Add the Diversion header (indicating the reason
                    that the call has been diverted) to
                    the upstream forwarded 3xx response.
              }
          }
      } else if (pdu.is_response()) {
          if (pdu.is_3xx()) {
              if (proxy.is_recursing()) {
                Copy Diversion header into forwarded INVITE(s).
              } else {
                Forward response upstream.
              }
          }
      }
        
6. Examples Using Diversion Header
6. 使用导流集管的示例

There are several implementations of call forwarding features that can be implemented by either recursing or non-recursing SIP proxies or SIP user agents.

有几种呼叫转发功能的实现,可以通过递归或非递归SIP代理或SIP用户代理来实现。

A SIP proxy or user agent that generates or forwards 3xxs upstream is non-recursing. A SIP proxy or user agent that handles received (or internally generated) 3xxs itself is recursing.

生成或转发3xx上游的SIP代理或用户代理是非递归的。处理接收(或内部生成)3xx本身的SIP代理或用户代理正在递归。

The following examples illustrate usage of the Diversion header for some of the variants of recursing and non-recursing proxies and user agents.

以下示例说明了对递归和非递归代理以及用户代理的一些变体使用分流标头。

6.1. Call Forward Unconditional
6.1. 无条件调用

Usage of the Diversion header is shown below for several variant implementations of Call Forward Unconditional.

对于几个不同的前向无条件调用实现,分流标头的使用如下所示。

6.1.1. Network Call Forward Unconditional (P2 Recursing)
6.1.1. 网络前向无条件呼叫(P2递归)

In this message flow, the call would normally be routed to Bob@B. However, Proxy 2 (P2) recursively implements Call Forward Unconditional (CFUNC) to Carol@C.

在此消息流中,呼叫通常会路由到Bob@B.然而,代理2(P2)递归地实现了无条件的前向调用(CFUNC)Carol@C.

                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A             P1              P2            B          C
                            recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=unconditional
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A             P1              P2            B          C
                            recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=unconditional
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.1.2. Network Call Forward Unconditional (P1 Non-Recursing, P2 Non-Recursing)

6.1.2. 网络呼叫前转无条件(P1非递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward Unconditional (CFUNC) to Carol@C. Proxy 1 (P1) is non-recursing.

在这个消息流中,代理2(P2)以非递归方式实现无条件前向调用(CFUNC)Carol@C.代理1(P1)是非递归的。

                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=unconditional    |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=unconditional    |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=unconditional    |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=unconditional    |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.1.3. Network Call Forward Unconditional (P1 Recursing, P2 Non-Recursing)

6.1.3. 网络呼叫前转无条件(P1递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward Unconditional (CFUNC) to Carol@C. Proxy 1 (P1) is recursing.

在这个消息流中,代理2(P2)以非递归方式实现无条件前向调用(CFUNC)Carol@C.代理1(P1)正在递归。

                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNC->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unconditional   |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.1.4. Endpoint Call Forward Unconditional (P1 Recursing, P2 Non-Recursing)

6.1.4. 端点前向无条件调用(P1递归,P2非递归)

In this message flow, user agent server B (B) non-recursively implements Call Forward Unconditional (CFUNC) to Carol@C. Proxy 2 (P2) is non-recursing. Proxy 1 (P1) is recursing.

在这个消息流中,用户代理服务器B(B)以非递归方式实现无条件前向调用(CFUNC)Carol@C.代理2(P2)是非递归的。代理1(P1)正在递归。

                                    +-----------------------+
                                    | Bob@B: CFUNC->Carol@C |
                                    +------+----------------+
                                            \
                                             \
A              P1             P2              B          C
            recursing      non-recursing
|              |              |               |          |
|--INV Bob@P1->|              |               |          |
|              |              |               |          |
|              |--INV Bob@P2->|               |          |
|              |              |--INV Bob@B--->|          |
|              |              |               |          |
|              |              |<-302----------|          |
|              |              |  Contact: Carol@C        |
|              |              |  Diversion: Bob@B        |
|              |              |    ;reason=unconditional
|              |              |               |          |
|              |              |--ACK--------->|          |
|              |              |               |          |
|              |<-302---------|               |          |
|              |  Contact: Carol@C            |          |
|              |  Diversion: Bob@B            |          |
|              |    ;reason=unconditional     |          |
|              |              |               |          |
|              |--ACK-------->|               |          |
|              |              |               |          |
|              |--INVITE Carol@C------------------------>|
|              |  Diversion: Bob@B            |          |
|              |    ;reason=unconditional     |          |
|              |              |               |          |
|              |<-200------------------------------------|
|              |              |               |          |
|<-200---------|              |               |          |
|              |              |               |          |
|--ACK-------------------------------------------------->|
|              |              |               |          |
|              |              |               |          |
        
                                    +-----------------------+
                                    | Bob@B: CFUNC->Carol@C |
                                    +------+----------------+
                                            \
                                             \
A              P1             P2              B          C
            recursing      non-recursing
|              |              |               |          |
|--INV Bob@P1->|              |               |          |
|              |              |               |          |
|              |--INV Bob@P2->|               |          |
|              |              |--INV Bob@B--->|          |
|              |              |               |          |
|              |              |<-302----------|          |
|              |              |  Contact: Carol@C        |
|              |              |  Diversion: Bob@B        |
|              |              |    ;reason=unconditional
|              |              |               |          |
|              |              |--ACK--------->|          |
|              |              |               |          |
|              |<-302---------|               |          |
|              |  Contact: Carol@C            |          |
|              |  Diversion: Bob@B            |          |
|              |    ;reason=unconditional     |          |
|              |              |               |          |
|              |--ACK-------->|               |          |
|              |              |               |          |
|              |--INVITE Carol@C------------------------>|
|              |  Diversion: Bob@B            |          |
|              |    ;reason=unconditional     |          |
|              |              |               |          |
|              |<-200------------------------------------|
|              |              |               |          |
|<-200---------|              |               |          |
|              |              |               |          |
|--ACK-------------------------------------------------->|
|              |              |               |          |
|              |              |               |          |
        
6.2. Call Forward on Busy
6.2. 占线时呼叫

Usage of the Diversion header is shown below for several variant implementations of Call Forward on Busy.

下面显示了在繁忙时间前向呼叫的几种不同实现中使用的转移头。

6.2.1. Network Call Forward on Busy (P2 Recursing)
6.2.1. 忙时网络呼叫转发(P2递归)

In this message flow, Proxy 2 (P2) recursively implements Call Forward on Busy (CFB) to Carol@C.

在这个消息流中,代理2(P2)递归地实现忙时的前向调用(CFB)以Carol@C.

                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=user-busy   |
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=user-busy   |
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.2.2. Network Call Forward on Busy (P1 Non-Recursing, P2 Non-Recursing)

6.2.2. 忙时网络呼叫转发(P1非递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on Busy (CFB) to Carol@C. Proxy 1 (P1) is non-recursing.

在这个消息流中,代理2(P2)以非递归方式在忙时(CFB)实现呼叫前向Carol@C.代理1(P1)是非递归的。

                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=user-busy        |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=user-busy        |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=user-busy        |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=user-busy        |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
6.2.3. Network Call Forward on Busy (P1 Recursing, P2 Non-Recursing)
6.2.3. 忙时网络呼叫转发(P1递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on Busy (CFB) to Carol@C. Proxy 1 (P1) is recursing.

在这个消息流中,代理2(P2)以非递归方式在忙时(CFB)实现呼叫前向Carol@C.代理1(P1)正在递归。

                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +----------------------+
                     | Bob@P2: CFB->Carol@C |
                     +------+---------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-486--------|          |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
6.2.4. Endpoint Call Forward on Busy (P1 Recursing, P2 Non-Recursing)
6.2.4. 忙时的端点前向呼叫(P1递归,P2非递归)

In this message flow, user agent server B (B) non-recursively implements Call Forward on Busy (CFB) to Carol@C. Proxy 2 (P2) is non-recursing. Proxy 1 (P1) is recursing.

在此消息流中,用户代理服务器B(B)以非递归方式实现忙时前向调用(CFB),以Carol@C.代理2(P2)是非递归的。代理1(P1)正在递归。

                               +---------------------+
                               | Bob@B: CFB->Carol@C |
                               +------+--------------+
                                          \
                                           \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-302--------|          |
|              |              |  Contact: Carol@C      |
|              |              |  Diversion: Bob@B      |
|              |              |    ;reason=user-busy   |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@B          |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@B          |          |
|              |    ;reason-user-busy       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                               +---------------------+
                               | Bob@B: CFB->Carol@C |
                               +------+--------------+
                                          \
                                           \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-302--------|          |
|              |              |  Contact: Carol@C      |
|              |              |  Diversion: Bob@B      |
|              |              |    ;reason=user-busy   |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@B          |          |
|              |    ;reason=user-busy       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@B          |          |
|              |    ;reason-user-busy       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
6.3. Call Forward on No-Answer
6.3. 无应答呼叫

Usage of the Diversion header is shown below for several variant implementations of Call Forward on No-Answer.

对于无应答前呼的几种不同实现,下面显示了分流标头的用法。

6.3.1. Network Call Forward on No-Answer (P2 Recursing)
6.3.1. 无应答时的网络前向呼叫(P2递归)

In this message flow, Proxy 2 (P2) recursively implements Call Forward on No Answer (CFNA) to Carol@C.

在这个消息流中,代理2(P2)递归地实现对用户的无应答前向调用(CFNA)Carol@C.

                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |           timeout          |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=no-answer   |
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |           timeout          |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=no-answer   |
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.3.2. Network Call Forward on No-Answer (P1 Non-Recursing, P2 Non-Recursing)

6.3.2. 无应答时的网络呼叫转发(P1非递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on No Answer (CFNA) to Carol@C. Proxy 1 (P1) is non-recursing.

在这个消息流中,代理2(P2)以非递归方式实现对用户的无应答前向调用(CFNA)Carol@C.代理1(P1)是非递归的。

                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=no-answer        |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=no-answer        |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
        
                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=no-answer        |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=no-answer        |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
        

6.3.3. Network Call Forward on No Answer (P1 Recursing, P2 Non-Recursing)

6.3.3. 无应答时的网络呼叫转发(P1递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on No Answer (CFNA) to Carol@C. Proxy 1 (P1) is recursing.

在这个消息流中,代理2(P2)以非递归方式实现对用户的无应答前向调用(CFNA)Carol@C.代理1(P1)正在递归。

                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |            timeout         |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +-----------------------+
                     | Bob@P2: CFNA->Carol@C |
                     +------+----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |<-180--------|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |            timeout         |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.3.4. Endpoint Call Forward on No-Answer (P1 Recursing, P2 Non-Recursing, B Non-Recursing)

6.3.4. 无应答时的端点前向调用(P1递归、P2非递归、B非递归)

In this message flow, user agent server B (B) non-recursively implements Call Forward on No Answer (CFNA) to Carol@C. Proxy 2 (P2) is non-recursing. Proxy 1 (P1) is recursing.

在这个消息流中,用户代理服务器B(B)以非递归方式实现对用户的无应答前向调用(CFNA)Carol@C.代理2(P2)是非递归的。代理1(P1)正在递归。

                                  +----------------------+
                                  | Bob@B: CFNA->Carol@C |
                                  +------+---------------+
                                          \
                                           \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |              |          timeout       |
|              |              |<-302--------|          |
|              |              |  Contact: Carol@C      |
|              |              |  Diversion: Bob@B      |
|              |              |    ;reason=no-answer   |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@B          |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@B          |          |
|              |    ;reason-no-answer       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
        
                                  +----------------------+
                                  | Bob@B: CFNA->Carol@C |
                                  +------+---------------+
                                          \
                                           \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |             |          |
|              |              |             |          |
|              |              |             |          |
|              |              |          timeout       |
|              |              |<-302--------|          |
|              |              |  Contact: Carol@C      |
|              |              |  Diversion: Bob@B      |
|              |              |    ;reason=no-answer   |
|              |              |             |          |
|              |              |--ACK------->|          |
|              |              |             |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@B          |          |
|              |    ;reason=no-answer       |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@B          |          |
|              |    ;reason-no-answer       |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
        
6.4. Call Forward on Unavailable
6.4. 不可用时呼叫前进

Usage of the Diversion header is shown below for several variant implementations of Call Forward on Unavailable.

下面显示了在不可用情况下对前向调用的几种不同实现的改道标头的用法。

6.4.1. Network Call Forward on Unavailable (P2 Recursing)
6.4.1. 不可用时的网络呼叫转发(P2递归)

In this message flow, Proxy 2 (P2) recursively implements Call Forward on Unavailable (CFUNV) to Carol@C.

在这个消息流中,代理2(P2)递归地实现对不可用的前向调用(CFUNV)Carol@C.

                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|<-100---------|              |             |          |
|              |--INV Bob@P2->|             |          |
|              |<-100---------|             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=unavailable
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
                           recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|<-100---------|              |             |          |
|              |--INV Bob@P2->|             |          |
|              |<-100---------|             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |              |--INVITE Carol@C------->|
|              |              |  Diversion: Bob@P2     |
|              |              |    ;reason=unavailable
|              |              |             |          |
|              |              |<-200-------------------|
|              |              |             |          |
|              |<-200---------|             |          |
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.4.2. Network Call Forward on Unavailable (P1 Non-Recursing, P2 Non-Recursing)

6.4.2. 网络呼叫前转不可用(P1非递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on Unavailable (CFUNV) to Carol@C. Proxy 1 (P1) is non-recursing.

在此消息流中,代理2(P2)以非递归方式实现不可用时的前向调用(CFUNV)Carol@C.代理1(P1)是非递归的。

                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-100---------|             |          |
|              |              |             |          |
|<-100---------|              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=unavailable      |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=unavailable      |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            non-recursing  non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|              |              |             |          |
|              |--INV Bob@P2->|             |          |
|              |              |             |          |
|              |<-100---------|             |          |
|              |              |             |          |
|<-100---------|              |             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|<-302---------|              |             |          |
|  Contact: Carol@C           |             |          |
|  Diversion: Bob@P2          |             |          |
|    ;reason=unavailable      |             |          |
|              |              |             |          |
|--ACK-------->|              |             |          |
|              |              |             |          |
|--INVITE Carol@C------------------------------------->|
|  Diversion: Bob@P2          |             |          |
|    ;reason=unavailable      |             |          |
|              |              |             |          |
|<-200-------------------------------------------------|
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        

6.4.3. Network Call Forward on Unavailable (P1 Recursing, P2 Non-Recursing)

6.4.3. 网络呼叫前转不可用(P1递归,P2非递归)

In this message flow, Proxy 2 (P2) non-recursively implements Call Forward on Unavailable (CFUNV) to Carol@C. Proxy 1 (P1) is recursing.

在此消息流中,代理2(P2)以非递归方式实现不可用时的前向调用(CFUNV)Carol@C.代理1(P1)正在递归。

                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|<-100---------|              |             |          |
|              |--INV Bob@P2->|             |          |
|              |<-100---------|             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
                     +------------------------+
                     | Bob@P2: CFUNV->Carol@C |
                     +------+-----------------+
                             \
                              \
A              P1             P2            B          C
            recursing      non-recursing
|              |              |             |          |
|--INV Bob@P1->|              |             |          |
|<-100---------|              |             |          |
|              |--INV Bob@P2->|             |          |
|              |<-100---------|             |          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |--INV Bob@B->|          |
|              |              |  ...        |          |
|              |              |--INV Bob@B->|          |
|              |           timeout          |          |
|              |<-302---------|             |          |
|              |  Contact: Carol@C          |          |
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |--ACK-------->|             |          |
|              |              |             |          |
|              |--INVITE Carol@C---------------------->|
|              |  Diversion: Bob@P2         |          |
|              |    ;reason=unavailable     |          |
|              |              |             |          |
|              |<-200----------------------------------|
|              |              |             |          |
|<-200---------|              |             |          |
|              |              |             |          |
|--ACK------------------------------------------------>|
|              |              |             |          |
|              |              |             |          |
        
6.5. Multiple Diversions
6.5. 多重改道

Usage of the Diversion header when multiple diversions occur are shown the following two examples.

以下两个示例显示了发生多个改道时改道集管的使用情况。

6.5.1. Call Forward Unconditional and Call Forward Busy
6.5.1. 无条件呼叫前转和忙呼叫前转

In this message flow, Proxy 2 (P2) implements Call Forward Unconditional (CFUNC) to Carol@C. C then implements Call Forward on Busy (CFB) to 5551234@D. P2 is non-recursing. P1 is recursing. C is non-recursing.

在这个消息流中,代理2(P2)实现了无条件的前向调用(CFUNC)Carol@C.然后,C实现忙时的前向调用(CFB)以5551234@D.P2是非递归的。P1是递归的。C是非递归的。

            +------------------------+     +-------------------------+
            | Bob@P2: CFUNC->Carol@C |     | Carol@C: CFB->5551234@D |
            +---------------+--------+     +--------+----------------+
                             \                       \
                              \                       \
A              P1             P2            B          C          D
            recursing      non-recursing          non-recursing
|              |              |             |          |          |
|--INV Bob@P1->|              |             |          |          |
|              |              |             |          |          |
|              |--INV Bob@P2->|             |          |          |
|              |              |             |          |          |
|              |<-302---------|             |          |          |
|              |  Contact: Carol@C          |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |--ACK-------->|             |          |          |
|              |              |             |          |          |
|              |--INVITE Carol@C---------------------->|          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |<-302----------------------------------|          |
|              |  Contact: 5551234@D        |          |          |
|              |  Diversion: Carol@C        |          |          |
|              |    ;reason=user-busy       |          |          |
|              |    ;privacy="full"         |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |--ACK--------------------------------->|          |
|              |              |             |          |          |
|              |--INVITE 5551234@D------------------------------->|
|              |  Diversion: Carol@C        |          |          |
|              |    ;reason=user-busy       |          |          |
|              |    ;privacy="full"         |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |<-200---------------------------------------------|
|              |              |             |          |          |
|<-200---------|              |             |          |          |
|              |              |             |          |          |
|--ACK----------------------------------------------------------->|
|              |              |             |          |          |
|              |              |             |          |          |
        
            +------------------------+     +-------------------------+
            | Bob@P2: CFUNC->Carol@C |     | Carol@C: CFB->5551234@D |
            +---------------+--------+     +--------+----------------+
                             \                       \
                              \                       \
A              P1             P2            B          C          D
            recursing      non-recursing          non-recursing
|              |              |             |          |          |
|--INV Bob@P1->|              |             |          |          |
|              |              |             |          |          |
|              |--INV Bob@P2->|             |          |          |
|              |              |             |          |          |
|              |<-302---------|             |          |          |
|              |  Contact: Carol@C          |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |--ACK-------->|             |          |          |
|              |              |             |          |          |
|              |--INVITE Carol@C---------------------->|          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |<-302----------------------------------|          |
|              |  Contact: 5551234@D        |          |          |
|              |  Diversion: Carol@C        |          |          |
|              |    ;reason=user-busy       |          |          |
|              |    ;privacy="full"         |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |--ACK--------------------------------->|          |
|              |              |             |          |          |
|              |--INVITE 5551234@D------------------------------->|
|              |  Diversion: Carol@C        |          |          |
|              |    ;reason=user-busy       |          |          |
|              |    ;privacy="full"         |          |          |
|              |  Diversion: Bob@P2         |          |          |
|              |    ;reason=unconditional   |          |          |
|              |              |             |          |          |
|              |<-200---------------------------------------------|
|              |              |             |          |          |
|<-200---------|              |             |          |          |
|              |              |             |          |          |
|--ACK----------------------------------------------------------->|
|              |              |             |          |          |
|              |              |             |          |          |
        
6.5.2. Call Forward Unconditional and Call Forward No Answer
6.5.2. 无条件呼叫和无应答呼叫

In this message flow, Proxy 2 (P2) implements Call Forward Unconditional (CFUNC) to Carol@C. (P2 would normally have routed the call to B). C then implements Call Forward on No Answer (CFNA) to 5551234@D. P2 is recursing. C is recursing.

在这个消息流中,代理2(P2)实现了无条件的前向调用(CFUNC)Carol@C.(P2通常会将呼叫路由到B)。然后,C实现对用户的无应答前向调用(CFNA)5551234@D.P2是递归的。C是递归的。

         +------------------------+  +--------------------------+
         | Bob@P2: CFUNC->Carol@C |  | Carol@C: CFNA->5551234@D |
         +------------------+-----+  +-----+--------------------+
                             \              \
                              \              \
A              P1             P2       B      C                 D
                            recursing       recursing
|              |              |        |      |                 |
|--INV Bob@P1->|              |        |      |                 |
|              |              |        |      |                 |
|              |--INV Bob@P2->|        |      |                 |
|              |              |        |      |                 |
|              |              |--INV Carol@C->|                 |
|              |              |  Diversion: Bob@P2              |
|              |              |    ;reason=unconditional        |
|              |              |        |      |                 |
|              |              |<--180---------|                 |
|              |              |        |      |                 |
|              |<-180---------|        |      |                 |
|              |              |        |      |                 |
|<-180---------|              |        |      |                 |
|              |              |        |      |                 |
|              |              |        |      |                 |
|              |              |        |    timeout             |
|              |              |        |      |--INV 5551234@D->|
|              |              |        |      |Diversion: Carol@C
|              |              |        |      |  ;reason=no-answer
|              |              |        |      |  ;privacy="full"
|              |              |        |      |Diversion: Bob@P2
|              |              |        |      |  ;reason= unconditional
|              |              |        |      |                 |
|              |              |        |      |<-200------------|
|              |              |        |      |         |       |
|              |              |<-200----------|         |       |
|              |              |        |      |         |       |
|              |<-200---------|        |      |         |       |
|              |              |        |      |         |       |
|<-200---------|              |        |      |         |       |
|              |              |        |      |         |       |
|--ACK--------------------------------------------------------->|
|              |              |        |      |         |       |
        
         +------------------------+  +--------------------------+
         | Bob@P2: CFUNC->Carol@C |  | Carol@C: CFNA->5551234@D |
         +------------------+-----+  +-----+--------------------+
                             \              \
                              \              \
A              P1             P2       B      C                 D
                            recursing       recursing
|              |              |        |      |                 |
|--INV Bob@P1->|              |        |      |                 |
|              |              |        |      |                 |
|              |--INV Bob@P2->|        |      |                 |
|              |              |        |      |                 |
|              |              |--INV Carol@C->|                 |
|              |              |  Diversion: Bob@P2              |
|              |              |    ;reason=unconditional        |
|              |              |        |      |                 |
|              |              |<--180---------|                 |
|              |              |        |      |                 |
|              |<-180---------|        |      |                 |
|              |              |        |      |                 |
|<-180---------|              |        |      |                 |
|              |              |        |      |                 |
|              |              |        |      |                 |
|              |              |        |    timeout             |
|              |              |        |      |--INV 5551234@D->|
|              |              |        |      |Diversion: Carol@C
|              |              |        |      |  ;reason=no-answer
|              |              |        |      |  ;privacy="full"
|              |              |        |      |Diversion: Bob@P2
|              |              |        |      |  ;reason= unconditional
|              |              |        |      |                 |
|              |              |        |      |<-200------------|
|              |              |        |      |         |       |
|              |              |<-200----------|         |       |
|              |              |        |      |         |       |
|              |<-200---------|        |      |         |       |
|              |              |        |      |         |       |
|<-200---------|              |        |      |         |       |
|              |              |        |      |         |       |
|--ACK--------------------------------------------------------->|
|              |              |        |      |         |       |
        
7. Security Considerations
7. 安全考虑

There are some privacy considerations when using the Diversion header. Usage of the Diversion header implies that the diverting UAS trusts the diverted-to UAS. Usage of the Diversion header by SIP proxies or SIP user agents can cause information leakage of route information and called information to untrusted SIP proxies and untrusted callers in upstream 3xxs. Leakage of this information can be mitigated by having a recursing trusted upstream proxy server. For a SIP network architecture where all proxies are required to be non-recursive, Diversion header hiding may be considered necessary in order to prevent leakage of route information to the caller. To accomplish Diversion header hiding, a trusted upstream proxy would add a Record-Route header and use a secret key to encrypt the contents of the Diversion header in 3xxs that are forwarded upstream. On receipt of re-INVITEs, the proxy would decrypt the contents of the Diversion header (using its secret key) and forward the INVITE. There is no currently defined interaction of the Diversion and Hide headers. Question: Should there be?

在使用分流标头时,有一些隐私注意事项。分流头的使用意味着分流UAS信任分流至UAS的用户。SIP代理或SIP用户代理使用分流报头可能会导致路由信息和被叫信息泄漏到上游3xx中不受信任的SIP代理和不受信任的呼叫者。通过使用递归的可信上游代理服务器,可以减少此信息的泄漏。对于要求所有代理都是非递归的SIP网络体系结构,为了防止路由信息泄漏给调用者,可能认为有必要进行转移报头隐藏。为了完成分流头隐藏,可信的上游代理将添加一个记录路由头,并使用一个密钥加密上游转发的3xx中分流头的内容。收到重新邀请后,代理将解密转移头的内容(使用其密钥)并转发邀请。当前并没有定义分流和隐藏标题的交互。问题:应该有吗?

8. Further Examples
8. 进一步的例子

Only the relevant headers have been included in the following examples. The contents of the Session Description Protocols (SDPs) have also been omitted.

以下示例中仅包含相关的标题。会话描述协议(SDP)的内容也被省略。

8.1. Night Service/Automatic Call Distribution (ACD) Using Diversion Header

8.1. 使用转接头的夜间服务/自动呼叫分配(ACD)

In the following two message flows, two separate companies, WeSellPizza.com and WeSellFlowers.com, have contracted with a third company, NightService.com to provide nighttime support for their incoming voice calls.

在以下两个消息流中,两家独立的公司WeSellPizza.com和WeSellFlowers.com与第三家公司NightService.com签订了合同,为其来电语音提供夜间支持。

In the first flow, Alice calls out for pizza. In the second flow, Alice calls for roses. In both instances, the same night service company (and receptionist, Carol) answers the call. However, because the Diversion header is used, Carol is able to customize her greeting to the caller.

在第一个流程中,Alice要比萨饼。在第二个流程中,爱丽丝要求玫瑰。在这两种情况下,都是同一家夜间服务公司(和接待员卡罗尔)接听电话。但是,由于使用了转移标题,Carol可以自定义她对来电者的问候语。

                +-------------------------------------+
                | WeSellPizza@P2: CFTOD->nightserv@P3 |
                +------------+------------------------+
                              \
                               \
UAC             P1             P2                 P3               UAS1
                        (WeSellPizza.com)  (NightService.com)
                                                (ACD)
| [1]           |              |                   |                  |
|-INV pizza@P1->|              |                   |                  |
|               |              |                   |                  |
|               |              |                   |                  |
|               | [2] INVITE WeSellPizza@P2        |                  |
|               |------------->|                   |                  |
|               |              |                   |                  |
|               |              | [3]               |                  |
|               |              |-INV nightserv@P3->|                  |
|               |              | Diversion: WeSellPizza@P2            |
|               |              |   ;reason=time-of-day                |
|               |              |                   |                  |
|               |              |                   | [4]              |
|               |              |                   |-INV Carol@uas1-->|
|               |              |            Diversion: WeSellPizza@P2 |
|               |              |                ;reason=time-of-day   |
|               |              |                   |                  |
|               |              |                   |<-[5] 200---------|
|               |              |<-[6] 200----------|                  |
|               |<-[7] 200-----|                   |                  |
|<-[8] 200------|              |                   |                  |
|               |              |                   |                  |
|--[9] ACK----------------------------------------------------------->|
|               |              |                   |                  |
|<=========================================="Hello, WeSellPizza"======|
|               |              |                   |                  |
|               |              |                   |                  |
        
                +-------------------------------------+
                | WeSellPizza@P2: CFTOD->nightserv@P3 |
                +------------+------------------------+
                              \
                               \
UAC             P1             P2                 P3               UAS1
                        (WeSellPizza.com)  (NightService.com)
                                                (ACD)
| [1]           |              |                   |                  |
|-INV pizza@P1->|              |                   |                  |
|               |              |                   |                  |
|               |              |                   |                  |
|               | [2] INVITE WeSellPizza@P2        |                  |
|               |------------->|                   |                  |
|               |              |                   |                  |
|               |              | [3]               |                  |
|               |              |-INV nightserv@P3->|                  |
|               |              | Diversion: WeSellPizza@P2            |
|               |              |   ;reason=time-of-day                |
|               |              |                   |                  |
|               |              |                   | [4]              |
|               |              |                   |-INV Carol@uas1-->|
|               |              |            Diversion: WeSellPizza@P2 |
|               |              |                ;reason=time-of-day   |
|               |              |                   |                  |
|               |              |                   |<-[5] 200---------|
|               |              |<-[6] 200----------|                  |
|               |<-[7] 200-----|                   |                  |
|<-[8] 200------|              |                   |                  |
|               |              |                   |                  |
|--[9] ACK----------------------------------------------------------->|
|               |              |                   |                  |
|<=========================================="Hello, WeSellPizza"======|
|               |              |                   |                  |
|               |              |                   |                  |
        

Alice calls for pizza.

爱丽丝要比萨饼。

[1] SIP UAC to SIP proxy server 1:

[1] SIP UAC到SIP代理服务器1:

        INVITE sip:pizza@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:pizza@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

The ISP's originating proxy translated the keyword pizza to the company WeSellPizza.com

ISP的原始代理将关键字pizza翻译成WeSellPizza.com

[2] SIP proxy server 1 to SIP proxy server 2 (WeSellPizza.com):

[2] SIP代理服务器1到SIP代理服务器2(WeSellPizza.com):

        INVITE sip:WeSellPizza@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:WeSellPizza@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

It's after midnight and the pizza people are in bed. Fortunately, WeSellPizza.com has contracted with NightService.com to answer their nighttime calls. Thus, P2 implements CFTOD to NightService.com.

午夜过后,披萨店的人都上床睡觉了。幸运的是,WeSellPizza.com与NightService.com签订了合同,负责接听他们的夜间电话。因此,P2将CFTOD实现到NightService.com。

[3] SIP proxy server 2 (WeSellPizza.com) to SIP proxy server 3 (NightService.com):

[3] SIP代理服务器2(WeSellPizza.com)到SIP代理服务器3(NightService.com):

        INVITE sip:NightService@p3.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellPizza@p2.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        
        INVITE sip:NightService@p3.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellPizza@p2.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        

Carol is available to receive the incoming call.

卡罗尔可以接听来电。

[4] SIP proxy server 3 (NightService.com) to UAS1 (Carol):

[4] SIP代理服务器3(NightService.com)到UAS1(Carol):

        INVITE sip:carol@uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellPizza@p2.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        
        INVITE sip:carol@uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:pizza@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellPizza@p2.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        

The ACD keys off the Diversion header to pull up the WeSellPizza FAQ on Carol's web browser.

ACD键从分流标题中拔出Carol web浏览器上的WeSellPizza常见问题解答。

[5] UAS1 to SIP proxy server 3:

[5] UAS1到SIP代理服务器3:

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[6] SIP proxy server 3 to SIP proxy server 2:

[6] SIP代理服务器3到SIP代理服务器2:

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[7] SIP proxy server 2 to SIP proxy server 1:

[7] SIP代理服务器2到SIP代理服务器1:

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[8] SIP proxy server 1 to UAC

[8] SIP代理服务器1到UAC

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[9] SIP UAC to UAS1:

[9] SIP UAC至UAS1:

        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:pizza@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

The RTP flows begin and Carol answers "Hello, WeSellPizza. How may I help you?"

RTP流程开始,Carol回答“你好,WeSellPizza。我能为您做些什么?”

                 +---------------------------------------+
                 | WeSellFlowers@P4: CFTOD->nightserv@P3 |
                 +-------------+-------------------------+
                                \
                                 \
UAC             P1               P4                 P3              UAS1
                         (WeSellFlowers.com)  (NightService.com)
                                                   (ACD)
| [1]           |                |                   |                |
|-INV roses@P1->|                |                   |                |
|               |                |                   |                |
|               | [2] INVITE WeSellFlowers@P4        |                |
|               |--------------->|                   |                |
|               |                |                   |                |
|               | [3]            |                   |                |
|               |<-302-----------|                   |                |
|               |  Contact: nightservice@P3          |                |
|               |  Diversion: WeSellFlowers@P4       |                |
|               |    ;reason=time-of-day             |                |
|               |                |                   |                |
|               |--[4] ACK------>|                   |                |
|               |                |                   |                |
|               | [5]            |                   |                |
|               |-INVITE nightservice@P3------------>|                |
|               | Diversion: WeSellFlowers@P4        |                |
|               |   ;reason=time-of-day              |                |
|               |                |                   |                |
|               |                |                   | [6]            |
|               |                |               -INV Carol@uas1----->|
|               |                |          Diversion: WeSellFlowers@P4
|               |                |            ;reason=time-of-day
|               |                |                                    |
|               |                |              |<-[7] 200------------|
|               |<-[8] 200---------------------------|                |
|<-[9] 200------|                |                   |                |
|               |                |                   |                |
|--[10] ACK---------------------------------------------------------->|
|               |                |                   |                |
|<======================================="Hello, WeSellFlowers"=======|
|               |                |                   |                |
|               |                |                   |                |
        
                 +---------------------------------------+
                 | WeSellFlowers@P4: CFTOD->nightserv@P3 |
                 +-------------+-------------------------+
                                \
                                 \
UAC             P1               P4                 P3              UAS1
                         (WeSellFlowers.com)  (NightService.com)
                                                   (ACD)
| [1]           |                |                   |                |
|-INV roses@P1->|                |                   |                |
|               |                |                   |                |
|               | [2] INVITE WeSellFlowers@P4        |                |
|               |--------------->|                   |                |
|               |                |                   |                |
|               | [3]            |                   |                |
|               |<-302-----------|                   |                |
|               |  Contact: nightservice@P3          |                |
|               |  Diversion: WeSellFlowers@P4       |                |
|               |    ;reason=time-of-day             |                |
|               |                |                   |                |
|               |--[4] ACK------>|                   |                |
|               |                |                   |                |
|               | [5]            |                   |                |
|               |-INVITE nightservice@P3------------>|                |
|               | Diversion: WeSellFlowers@P4        |                |
|               |   ;reason=time-of-day              |                |
|               |                |                   |                |
|               |                |                   | [6]            |
|               |                |               -INV Carol@uas1----->|
|               |                |          Diversion: WeSellFlowers@P4
|               |                |            ;reason=time-of-day
|               |                |                                    |
|               |                |              |<-[7] 200------------|
|               |<-[8] 200---------------------------|                |
|<-[9] 200------|                |                   |                |
|               |                |                   |                |
|--[10] ACK---------------------------------------------------------->|
|               |                |                   |                |
|<======================================="Hello, WeSellFlowers"=======|
|               |                |                   |                |
|               |                |                   |                |
        

Alice calls for roses.

爱丽丝要玫瑰。

[1] SIP UAC to SIP proxy server 1:

[1] SIP UAC到SIP代理服务器1:

        INVITE sip:roses@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:roses@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

The ISP's originating proxy translated the keyword roses to the company WeSellFlowers.com

ISP的原始代理将关键词roses翻译成公司WeSellFlowers.com

[2] SIP proxy server 1 to SIP proxy server 4 (WeSellFlowers.com):

[2] SIP代理服务器1到SIP代理服务器4(WeSellFlowers.com):

        INVITE sip:WeSellFlowers@p4.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:WeSellFlowers@p4.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

It's now 1 a.m. and the florists are also in bed. Fortunately, WeSellFlowers.com has contracted with NightService.com to answer their nighttime calls, too. Thus, P4 implements CFTOD to NightService.com.

现在是凌晨1点,花店也在睡觉。幸运的是,WeSellFlowers.com也与NightService.com签订了合同,负责接听他们的夜间电话。因此,P4将CFTOD实现到NightService.com。

[3] SIP proxy server 4 (WeSellFlowers.com) to SIP proxy server 1 (NightService.com):

[3] SIP代理服务器4(WeSellFlowers.com)到SIP代理服务器1(NightService.com):

        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: NightService@p3.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=p4
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        
        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: NightService@p3.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=p4
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        
   [4] SIP proxy server 1 to SIP proxy server 4 (WeSellFlowers.com):
        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=p4
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
   [4] SIP proxy server 1 to SIP proxy server 4 (WeSellFlowers.com):
        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=p4
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

[5] SIP proxy server 1 (WeSellFlowers.com) to SIP proxy server 3 (NightService.com):

[5] SIP代理服务器1(WeSellFlowers.com)到SIP代理服务器3(NightService.com):

        INVITE sip:NightService@p3.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        
        INVITE sip:NightService@p3.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        

Carol is available to receive the incoming call.

卡罗尔可以接听来电。

[6] SIP proxy server 3 (NightService.com) to UAS1 (Carol):

[6] SIP代理服务器3(NightService.com)到UAS1(Carol):

        INVITE sip:carol@uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        
        INVITE sip:carol@uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:roses@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:WeSellFlowers@p4.isp.com>
          ;reason=time-of-day
        Content-Type: application/sdp
        

The ACD keys off the Diversion header to pull up the WeSellFlowers FAQ on Carol's web browser.

ACD键关闭了转向标题,以在Carol的web浏览器上调出WeSellFlowers常见问题解答。

[7] SIP UAS1 to SIP proxy server 3:

[7] SIP UAS1到SIP代理服务器3:

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p3.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[8] SIP proxy server 3 to SIP proxy server 1:

[8] SIP代理服务器3到SIP代理服务器1:

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[9] SIP proxy server 1 to UAC

[9] SIP代理服务器1到UAC

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: carol@uas1.nightservice.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[10] SIP UAC to SIP UAS1:

[10] SIP UAC至SIP UAS1:

        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:uas1.nightservice.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:roses@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

The RTP flows begin and Carol answers "Hello, WeSellFlowers. How may I help you?"

RTP流程开始,Carol回答“你好,WeSellFlowers。我能为您做些什么?”

8.2. Voicemail Service Using Diversion Header
8.2. 使用转移头的语音邮件服务

Bob has contracted his Voicemail to a third-party company, Voicemail.com. In this message flow, Bob has hit the Do-Not-Disturb button on his phone. The Do-Not-Disturb functionality of Bob's phone is configured to CFUNC (Call Forward Unconditional) to voicemail@isp.com. Because the Diversion header is used, Voicemail.com is able to place the incoming call into Bob's voice mailbox.

Bob已将语音信箱签约给第三方公司Voicemail.com。在此消息流中,Bob已按下手机上的“请勿打扰”按钮。Bob手机的请勿打扰功能配置为CFUNC(无条件向前呼叫)以voicemail@isp.com. 由于使用了转接头,Voicemail.com能够将来电放入Bob的语音信箱。

                 +---------------------------------------------+
                 | Bob@UAS1: CFDoNotDisturb->voicemail@isp.com |
                 +--------------------------------------+------+
                                                         \
                                                          \
UAC1               P1                P2            UAS1        UAS2
                                                          Voicemail.com
|                  |                  |              |          |
|--[1] INV Bob@P1->|                  |              |          |
|                  |                  |              |          |
|                  |--[2] INV Bob@P2->|              |          |
|                  |                  |              |          |
|                  |               [3] INV Bob@uas1->|          |
|                  |                  |              |          |
|                  |                [4] <- 302-------|          |
|                  |               Contact: voicemail@isp.com   |
|                  |               Diversion: Bob@uas1          |
|                  |                 ;reason=do-not-disturb     |
|                  |                  |              |          |
|                  |                  |[5] ACK------>|          |
|                  |                  |              |          |
|                  |<-[6] 302---------|              |          |
|                  |  Contact: voicemail@isp.com     |          |
|                  |  Diversion: Bob@uas1            |          |
|                  |    ;reason=do-not-disturb       |          |
|                  |                  |              |          |
|                  |--[7] ACK-------->|              |          |
|<-[8] 302---------|                  |              |          |
|  Contact: voicemail@isp.com         |              |          |
|  Diversion: Bob@uas1                |              |          |
|    ;reason=do-not-disturb           |              |          |
|                  |                  |              |          |
|--[9] ACK-------->|                  |              |          |
|                  |                  |              |          |
|--[10] INVITE voicemail@isp.com------------------------------->|
|  Diversion: Bob@uas1                |              |          |
|    ;reason=do-not-disturb           |              |          |
|                  |                  |              |          |
|<--[11] 200----------------------------------------------------|
|                  |                  |              |          |
|---[12] ACK--------------------------------------------------->|
|                  |                  |              |          |
|                  |                  |              |          |
        
                 +---------------------------------------------+
                 | Bob@UAS1: CFDoNotDisturb->voicemail@isp.com |
                 +--------------------------------------+------+
                                                         \
                                                          \
UAC1               P1                P2            UAS1        UAS2
                                                          Voicemail.com
|                  |                  |              |          |
|--[1] INV Bob@P1->|                  |              |          |
|                  |                  |              |          |
|                  |--[2] INV Bob@P2->|              |          |
|                  |                  |              |          |
|                  |               [3] INV Bob@uas1->|          |
|                  |                  |              |          |
|                  |                [4] <- 302-------|          |
|                  |               Contact: voicemail@isp.com   |
|                  |               Diversion: Bob@uas1          |
|                  |                 ;reason=do-not-disturb     |
|                  |                  |              |          |
|                  |                  |[5] ACK------>|          |
|                  |                  |              |          |
|                  |<-[6] 302---------|              |          |
|                  |  Contact: voicemail@isp.com     |          |
|                  |  Diversion: Bob@uas1            |          |
|                  |    ;reason=do-not-disturb       |          |
|                  |                  |              |          |
|                  |--[7] ACK-------->|              |          |
|<-[8] 302---------|                  |              |          |
|  Contact: voicemail@isp.com         |              |          |
|  Diversion: Bob@uas1                |              |          |
|    ;reason=do-not-disturb           |              |          |
|                  |                  |              |          |
|--[9] ACK-------->|                  |              |          |
|                  |                  |              |          |
|--[10] INVITE voicemail@isp.com------------------------------->|
|  Diversion: Bob@uas1                |              |          |
|    ;reason=do-not-disturb           |              |          |
|                  |                  |              |          |
|<--[11] 200----------------------------------------------------|
|                  |                  |              |          |
|---[12] ACK--------------------------------------------------->|
|                  |                  |              |          |
|                  |                  |              |          |
        

Alice calls Bob.

爱丽丝打电话给鲍勃。

[1] SIP UAC to SIP proxy server 1:

[1] SIP UAC到SIP代理服务器1:

        INVITE sip:Bob@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:Bob@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

The ISP's originating proxy routes the request to proxy 2 (P2).

ISP的原始代理将请求路由到代理2(P2)。

[2] SIP proxy server 1 to SIP proxy server 2:

[2] SIP代理服务器1到SIP代理服务器2:

        INVITE sip:Bob@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:Bob@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[3] SIP proxy server 2 to UAS1 (Bob's SIP phone):

[3] SIP代理服务器2至UAS1(Bob的SIP电话):

        INVITE sip:Bob@uas1.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        INVITE sip:Bob@uas1.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

Since Bob had hit the Do-Not-Disturb button on his SIP phone, Bob's phone forwards the call to his voicemail service.

由于Bob在SIP电话上按下了请勿打扰按钮,Bob的电话将呼叫转发给他的语音信箱服务。

[4] User agent server 1 (UAS1) to SIP proxy server 2 (P2)

[4] 用户代理服务器1(UAS1)到SIP代理服务器2(P2)

        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        
        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p2.isp.com
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        

[5] SIP proxy server 2 to UAS1 (Bob's SIP phone):

[5] SIP代理服务器2至UAS1(Bob的SIP电话):

        ACK sip:Bob@uas1.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:Bob@uas1.isp.com SIP/2.0
        Via: SIP/2.0/UDP p2.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

[6] SIP proxy server 2 (P2) to SIP proxy server 1 (P1):

[6] SIP代理服务器2(P2)到SIP代理服务器1(P1):

        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        
        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP p1.isp.com
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        

[7] SIP proxy server 1 to SIP proxy server 2:

[7] SIP代理服务器1到SIP代理服务器2:

        ACK sip:Bob@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:Bob@p2.isp.com SIP/2.0
        Via: SIP/2.0/UDP p1.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

[8] SIP proxy server 1 (P1) to UAC (alice-pc):

[8] SIP代理服务器1(P1)到UAC(alice pc):

        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        
        SIP/2.0 302 Moved Temporarily
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        

[9] SIP UAC to SIP proxy server 1:

[9] SIP UAC到SIP代理服务器1:

        ACK sip:Bob@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:Bob@p1.isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas1
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

[10] SIP UAC (alice-pc) to Voicemail server.

[10] SIP UAC(alice pc)到语音邮件服务器。

        INVITE sip:Voicemail@isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        Content-Type: application/sdp
        
        INVITE sip:Voicemail@isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: sip:Bob@p1.isp.com
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Diversion: <sip:Bob@uas1.isp.com>
          ;reason=do-not-disturb
        Content-Type: application/sdp
        

[11] Voicemail server to SIP UAC (alice-pc):

[11] 语音邮件服务器至SIP UAC(alice pc):

        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas2
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP alice-pc.isp.com
        Contact: Voicemail@isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas2
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        Content-Type: application/sdp
        

[12] SIP UAC to Voicemail server:

[12] SIP UAC到语音邮件服务器:

        ACK sip:Voicemail@isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas2
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        
        ACK sip:Voicemail@isp.com SIP/2.0
        Via: SIP/2.0/UDP alice-pc.isp.com
        From: sip:alice@isp.com
        To: <sip:Bob@p1.isp.com>;tag=uas2
        Call-ID: 12345600@alice-pc.isp.com
        CSeq: 1 INVITE
        

Because the Diversion header is present, the Voicemail server is able to place Alice's message into Bob's voice mailbox.

由于存在转移头,语音邮件服务器能够将Alice的邮件放入Bob的语音邮箱。

8.3. Questions and Answers on Alternative Approaches
8.3. 关于替代办法的问答

Question 1:

问题1:

Why do we need the Diversion header when we can see the To: header?

当我们可以看到To:标题时,为什么需要改道标题?

Answer:

答复:

a) The To: header is not guaranteed to have significance to the called party.

a) To:头不保证对被叫方有意义。

For example, the To: header may contain a locally significant URL (to the caller) such as a private numbering plan, speed dial digits, telephony escape digits, or telephony prefix digits.

例如,To:头可能包含一个本地重要的URL(到调用方),例如专用编号计划、快速拨号数字、电话转义数字或电话前缀数字。

Without a Diversion header, enumerating all possible locally significant To: headers that anyone might use to contact Bob@uas1.isp.com becomes a configuration problem at Voicemail@isp.com and is prone to namespace collision.

没有转移头,枚举所有可能的本地重要到:头,任何人都可以用来联系Bob@uas1.isp.com此时会成为一个配置问题Voicemail@isp.com并且容易发生名称空间冲突。

Support for Diversion headers enables Bob to contract a third-party service (Voicemail@isp.com) with a single globally significant URL for his voice mailbox (Bob@uas1.isp.com).

对分流头的支持使Bob能够签订第三方服务合同(Voicemail@isp.com)为他的语音信箱提供一个全球重要的URL(Bob@uas1.isp.com).

b) Given a set of multiple diversions, there is a policy decision of which Diversion header takes precedence for service logic.

b) 给定一组多个转移,有一个策略决定哪个转移头优先于服务逻辑。

Different services (or even different users for the same service) may want to configure this policy differently (first, last, second to last, etc.).

不同的服务(甚至同一服务的不同用户)可能希望以不同的方式配置此策略(第一、最后、第二到最后等)。

Question 2:

问题2:

Why do we need the Diversion header when we can see the Via: header?

当我们可以看到Via:标题时,为什么需要改道标题?

Answer:

答复:

The Via header does not contain information about servers whom have deflected the call (using a 3xx).

Via标头不包含有关已转移呼叫(使用3xx)的服务器的信息。

9. Mapping ISUP/ISDN Redirection Information to SIP Diversion Header
9. 将ISUP/ISDN重定向信息映射到SIP转接头

The discussions below regarding ISUP/ISDN reflect generic elements in ISUP/ISDN. In some variations of ISUP/ISDN, the information elements are represented differently. Regardless of the ISUP/ISDN variant, translation should be performed for the "first redirecting number" and the "last redirecting number".

下面关于ISUP/ISDN的讨论反映了ISUP/ISDN中的通用元素。在ISUP/ISDN的一些变体中,信息元素以不同的方式表示。无论ISUP/ISDN是哪种变体,都应翻译“第一个重定向号码”和“最后一个重定向号码”。

In order to prevent ambiguity, it is important to highlight a terminology mismatch between ISUP/ISDN and SIP. In SIP, a "redirect" indicates the act of returning a 3xx response. In ISUP/ISDN, a "redirection" is diversion of a call by a network entity. In ISUP/ISDN, a call may also be deflected (by an endpoint). Diversion is the more generic term that refers to either the act of an network redirection or endpoint deflection.

为了避免歧义,突出ISUP/ISDN和SIP之间的术语不匹配非常重要。在SIP中,“重定向”表示返回3xx响应的行为。在ISUP/ISDN中,“重定向”是网络实体对呼叫的转移。在ISUP/ISDN中,呼叫也可能(由端点)偏转。转移是指网络重定向或端点偏转行为的更通用术语。

In SIP, Diversion can be implemented as either an upstream 3xx (non-recursive) or an additionally forked downstream request (recursive). In the following text, a lowercase "redirect" indicates the SIP usage, while an uppercase "Redirect" indicates ISUP usage.

在SIP中,分流可以实现为上游3xx(非递归)或额外分叉的下游请求(递归)。在下面的文本中,小写的“redirect”表示SIP使用情况,而大写的“redirect”表示ISUP使用情况。

9.1. Mapping ISUP/ISDN Diversion Reason Codes
9.1. 映射ISUP/ISDN转移原因代码

ISUP and ISDN define the following diversion reasons:

ISUP和ISDN定义了以下改道原因:

0000 = Unknown 0001 = Call forwarding busy or called DTE busy 0010 = Call forwarding no reply 1111 = Call forwarding unconditional or systematic call redirection 1010 = Call deflection or call forwarding by the called DTE 1001 = Call forwarding DTE out of order

0000=未知0001=呼叫转移忙或被叫DTE忙0010=呼叫转移无应答1111=呼叫转移无条件或系统呼叫重定向1010=被叫DTE的呼叫转移或呼叫转移1001=呼叫转移DTE故障

Mapping of ISUP/ISDN reason codes to Diversion reason codes is performed as follows:

ISUP/ISDN原因代码与改道原因代码的映射如下:

ISUP/ISDN reason code Diversion reason code 0001 "user-busy" 0010 "no-answer" 1111 "unconditional" 1010 "deflection" 1001 "unavailable" 0000 all others

ISUP/ISDN原因码转移原因码0001“用户忙”0010“无应答”1111“无条件”1010“偏转”1001“不可用”0000所有其他

9.2. Mapping ISUP Redirection Information to SIP Diversion Header
9.2. 将ISUP重定向信息映射到SIP转移头

This section describes how generic ISUP diversion information elements may be translated across an ISUP/SIP gateway.

本节描述如何跨ISUP/SIP网关转换通用ISUP转移信息元素。

9.2.1. ISUP Definitions
9.2.1. ISUP定义

Called Party Number The number of the party to which the call is currently being routed.

Called Party Number呼叫当前路由到的一方的号码。

Redirecting Number The number to which the call was being routed when the last diversion occurred.

重定向号码上次转接时呼叫被转接到的号码。

Redirecting Reason The reason that the last diversion occurred.

重定向原因上次转移发生的原因。

Original Called Number The number to which the call was being routed when the first diversion occurred.

Original Called Number第一次转接时呼叫路由到的号码。

Original Redirecting Reason The reason that the first diversion occurred.

原始重定向原因发生第一次重定向的原因。

Redirection Counter The count of the total number of diversions that have occurred.

重定向计数器已发生的转移总数的计数。

Address Presentation Indication of whether presentation is allowed or restricted.

地址表示表示是否允许或限制表示。

9.2.2. ISUP Parameters
9.2.2. ISUP参数

When a SIP call transits a SIP/ISUP gateway, the following information in the ISUP message should be examined/set when translating SIP Diversion headers to ISUP diversion information:

当SIP呼叫通过SIP/ISUP网关时,在将SIP转接头转换为ISUP转接信息时,应检查/设置ISUP消息中的以下信息:

1) Redirecting Number

1) 重定向号码

2) Redirecting Reason

2) 重定向原因

3) Redirecting Address Presentation

3) 重定向地址显示

4) Original Called Number

4) 原被叫号码

5) Original Redirecting Reason

5) 原始重定向原因

6) Original Address Presentation

6) 原址介绍

7) Redirection Counter

7) 重定向计数器

An ISUP message contains information on the first and last diversions that occurred. The Redirection number is the number to which the call was being routed when the last diversion occurred. The Redirecting Reason is the reason that the last diversion occurred.

ISUP消息包含发生的第一次和最后一次改道的信息。重定向号码是上次发生转移时呼叫被路由到的号码。重定向原因是上次发生转移的原因。

The Original Called Number is the number to which the call was being routed when the first diversion occurred. The Original Redirecting Reason is the reason that the first diversion occurred.

原始被叫号码是第一次转接时呼叫路由到的号码。最初的重定向原因是发生第一次重定向的原因。

When only one Diversion has occurred, the number to which the call was being routed when the diversion occurred is in the Redirecting Number and the reason for that diversion is carried in the Redirect Reason.

当仅发生一次转接时,转接发生时呼叫被转接到的号码在重定向号码中,而转接原因在重定向原因中。

9.2.3. ISUP to SIP Translation
9.2.3. 是否需要SIP翻译

The ISUP Redirecting Number SHOULD be used to set the value of the name-addr of the top-most Diversion header. The ISUP Redirecting Number address presentation SHOULD be used to set the value of the diversion-privacy of the top-most Diversion header. The ISUP Redirecting Reason SHOULD be used to set the value of the diversion-reason of the top-most Diversion header. When present, the Original Called Number SHOULD be used to set the name-addr of the bottom-most Diversion header. When present, the Original Redirecting Reason SHOULD be used to set the diversion-reason of the bottom-most Diversion header. When present, the Original Address Presentation SHOULD be used to set the diversion-privacy of the bottom-most Diversion header.

ISUP重定向编号应用于设置最顶端的重定向标头的名称addr的值。应使用ISUP重定向号码地址演示文稿设置最顶端的分流标头的分流隐私值。ISUP重定向原因应用于设置最顶端的分流标头的分流原因值。当存在时,应使用原始被叫号码设置最底部分流头的名称addr。存在时,应使用原始重定向原因设置最底部导流总管的导流原因。当存在时,应使用原始地址表示设置最底部分流标头的分流隐私。

The Redirection Counter value minus 1 SHOULD be stored in the diversion- counter associated with the top-most Diversion header. Presence of the diversion-counter for the bottom-most Diversion header is optional. If present, the diversion-counter of the bottom-most Diversion header SHOULD be 1.

重定向计数器值减1应存储在与最顶端的分流标头关联的分流计数器中。最底部导流集管的导流计数器是可选的。如果存在,最底部导流集管的导流计数器应为1。

9.2.4. SIP to ISUP Translation
9.2.4. SIP至ISUP翻译

The name-addr of the top-most Diversion header SHOULD be used to set the ISUP Redirecting Number. The diversion-reason of the top-most Diversion header SHOULD be used to set the ISUP Redirecting Reason. The diversion-privacy of the top-most Diversion header SHOULD be used to set the ISUP Redirecting Address Presentation.

应使用最顶部分流头的名称addr设置ISUP重定向编号。最顶部导流总管的导流原因应用于设置ISUP重定向原因。应使用最上面的分流标头的分流隐私设置ISUP重定向地址演示文稿。

When multiple Diversion headers are present, the name-addr of the bottom- most Diversion header SHOULD be used to set the ISUP Original Redirecting Number. When multiple Diversion headers are present, the diversion-reason of the bottom-most Diversion header SHOULD be used to set the ISUP Original Redirecting Reason. When multiple Diversion headers are present, the diversion-privacy of the bottom-most Diversion header SHOULD be used to set the ISUP Original Redirecting Address Presentation.

当存在多个分流头时,应使用最底部分流头的名称addr来设置ISUP原始重定向编号。当存在多个导流集管时,应使用最底部导流集管的导流原因设置ISUP原始重定向原因。当存在多个转送标头时,应使用最底部转送标头的转送隐私设置ISUP原始转送地址表示。

The ISUP Redirection Counter SHOULD be set equal to the sum of the counters of all Diversion headers in the SIP message. A Diversion header that does not explicitly specify a diversion-counter tag counts as 1.

ISUP重定向计数器应设置为等于SIP消息中所有转移头的计数器之和。未明确指定分流计数器标记的分流标头计为1。

9.2.5. Example of ISUP to SIP Translation
9.2.5. ISUP到SIP转换的示例
                                   ISUP/SIP GW
                                       |
--IAM--------------------------------->|
  Called Party Number    =+19195551004 |
  Redirecting Number     =+19195551002 |
    Address Presentation =presentation restricted
  Original Called Number =+19195551001 |
  RedirectionInformation:              |
    Original Redirecting Reason = Unconditional (1111)
    Redirecting Reason = User busy (0001)
    Redirection Counter = 5            |
                                       |
                                       |--INVITE +19195551004------>
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;privacy="full"
                                       |    ;counter=4
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;counter=1
                                       |
                                       |
        
                                   ISUP/SIP GW
                                       |
--IAM--------------------------------->|
  Called Party Number    =+19195551004 |
  Redirecting Number     =+19195551002 |
    Address Presentation =presentation restricted
  Original Called Number =+19195551001 |
  RedirectionInformation:              |
    Original Redirecting Reason = Unconditional (1111)
    Redirecting Reason = User busy (0001)
    Redirection Counter = 5            |
                                       |
                                       |--INVITE +19195551004------>
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;privacy="full"
                                       |    ;counter=4
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;counter=1
                                       |
                                       |
        
9.2.6. Example of SIP to ISUP Translation
9.2.6. SIP到ISUP的转换示例
                                   ISUP/SIP GW
                                       |
                                       |<--INVITE +19195551004------
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;privacy="full"
                                       |    ;counter=4
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;counter=1
                                       |
                                       |
                                       |
<--IAM---------------------------------|
  Called Party Number    =+19195551004 |
  Redirecting Number     =+19195551002 |
    Address Presentation =presentation restricted
  Original Called Number =+19195551001 |
  RedirectionInformation:              |
    Original Redirecting Reason = Unconditional (1111)
    Redirecting Reason = User busy (0001)
    Redirection Counter = 5            |
        
                                   ISUP/SIP GW
                                       |
                                       |<--INVITE +19195551004------
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;privacy="full"
                                       |    ;counter=4
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;counter=1
                                       |
                                       |
                                       |
<--IAM---------------------------------|
  Called Party Number    =+19195551004 |
  Redirecting Number     =+19195551002 |
    Address Presentation =presentation restricted
  Original Called Number =+19195551001 |
  RedirectionInformation:              |
    Original Redirecting Reason = Unconditional (1111)
    Redirecting Reason = User busy (0001)
    Redirection Counter = 5            |
        
9.3. Mapping ISDN Redirection Information to SIP Diversion Header
9.3. 将ISDN重定向信息映射到SIP转移头

An ISDN message can contain up to two instances of a Redirecting Number information element. When a diversion occurs, an additional Redirection number information element is added. When a third (or greater) diversion occurs, the new Redirecting Number information element replaces the bottom-most Redirection number information element.

ISDN消息最多可以包含两个重定向号码信息元素的实例。发生转移时,将添加一个附加的重定向编号信息元素。当发生第三次(或更大)转移时,新的重定向号码信息元素将替换最底部的重定向号码信息元素。

9.3.1. ISDN Definitions
9.3.1. ISDN定义

Called Party Number The number of the party to which the call is currently being routed.

Called Party Number呼叫当前路由到的一方的号码。

Redirecting Number information element Aggregate information element that contains Redirecting number and Reason for diversion.

重定向号码信息元素包含重定向号码和转移原因的聚合信息元素。

Redirecting Number The number to which the call was being routed when the last diversion occurred.

重定向号码上次转接时呼叫被转接到的号码。

Reason for Diversion The reason that the last diversion occurred.

改道原因上次改道的原因。

Origin of Number Indicates whether the number is user provided and screened or network provided.

号码来源表示该号码是用户提供并筛选的还是网络提供的。

Presentation Status Indicates if presentation is allowed or prohibited.

演示状态指示是允许演示还是禁止演示。

9.3.2. ISDN Parameters
9.3.2. ISDN参数

When a SIP call transits a SIP/ISDN gateway, the following information in the ISDN message should be examined/set when translating SIP Diversion headers to ISDN diversion information:

当SIP呼叫传输SIP/ISDN网关时,在将SIP转接头转换为ISDN转接信息时,应检查/设置ISDN消息中的以下信息:

1) Redirecting Number of the top-most Redirecting Number information element

1) 最顶端的重定向编号信息元素的重定向编号

2) Reason for diversion of the top-most Redirection number information element

2) 最顶端重定向编号信息元素转移的原因

3) Origin of Number and Presentation Status of the top-most Redirection number information element

3) 最顶端重定向编号信息元素的编号来源和显示状态

4) Redirection number of the bottom-most Redirection number information element

4) 最底部重定向编号信息元素的重定向编号

5) Reason for diversion of the bottom-most Redirection number information element

5) 最底部重定向编号信息元素被转移的原因

6) Origin of Number and Presentation Status of the bottom-most Redirection number information element

6) 最底部重定向编号信息元素的编号来源和显示状态

An ISDN message contains information on the first and last diversions that occurred. The top-most Redirection number information element contains information (including the Redirecting Number, Origin of Number, Presentation Status, and Reason for diversion) about the last diversion that occurred. The bottom-most Redirection number information element contains information (including the Redirecting Number, Origin of Number, Presentation Status, and Reason for diversion) about the first diversion that occurred.

ISDN消息包含发生的第一次和最后一次转移的信息。最顶端的重定向编号信息元素包含有关上次发生的转移的信息(包括重定向编号、编号来源、演示状态和转移原因)。最底层的重定向编号信息元素包含有关发生的第一次转移的信息(包括重定向编号、编号来源、显示状态和转移原因)。

If only one Diversion has occurred, only one Redirection number information element is present.

如果只发生了一次转移,则只存在一个重定向编号信息元素。

The Redirecting Number information element has the same Type of Number/Numbering Plan, and Digits as the Calling Party Number information element.

重定向号码信息元素与主叫方号码信息元素具有相同类型的号码/编号计划和数字。

There is no Redirection Counter associated with this ISDN information element.

没有与此ISDN信息元素关联的重定向计数器。

Notice that the order of the Redirection number information elements in an ISDN message (top=first, bottom=last) is reversed from the order of Diversion headers in a SIP message (top=last, bottom=first).

请注意,ISDN消息中重定向编号信息元素的顺序(top=first,bottom=last)与SIP消息中的转移头的顺序(top=last,bottom=first)相反。

9.3.3. ISDN to SIP Translation
9.3.3. ISDN到SIP的转换

The Redirecting Number of the top-most ISDN Redirecting Number information element SHOULD be used to set the value of the name-addr of the bottom-most Diversion header. The Reason for Diversion of the top-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-reason of the bottom-most Diversion header.

应使用最顶端ISDN重定向号码信息元素的重定向号码来设置最底端重定向标头的名称addr的值。应使用最顶端ISDN重定向号码信息元素的转移原因来设置最底端转移头的转移原因值。

The Origin of Number of the top-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-screen of the bottom-most Diversion header. The Presentation Status of the top-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-privacy of the bottom-most Diversion header.

应使用最顶端ISDN重定向号码信息元素的号码原点来设置最底端转接头的转接屏幕的值。应使用最顶端ISDN重定向号码信息元素的表示状态来设置最底端转接头的转接隐私值。

The Redirecting Number of the bottom-most ISDN Redirecting Number information element SHOULD be used to set the value of the name-addr of the top-most Diversion header. The Reason for Diversion of the bottom-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-reason of the top-most Diversion header.

应使用最底部ISDN重定向号码信息元素的重定向号码设置最顶部重定向标头的名称addr的值。应使用最底部ISDN重定向号码信息元素的转移原因来设置最顶部转移标头的转移原因值。

The Origin of Number of the bottom-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-screen of the top-most Diversion header. The Presentation Status of the bottom-most ISDN Redirecting Number information element SHOULD be used to set the value of the diversion-privacy of the top-most Diversion header.

应使用最底部ISDN重定向号码信息元素的号码原点来设置最顶部转接头的转接屏幕的值。应使用最底部ISDN重定向号码信息元素的表示状态来设置最顶部转接头的转接隐私值。

Presence of the diversion-counter in each of the Diversion headers is optional. If present, the diversion-counter of each Diversion header SHOULD be 1.

每个导流集管中是否存在导流计数器是可选的。如果存在,每个导流总管的导流计数器应为1。

9.3.4. SIP to ISDN Translation
9.3.4. SIP to ISDN Translationtranslate error, please retry

The name-addr of the top-most Diversion header SHOULD be used to set the Redirecting Number of the bottom-most ISDN Redirecting Number information element.

应使用最上面的转接头的名称addr来设置最下面的ISDN转接号码信息元素的转接号码。

The diversion-reason of the top-most Diversion header SHOULD be used to set the Reason for Diversion of the bottom-most ISDN Redirecting Number information element.

最顶端的转接头的转接原因应用于设置最底端ISDN转接号码信息元素的转接原因。

The diversion-screen of the top-most Diversion header SHOULD be used to set the Origin of Number of the bottom-most ISDN Redirecting Number information element.

应使用最上面的转接头的转接屏幕设置最下面的ISDN转接号码信息元素的号码来源。

The diversion-privacy of the top-most Diversion header SHOULD be used to set the Presentation Status of the bottom-most ISDN Redirecting Number information element.

应使用最上面的转接头的转接隐私设置最下面的ISDN转接号码信息元素的显示状态。

The name-addr of the bottom-most Diversion header SHOULD be used to set the Redirecting Number of the top-most ISDN Redirecting Number information element.

应使用最下面的转接头的名称addr来设置最上面的ISDN转接号码信息元素的转接号码。

The diversion-reason of the bottom-most Diversion header SHOULD be used to set the Reason for Diversion of the top-most ISDN Redirecting Number information element.

应使用最底部转接头的转接原因设置最顶部ISDN转接号码信息元素的转接原因。

The diversion-screen of the bottom-most Diversion header SHOULD be used to set the Origin of Number of the top-most ISDN Redirecting Number information element.

应使用最底部的转接头的转接屏幕设置最顶部ISDN转接号码信息元素的号码来源。

The diversion-privacy of the bottom-most Diversion header SHOULD be used to set the Presentation Status of the top-most ISDN Redirecting Number information element.

应使用最底部的转接头的转接隐私设置最顶部ISDN转接号码信息元素的显示状态。

9.3.5. Example of ISDN to SIP Translation
9.3.5. ISDN到SIP转换示例
                        ISDN/SIP GW
                                       |
--Setup------------------------------->|
  Called party number      =+19195551004
  Redirecting Number information element:
    Redirecting Number     =+19195551001
    Reason for redirection = Unconditional (1111)
    Origin of Number       = passed network screening
    Presentation Status    = presentation allowed
  Redirecting Number information element:
    Redirecting Number     =+19195551002
    Reason for redirection = User busy (0001)
    Origin of Number       = passed network screening
    Presentation Status    = presentation prohibited
                                       |
                                       |--INVITE tel:+19195551004---->
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;screen="yes"
                                       |    ;privacy="off"
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;screen="yes"
                                       |    ;privacy="full"
                                       |
                                       |
        
                        ISDN/SIP GW
                                       |
--Setup------------------------------->|
  Called party number      =+19195551004
  Redirecting Number information element:
    Redirecting Number     =+19195551001
    Reason for redirection = Unconditional (1111)
    Origin of Number       = passed network screening
    Presentation Status    = presentation allowed
  Redirecting Number information element:
    Redirecting Number     =+19195551002
    Reason for redirection = User busy (0001)
    Origin of Number       = passed network screening
    Presentation Status    = presentation prohibited
                                       |
                                       |--INVITE tel:+19195551004---->
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;screen="yes"
                                       |    ;privacy="off"
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;screen="yes"
                                       |    ;privacy="full"
                                       |
                                       |
        
9.3.6. Example of SIP to ISDN Translation
9.3.6. SIP到ISDN转换示例
                                   ISDN/SIP GW
                                       |
<--Setup-------------------------------|
  Called party number      =+19195551004
  Redirecting Number information element:
    Redirecting Number     =+19195551001
    Reason for redirection = Unconditional (1111)
    Origin of Number       = passed network screening
    Presentation Status    = presentation allowed
  Redirecting Number information element:
    Redirecting Number     =+19195551002
    Reason for redirection = User busy (0001)
    Origin of Number       = passed network screening
    Presentation Status    = presentation prohibited
                                       |
                                       |<--INVITE tel:+19195551004----
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;screen="yes"
                                       |    ;privacy="off
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;screen="yes"
                                       |    ;privacy="full"
                                       |
        
                                   ISDN/SIP GW
                                       |
<--Setup-------------------------------|
  Called party number      =+19195551004
  Redirecting Number information element:
    Redirecting Number     =+19195551001
    Reason for redirection = Unconditional (1111)
    Origin of Number       = passed network screening
    Presentation Status    = presentation allowed
  Redirecting Number information element:
    Redirecting Number     =+19195551002
    Reason for redirection = User busy (0001)
    Origin of Number       = passed network screening
    Presentation Status    = presentation prohibited
                                       |
                                       |<--INVITE tel:+19195551004----
                                       |  Diversion: <tel:+19195551002>
                                       |    ;reason=user-busy
                                       |    ;screen="yes"
                                       |    ;privacy="off
                                       |  Diversion: <tel:+19195551001>
                                       |    ;reason=unconditional
                                       |    ;screen="yes"
                                       |    ;privacy="full"
                                       |
        
9.4. Information Loss in SIP to ISUP/ISDN Translation
9.4. SIP到ISUP/ISDN转换中的信息丢失

Because ISUP and ISDN only support a subset of the information in a SIP Diversion header, information loss occurs during translation at a SIP/ISUP or SIP/ISDN boundary.

由于ISUP和ISDN仅支持SIP转移报头中的信息子集,所以在SIP/ISUP或SIP/ISDN边界处的转换过程中会发生信息丢失。

9.4.1. Loss of Diversion URI Information
9.4.1. 信息丢失

Because ISUP and ISDN only support a subset of URI types (specifically tel: URIs and sip:x@y;user=phone URIs), diversion information occurring for other URI types may be lost when crossing from SIP to ISDN or ISUP.

因为ISUP和ISDN只支持URI类型的子集(特别是tel:URI和sip:x@y;user=电话URI),其他URI类型的转移信息在从SIP转换到ISDN或ISUP时可能会丢失。

9.4.2. Loss of Diversion Reason Information
9.4.2. 损失改道原因信息

Because ISUP and ISDN only support a subset of the reason codes supported by the Diversion header, specific reason code information may be lost when crossing from SIP to ISDN or ISUP.

由于ISUP和ISDN仅支持分流标头支持的原因码子集,因此从SIP到ISDN或ISUP时,特定原因码信息可能会丢失。

9.4.3. Loss of Diversion Counter Information
9.4.3. 转移计数器信息丢失

Because ISDN does not support a counter field (indicating the number of diversions that have occurred), counter information may be lost when crossing from SIP to ISDN.

由于ISDN不支持计数器字段(指示已发生的转移的数量),当从SIP到ISDN时,计数器信息可能会丢失。

10. Contributors
10. 贡献者

Special acknowledgement to both Bryan Byerly and JR Yang. As original authors of this document, both were instrumental is getting this document written.

特别感谢布莱恩·拜尔利和小杨。作为本文件的原始作者,两人都在帮助编写本文件。

11. Acknowledgements
11. 致谢

We would like to thank David Williams, Ameet Kher, Satya Khatter, Manoj Bhatia, Shail Bhatnagar, Denise Caballero-Mccann, Kara Adams, Charles Eckel of Cisco Systems, and Bert Culpepper of InterVoice-Brite for their insights, inputs, and comments.

我们要感谢David Williams、Ameet Kher、Satya Khatter、Manoj Bhatia、Shail Bhatnagar、Denise Caballero Mccann、Kara Adams、Cisco Systems的Charles Eckel和InterVoice Brite的Bert Culpeper的见解、投入和评论。

12. Normative References
12. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

[RFC3261]Rosenberg,J.,Schulzrinne,H.,Camarillo,G.,Johnston,A.,Peterson,J.,Sparks,R.,Handley,M.,和E.Schooler,“SIP:会话启动协议”,RFC 3261,2002年6月。

Authors' Addresses

作者地址

Steve Levy Cisco Systems 7025 Kit Creek Road P.O. Box 14987 Research Triangle Park, NC 27709 USA

Steve Levy Cisco Systems 7025 Kit Creek Road美国北卡罗来纳州三角研究公园14987号邮政信箱27709

   EMail: stlevy@cisco.com
        
   EMail: stlevy@cisco.com
        

Marianne Mohali (editor) Orange Labs 38-40 rue du General Leclerc Issy-Les-Moulineaux Cedex 9 92794 France

Marianne Mohali(编辑)Orange Labs Leclerc Issy Les Moulineaux Cedex路38-40号法国92794

   Phone: +33145294514
   EMail: marianne.mohali@orange-ftgroup.com
        
   Phone: +33145294514
   EMail: marianne.mohali@orange-ftgroup.com