
# 提交对接自有号码申请
只有支持SIP的号码资源可以申请云客服自有号码的对接。
#### 前提条件
企业自备SIP号码对接华为云客服时需要满足以下条件：
- 设备条件：完整支持SIP协议，具备固定的公网IP地址以及端口号信息。
- 网络质量要求：语音通话质量是基于数据网络稳定性，需要确保企业与云客服的网络丢包率\<1%，网络抖动=60ms，时延\<200ms。如果网络达不到此要求，可能会导致语音断断续续，听不清楚对方说话的情况。
- 网络带宽要求：云客服采用的语音媒体协议是G.711 A为例，平均流量为100 Kbit/s，上下行流量相同。带宽测算公式为：网络带宽 = (用户并发数 × 100Kbit/s )/1024 根据100个并发量来计算，带宽需求=(100 X 100Kbit/s) /1024=9.7Mbps，100个并发的带宽上下行需求为10Mbps。
  
- 号码资源：需要具备信令IP和端口的SIP号码才能对接。
  - 普通固话号码和95号码：支持企业自行向运营商申请。
  
  - 400号码：SIP号码可直接申请自有号码对接。非SIP号码可联系运营商配置转接到SIP固话后申请自有号码对接。普通小号、移动号码无法对接。
   
 
#### 背景信息
**SIP协议介绍**
SIP（Session initialization Protocol，会话初始协议）是由IETF（Internet Engineering Task Force，https://www.ietf.org/，因特网工程任务组）制定的多媒体通信框架协议之一。它是一个基于文本的应用层控制协议，用于创建、修改和释放一个或多个参与者的会话，独立于下面的传输层协议，可以承载在不同的传输协议上，例如UDP/TCP/TLS/SCTP。但是SIP单独不能完成多媒体呼叫，必须要与其他协议一起才能组建完整的多媒体通信系统，与RTP/RTCP、SDP、 MGCP 、DNS等协议配合共同完成多媒体会话过程。
由于SIP只描述建立/更改/终止一个会话，并不描述会话的内容，所以可以承载任何的会话内容，如语音/视频/游戏等。
**SIP协议实例**
SIP协议根据不同线路不同场景所展示的协议内容会有差别，以下是云客服成功发起的一例音频呼叫中的SIP协议内容，您可以参考该用例了解实际使用中的SIP协议。
```
INVITE sip:18012345678@10.11.56.68:5060;user=phone SIP/2.0
/*请求行：由Method、Request-URI和SIP Version组成。其中request-URI头域为UAP获取被叫号码18012345678。*/
/*SIP Header-start*/
Via: SIP/2.0/UDP 10.11.56.61:5060;branch=z9hG4bK9njqrkwmmvg6or9gnjml6hvwv;Role=3;Hpt=8e48_16
/*消息头，用于记录请求经历的路径，使响应能按此路径准确返回。Via头域携带的SIP URI是标识“发起请求用户的主机名或网络地址”,UAP从Via中获取对端的信令地址，如10.11.56.61:5060。*/
Record-Route: <sip:10.11.56.61:5060;transport=udp;lr;Hpt=8e48_16;CxtId=4;TRC=ffffffff-ffffffff;X-HwB2bUaCookie=2717>
/*强制路由，用于强制一个请求经过一系列代理（proxy）。*/
Call-ID: isbcjiwwievb2zvydwesyf2w0dxvdzsszefd@UAP9600
/*整个对话的唯一标识，由随机字符串组成。*/
From: <sip:02160123456@10.11.56.61;user=phone>;tag=yv20ze22-CC-57
/*标明请求的发起方，可以获取到主叫号码。如果是第一个消息，只有From域中有tag，To域无tag。*/
To: <sip:18012345678@10.11.56.68;user=phone>
/*标明请求的接收者，在注册时标明要注册的公共用户身份，在会话时用于标明请求的接收方，携带请求接收者的URI。Tag参数参照From中描述。在初始请求中的To头域可以不带tag，在会话内任何请求和响应必须带tag。UAP从To域中获取的IP：port是本端的信令地址，UAP获取原始被叫顺序：先从Historyinfo或者Diversion获取，如果没有从To域获取。*/
CSeq: 1 INVITE
/*标明事务的序号，逐个递增。*/
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER
/*头域，用于列举UA支持的所有SIP方法列表。*/
Contact: <sip:02160123456@10.11.56.61:5060;transport=udp;Hpt=8e48_16;CxtId=4;TRC=ffffffff-ffffffff>
/*给出后续和用户直接通信的地址，SIP URI表示接收响应的地址*/
Max-Forwards: 69
/*表示请求到达其目的地址所允许经过的中转站的最大值。请求每经转发一次，该值减1。该头域用于避免出现环路时不停的消耗Proxy 资源。取值范围为0–255，初始推荐值70。*/
Supported: 100rel
/*UAC或UAS支持的所有SIP扩展方法。*/
User-Agent: Huawei UAP9600 V100R005C00
Content-Length: 236
/记录消息体长度，单位是字节。*/
Content-Type: application/sdp
/*表示当前携带的消息体类型是SDP媒体类型。*/
/*SIP Header-end*/
/*SIP Body-start*/
v=0
/*表示协议版本号为0（SDP使用的协议版本号为0）。*/
o=- 929076 929076 IN IP4 10.11.56.61
/*第一个参数rue,表示会话发起者的名称，可以不填写。
第二个参数929076,表示主叫会话方的会话标识符。
第三个参数929076,表示主叫会话方的版本，会话数据有改变时，版本号递增。
第四个参数IN，表示网络类型；IN表示internet网络类型，目前仅支持该类型网络；
第五个参数IP4，表示IP地址类型，目前支持IPV4和IPV6。
第六个参数10.11.56.61，表明会话发起者的IP地址，该地址为信令面的IP地址。*/
s=SBC call
/*表示本次会话的名称。*/
c=IN IP4 10.11.56.61
/*连接信息。C行标识UE的媒体接收地址，如果媒体级行中也有c行，则取用媒体级中的，但无论如何必须有一个c行。
第一个参数IN，表示网络类型；IN表示internet，目前仅定义了该类型。
第二个参数IP4，表示IP地址类型，支持IPV4和IPV6。
第三个参数10.11.56.61，表示真正的多媒体流使用的IP地址。*/
t=0 0
/*第一个参数表示Start time，第二个参数表示stop time。start time和stop time的值为十进制的NTP（Network Time Protocol）时间，如果都为0，则表示持久会话。*/
m=audio 59354 RTP/AVP 8 0 97
/*m=<media> <port> <transport> <fmt list>。media：表示媒体的类型，音频audio或者视频vedio。目前定义了音频，视频，应用，数据和控制。port：表示媒体端口号。transport：表示传输协议，当前都是RTP/AVP。fmt list：表示格式列表。*/
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
/*rtpmap为关键字 PT值 码流名称/采样率*/
a=rtpmap:97 telephone-event/8000
a=ptime:20
/*表示该媒体的打包时长（表示允许在一个分组里保持多长的媒体，单位为毫秒）为20ms。*/
a=fmtp:97 0-15
a=sendrecv
/*表示媒体的流向为双向，媒体方向有inactive、sendonly、recvonly、sendrecv.*/
/*SIP Body-end*/
```
- SIP Header是信令消息，用于发起端用户告知接收端用户本次呼叫的基本信息。 信令消息可以理解为：
  呼叫10.11.56.68:5060
  我在通过10.11.56.61:5060给你发SIP消息
  这通呼叫的ID是xxxx
  呼叫是来自10.11.56.61:5060的
  我需要发给10.11.56.68:5060
  这是我在这通呼叫请求中发的第一次Invite消息
  如果收到，请联系10.11.56.61:5060回复我
  我是Huawei UAP9600 V100R005C00，我允许你回复我INVITE、ACK、BYE......等。
  这通信令消息长度236个字符，格式SDP。
  
- SIP Body是媒体消息，即SDP。SIP消息中媒体消息必不可少。信令消息只能让发起端和接收端知道双方已连接成，媒体消息是让双方知道消息的具体内容。 媒体消息可以理解为：
  我的版本是0。
  我通过信令地址10.11.56.61给你发的消息，但我的媒体地址是10.11.56.61（处理信令的服务器和处理媒体的服务器有可能不是一个哦），音频媒体流端口是10002，使用RTP协议传递， 视频媒体流端口是10004，也使用RTP消息传递。
  由于并不是所有的终端都支持视频，因此在接收SIP消息时，有可能只能得到对端的音频媒体信息，没有视频媒体信息，需要根据协商结果来定。
  ![](https://support.huaweicloud.com/usermanual-cec/public_sys-resources/notice_3.0-zh-cn.png)
  当前支持的媒体传输类型为RTP/AVP，即使用UDP通道进行传输，以确保音视频的实时效果。暂不使用基于TCP的RTP/SAVP的媒体传输类型。
  
SIP常见请求消息和响应消息可参考以下内容：
表1请求响应消息说明 
| 请求        | 使用场景                                                      |
|:---|:---|
| **核心方法**                                                             ||
| INVITE    | 协商类请求，开始会话时使用。收到对端1XX，表示SIP网络连通，可以开始对话了。                  |
| ACK       | 信令媒体协商或注册成功，告知对端系统，建立RTP通道。                               |
| OPTIONS   | 重定向，通常在检测中继，或者检测MRCP链路（比如对接TTS、对接ASR时需要使用MRCP链路）时使用。      |
| BYE       | 正常通话中，结束通话时使用。                                            |
| CANCEL    | 由于资源不够等会话异常中断，SIP会话的两端要强行拆线时使用CANCEL。                     |
| REGISTER  | 注册                                                        |
| **扩展方法**                                                             ||
| PRACK     | 用于确认接收到可靠的临时响应转移。                                         |
| INFO      | 由用户代理使用，以向其已经建立媒体会话的另一用户代理发送呼叫信令信息。                       |
| SUBSCRIBE | 建立订阅，以获取有关特定事件的通知。                                        |
| NOTIFY    | 用户代理使用NOTIFY来获取特定事件的发生。通常，当订户和通知程序之间存在订阅时，NOTIFY将在对话框内触发。 |
| REFER     | 由用户代理用于引用另一个用户代理来访问对话框的URI。必须包含Refer-To标题。这是REFER的强制标题。   |
| UPDATE    | 如果会话未建立，则UPDATE用于修改会话的状态。                                 |
| PUBLISH   | 被用户代理用于向服务器发送事件状态信息。                                      |
   
![](https://support.huaweicloud.com/usermanual-cec/public_sys-resources/notice_3.0-zh-cn.png)
- 云客服侧每分钟会使用OPTIONS请求消息来查询被叫的相关信息和功能，确认链路状态是否正常。只有在企业侧回复响应消息为200ok的情况下，才会认为链路正常，可以进行呼叫。
- 对于使用PRACK请求消息进行重协商时，云客服侧要求对端的响应消息18x消息（例如：180振铃）中必须包含Require:100rel字段，对端的INVITE请求消息中必须携带Supported:100rel参数。否则会造成通话无声的情况。
- 云客服侧使用UPDATE请求消息进行重协商时，用于正常和座席通话时使用。使用INVITE请求消息进行重协商时，用于呼叫进入智能IVR或者通过普通IVR转接。有些运营商不支持第二次INVITE进行重协商，会造成部分相关功能不可使用，例如小号业务会存在该问题。
 
**呼叫流程** **介绍**
用户发起对云客服的呼入流程具体如下：
- 用户侧发起呼叫业务，通过INVITE请求消息接入云客服SBC。
- 云客服侧回复振铃消息以及链路连接成功(200)的消息。
- 用户侧收到消息后回复收到了对INVITE请求的最终响应。
- 云客服侧接收回复，向用户侧发送重协商消息。
- 用户侧接收消息后回复链路连接成功(200)的消息。
- 云客服侧回复请求的响应后，用户与座席正式开始会话交谈。
图1呼叫流程   
![](https://support.huaweicloud.com/usermanual-cec/figure/zh-cn_image_0000002422526830.png)
#### 业务场景
企业自备SIP号码对接华为云客服的方案如下：
图2自有SIP号码对接   
![](https://support.huaweicloud.com/usermanual-cec/figure/zh-cn_image_0000002456165537.png)
**典型场景一**
企业拥有本地号码资源，直接与云客服进行对接。
对接方案：
1. 企业自行向运营商申请号码资源，资源类型可以是E1、专线或者是SIP。
2. 申请成功后，企业需要在本地通过语音网关将运营商的非SIP号线接入后转换为SIP号线后，才能与云客服的公有云SBC平台对接通信，具体设备可参考[常见问题\>产品咨询](https://support.huaweicloud.com/cec_faq/cec_06_0001.html)中的本地设备推荐。
3. 企业参考[申请对接自有号码]成功后，通过邮件向华为云客服的运营人员申请云客服的信令IP地址以及端口、媒体端口，用于本地防火墙设置白名单与线路对接。
**典型场景二**
企业申请运营商SIP号码，由运营商与华为对接。
对接方案：
1. 企业自行向运营商申请号线资源，该资源类型只可以是SIP类型。
2. 号码申请成功后，企业向华为云客服侧申请由华为直接与运营商对接，企业不做号线接入。
 
 #### 操作步骤
1. 以实名认证的账号登录[华为云](https://www.huaweicloud.com/)官网，右上角单击"控制台"，进入华为云控制台。
2. 选择"![](https://support.huaweicloud.com/usermanual-cec/figure/zh-cn_image_0000002456165533.png) \> 服务列表 \> 企业应用 \> 云客服"，进入云客服工作台。
3. 选择"云客服 \> 资源管理 \> 号码"，进入号码管理页面，选择"自有号码"。
4. 单击"自有号码"，单击右上角"新增自有号码，点此链接申请对接自有号码"，填写号码、号码类型，信令和媒体的IP端口，单击"确定"。
 
#### 后续操作
您需要耐心等待云客服运营人员为您完成号码对接配置，当配置完成后，您可在当前页面查看号码的对接状态为"配置完成"，您可单击"关联呼叫中心实例"将您的号码关联到已经有的呼叫中心实例上。
