`
sun4love
  • 浏览: 233014 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SIP 中文翻译

    博客分类:
  • VOIP
阅读更多

1.介绍

extensions.conf中使用sip设备的语法是SIP/devicenamedevicename名在下一节中说明。

如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNS SRV功能

如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxyhostname形式,proxyhostname的定义在下面的章节说明

2.CLI中的查询命令

usip show peers
     显示所有的SIP peers(包括friends)

usip show users
     显示所有的SIP users(包括friends)

usip show registry
     显示注册到的主机状态

usip debug
    显示所有的Sip信息

umodule reload chan_sip.so
    重新装载sip的配置文件


 

3.设备命名

命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:

1)Asterisk取出SIP From: address中的username,使用它来匹配系统中定义的type=user的的设备名。

2)Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的type=peer的设备。

不要混淆extensions和设备名的概念。设备需要一个唯一的名字。设备名不能用于电话号码。电话号码是拨号计划中的声明的一个extension

注意:参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用

4.通用属性说明
[general];通用属性
context=default;呼入电话默认使用的context
allowguest=no; 允许或拒绝客户呼叫 (默认 yes)
allowoverlap=no; 允许重叠拨号(默认yes)
allowtransfer=no; 允许呼叫转接(默认yes)
realm=mydomain.tld; 认证的领域。默认是asterisk,如果在asterisk.conf中设置了系统名称,
;该值就会默认成系统的名称,Realms设置必须全局唯一。一般可以设置
;为主机名或域名。
bindport=5060;asterisk监听的本地端口号。(SIP标准端口号5060) bindaddr=0.0.0.0; 绑定的IP地址 (0.0.0.0所有地址)
srvlookup=yes; 打开外呼的DNS SRV查找。注意,asterisk仅使用SRV记录中的第一
;个主机。该功能可以在拨号计划中使用SIP/username@domain形式通过
;域名拨打Internet上的SIp电话。
pedantic=yes; 打开头信息中tags值检测,URIs和多行格式化头信息中国际字符转换等
;严格的SIP兼容性问题。(默认是no)

下面是关于TOS参数,可以参考doc/ip-tos.txt
tos_sip=cs3; Sets TOS for SIP packets.
tos_audio=ef; Sets TOS for RTP audio packets.
tos_video=af41; Sets TOS for RTP video packets.

maxexpiry=3600; 注册和订阅的最大间隔-秒
minexpiry=60; 注册和订阅的最大间隔-秒(默认 60)
defaultexpiry=120; 默认注册间隔的时长
t1min=100; 消息到达录音服务器的最小折返时间,默认100 ms
notifymimetype=text/plain; 修改在通知中消息MWI NOTIFY 的mime类型
checkmwi=10; peer检测语音邮箱的时间间隔
buggymwi=no; Cisco SIP防火墙不完全支持MWI RFC。打开该选项时,向电话发送MWI时,也不会收到错误信息。
vmexten=voicemail; 语音邮箱在拨号计划中的extension。用来设置MWI通知消息中的
;Message-Account信息,默认是asterisk。
disallow=all; 先屏蔽掉所有的编码
allow=ulaw; 打开允许的编码,按顺序引用
allow=ilbc; 更多的选项,看文档 doc/rtp-packetization
下面参数设置了呼叫等待音乐的默认项,如果没有在拨号计划中使用Set(CHANNEL(musicclass)=whatever) 指定通道的呼叫等待音乐首选项,将会使用该值。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohinterpret=default
呼叫等到时,建议通道播放的等待音乐。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohsuggest=default
language=en
;设置所有users/peers的语言,也可以对单个users/peers设置。
relaxdtmf=yes; 宽松dtmf处理
trustrpid = no; 是否信任远端ID(Remote-Party-ID)
sendrpid = yes;是否发送远端ID(Remote-Party-ID)
progressinband=never; 是否产生呼入铃音。Never表示从来不适用呼入信号。可选值:yes, no, never 。默认值never。
useragent=Asterisk PBX; 修改user agent 字符串
promiscredir = no; 如果设置为yes, 允许302 或 REDIR非本地SIP地址。注意,对本地
;系统做重定向操作会导致循环调用,asterisk并不支持这种操作。
usereqphone = no; 如果设置为 yes, 会在uri 中增加";user=phone",使uri中包含一个合法
;的电话号码。
dtmfmode = rfc2833; 设置发送DTMF模式。默认:rfc2833

;其他选项:
; info : SIP INFO messages
; inband :按键的设备产生拨号音 (需要64 kbit 编码 -alaw, ulaw)
; auto : 默认使用rfc2833,如果远端不支持时会使用inband
compactheaders = yes
; 发送压缩的SIP头.
videosupport=yes
;打开视频支持。
maxcallbitrate=384
; 视频呼叫的最大速率 (默认 384 kb/s)
callevents=no
; sip ua执行事件时产生管理事件
alwaysauthreject = yes
; 一个INVITE 或 REGISTER请求由于任何原因被拒绝时,总会使用同一
;个原因,用户名合法但密码不正确。而不会告诉请求者是否有这个
;user或peer。这样会减少攻击者扫描SIP账户的可能性。

g726nonstandard = yes
; 是否使用G726-32 协商,使用AAL2包次序来替代RFC3551(需要
;Sipura 和 Grandstream ATAs)的次序。AAL2与RFC3551的规则相反,
;会使用AAL2-G726-32协商。
matchexterniplocally = yes
; 如果本地设置与外部设置相同,仅替代externip 或 externhost.
dynamic_exclude_static = yes
; 不允许动态主机使用静态主机的IP地址注册。这将避免使用相同
;IP注册的错误。
contactdeny=0.0.0.0/0.0.0.0
; 拒绝所有主机的联络
contactpermit=172.16.0.0/255.255.0.0
; 只能有一部分IPs可以注册到该服务器

如果设置了regcontext,将会为一个是有us注册和反注册并且有regexten=配置项目的用户动态创建和销毁一个NoOp priority1extension。可以使用&指定多个context。如果没有指定'regexten' ,将会使用注册peer的regexten或名字。如果指定了多个context,则必须在regexten中使用@来指定。在regexten中也可以使用'&'来指定多个。Regexten中也可以使用模式匹配。
regcontext=sipregistrations

15.
RTP定时器

这些是当前音频和视频流使用的定时器。RTP超时仅仅应用于音频通道。该属性可以全局设置,也可以对每一个设备设置。

 

rtptimeout=60                     ;如果60秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ;主要使用在通话中对方掉电或是老人忘记挂电话的情况。         ;

rtpholdtimeout=300        ;
如果300秒之内音频通道没有RTP或RTCP活动,将挂断电话。

                        ; 主要使用在我方等待时间过长的情况

rtpkeepalive=<secs>          ;在RTP流中发送保活信息,保持NAT开放。默认是关闭(0)

6.SIP调试信息

sipdebug= yes            ;打开SIP调试信息

recordhistory=yes         ; 默认记录SIP历史

dumphistory=yes          ; 在对话结尾丢且SIP历史,被写到DEBUG日志

 

7.状态通知STATUS NOTIFICATIONS(SUBSCRIPTIONS)

 

可以使用"hint" priority来订阅extensions的状态 (见extensions.conf.sample) 。

chan_sip支持两种通知的格式:dialog-info 和 SIMPLE

如果你为一个设备设置了呼叫限制,就可以得到更多的细节报告(比如busy)。当呼叫限制时,会被告知忙。为了能够转接,你至少需要设置限制级别为2。

对于队列,你需要状态报告达到这个细节的界别。不管怎么样,如果你使用Sip订阅,队列和管理会为读状态信息使用相同的内部接口。

注意,如果设置了一个realtime的拨号计划,并且使用了realtime switch,订阅不会工作。

 

allowsubscribe=no              ;不支持订阅 (默认yes)

subscribecontext= default  ;为订阅请求设置context用来限制订阅到本地extensions。

;可以对每个peer/user进行设置。

notifyringing= yes        ;当发起其他呼叫时,INUSE状态的订阅者是否会发送RINGING (默认no)

notifyhold= yes         ;处于HOLD 状态时,通知订阅者。(默认no)

                            ;如果在使用realtime时,打开了notifyringing 和 notifyhold,将会增加很

                            ;多的数据库的传输。

limitonpeers= yes         ;仅对peers进行呼叫限制。

8.
传真T.38

该项目既可以在[general]中设置,
也可以对每个设备进行配置。设置为yes,表示允许在SIP到Sip的模式下传输传真,传输的两端都必须配置为支持
T38T.38 仅工作在SIP到SIP 呼叫中

 

t38pt_udptl=yes             ; 默认false

9.
外呼SIP注册

 

Asterisk可以把自己作为一个SIP ua注册到一台SIP代理上。注册格式如下:

register=> user[:secret[:authuser]]@host[:port][/extension]

 

 

 

如果没有指定extension,将使用's' extension。该extension必须在extensions.conf中定义,以便于可以从SIP代理上接收呼叫。

Host即可以是DNS中定义的一个主机名,也可以是在下面定义的一个section名,如serverA,见本文最后部分。

 

例子:

register=> serverB:1111@10.0.2.252/serverA

register=> 1234:password@mysipprovider.com         ;将把呼叫传递给's' extension      

 

register=> 2345:password@sip_proxy/1234

 

在代理10.0.2.252上注册serverB。如果你在下面定义了一个section叫做serverA,则呼叫会转到serverA中定义的context中。否则呼叫将会从这个代理上链接到本地extension serverA (定义在extensions.conf中), 使用默认的context。

u
技巧1:尽量避免在sip.conf中设置主机名作为section,如[provider.com]

u
技巧2:如果有双向呼叫时,在代理中分开定义type=peer 和 type=user,避免使用type=friend

 

registertimeout=20              ; 注册间隔20秒(默认)

registerattempts=10            ; 注册尝试次数,

; 0 一直尝试,直到接受了注册。默认值0

10.
NAT支持

如果Asterisk在一个NAT设备内部与外部的一个服务通讯,需要设置externip, externhost 和 localnet。

 

externip= 200.201.202.203      ; 在公网上的一个中间人地址,处理SIP消息。当注册和与一个代理通讯

;时,需要设置externip和localnet

 

                             

externhost=foo.dyndns.net         ; 也可以配置一个域名,Asterisk 将会执行DNS查询。不推荐这

;种方式,尽量使用IP,配置externip

externrefresh=10                ;更新externhost的时间间隔。


 

可以有多个本地配,设置一个合理的就可以。(RFC 1918--私有地址分配 )                             

localnet=192.168.0.0/255.255.0.0   ;All RFC 1918 addresses are local networks

localnet=10.0.0.0/255.0.0.0         ;Also RFC1918

localnet=172.16.0.0/12                 ;Another RFC1918 with CIDR notation

localnet=169.254.0.0/255.255.0.0 ;Zeroconf local network

 

 

nat=设置用于Asterisk在一个公网地址上,需要和一个NAT设备后的设置通讯。如果出现音频问题,一般是NAT配置或防火墙屏蔽了SIP+RTP端口。RTP端口配置在rtp.conf中。

 

nat=no                        ; 全局NAT 配置,(影响所有的peers和users),取下列值:

; yes 总是忽略信息,假定使用NAT

; no 基于RFC3581使用NAT模式(;rport)

; never 从不尝试使用NAT模式或RFC3581支持

; route假定使用NAT,不发送rport

                             

11.
媒体流处理

 

默认情况下,Asterisk会尽量使音频流走最优的路径(re-invite)。如果没有特别设置媒体流需要通过服务器的话,Asterisk会把媒体流重定向。当Asterisk在NAT外部,客户端在NAT内部时,上述功能不能工作,这时必须配置canreinvite=nonat。

 

canreinvite=yes            ; 默认情况下,RTP媒体流会不经过服务器,在呼叫两端直接传递。

; 一些设备不支持这种方式(特别是一端在NAT内)。默认设置yes。

; 如果所有的客户端都在NAT内,或其他原因想让媒体流通过服务器,

;需要关闭该选择。

 

directrtpsetup=yes              ; 打开新的实验性的直接RTP建立,建立一个呼叫,媒体流直接

; peer-to-peer 传递,而不是使用re-invites 方式。视频不支持该方式。

; 被叫方发送RTP载荷和收到200OK响应的fmtp头信息不能与主叫的

; INVITE请求匹配。

; 如果NAT后边的设备设置了canreinvite=yes,传输也会失败。

                     

 

canreinvite=nonat         ; 允许媒体路径重定向的另一个选项,告诉发送媒体流的peer不在

                            ;  NAT里边, (RTP核心可以决定使用收到媒体的from地址).

 

;canreinvite=update             ; 允许媒体路径重定向的第三个选项, UPDATE替代INVITE,可以和'nonat'

                            ; 合并成'canreinvite=update,nonat'. 相当于 'yes'.

12.
REALTIME支持

关于ARA(Asterisk Realtime Architecture)结构的更多信息,可以看源代码中/doc 目录下的realtime.txt和extconfig.txt文件。

 

rtcachefriends=yes              ; 通过把realtime friends加入到一个内部列表中来缓存friends。

                            ;就好像是把friends从配置文件中加载一样。(yes|no)

 

rtsavesysname=yes             ; 注册时保存systemname到realtime数据库,默认no

                       

rtupdate=yes               ; 注册时更新数据库(yes|no)

; 如果设置为yes,当SIP UA 注册成功时,IP、原始端口、注册期间和用

; 户名会被更新到realtime数据库。默认是yes。

; 如果设置为no,realtime功能可能会执行错误。

                             

rtautoclear=yes            ; 自动失效已经创建的friends (yes|no|<seconds>)

; 如果设置为yes,当注册预期时,friend将从注册信息中清除。

; 如果设置为一个整数,friends 会在这个秒数内过期,而不是在注册时间

; 间隔内过期。

                              

 

ignoreregexpire=yes            ; 打开这个设置有两个功能

; 对于非realtime peers,注册过期时,注册信息也不会从内存或asterisk数

; 据库移除。如果有电话呼叫这个peer时,该注册信息会一直可以使用,

; 不管这个peer是否已经过期。

; 对于realtime peers, 无论是否过期,从数据库得到的注册信息仍然可以

; 使用。如果过期,realtime peer信息仍然在内存(由于缓存或其他原因),

; 该信息不会从realtime数据库移除。

13.
SIP域名支持

 

收到的INVITE 和 REFER 消息可以和一系列的被允许的域名匹配。每一个域名能够直接呼入他们描述的特定context.。默认情况下,所有的域都会接收呼叫,并发送呼叫到指定的context或者user/peer指定的Context。如果配置了域列表,REGISTER请求的域不在其中,呼叫将会被拒绝。

 

使用如下方式使用域:

domain=<domain>[,<context>]

例如:

domain=myasterisk.dom

domain=customer.com,customer-context

 

另外,如果需要过滤呼入请求时,应该增加一个服务器的默认域设置。

autodomain=yes

 

 

allowexternaldomains=no           ;不允许请求非本地域

 

domain=mydomain.tld,mydomain-incoming

; 为一个呼入呼叫配置域和context

domain=1.2.3.4                  ; 使用IP地址作为本地域,可以同时又几个域设置。

allowexternaldomains=no           ; 不允许INVITE和REFER请求非本地域,默认yes。

                           

autodomain=yes                 ; 自动把本地主机名和IP地址加入域名列表。

 

fromdomain=mydomain.tld         ; 当进行外呼SIP INVITEs 到一个非peers时,使用主域而不是IP

                                   ; 地址来识别From: headers头信息。这是一个礼貌的用法,它可

                                   ; 能对一些在你的服务器上没有优先账号的目的地址是必须的。

14.
抖动缓存(jitterbuffer配置

 

jbenable=yes                           ; 打开SIP通道接收端的抖动缓冲。默认no。在接收端不能接收

                                   ; 抖动的情况下,可以使用抖动缓存来接收抖动。

 

jbforce=no                       ; 强迫在SIP通道的接收端使用抖动缓存,默认no

 

jbmaxsize=200                 ; 抖动缓存大小(毫秒)

 

jbresyncthreshold= 1000          ; 跳过抖动缓存的帧的时间长度,再同步缓存的帧。可以用来提高

                                   ; 语音的质量。外部设备和程序经常会造成大的跳动或中断。默认

                                   ; 设置为1000。

 

jbimpl=fixed                            ; SIP通道接收端抖动缓存的实现,当前有两种形式:

                                   ;fixed 缓存大小等于jbmaxsize,大小固定。

                                   ;adaptive 可变大小,实际上用于IAX2的一个新的抖动缓存。

                                   ; 默认是fixed

 

jblog=no                           ; 对抖动缓存帧记录日志,默认是no。

;-----------------------------------------------------------------------------------

15.
认证

[authentication]

外呼的全局证书。当一个代理挑战认证您的asterisk服务器,如果挑战通过,这些证书将覆盖peer/register中定义的证书。另外,asterisk也可以使用其他的挑战码对外呼进行认证。我们挑战代理上的认证码,从认证码列表中选择一组证书。

 

语法:

;        auth= <user>:<secret>@<realm>

;        auth= <user>#<md5secret>@<realm>

例子:

;         auth=mark:topsecret@digium.com

 

也可以增加认证配置到peer的定义中。该配置将覆盖其他的认证设置。

16.
User peer friend

 

Users和peers有不同的设置,Friends有Users和peers的所有功能。

 

;User 配置选项:        Peer 配置:

;--------------------        -------------------

Context                context

Callingpres                  callingpres

Permit                         permit

Deny                           deny

Secret                         secret

md5secret                   md5secret

dtmfmode                    dtmfmode

canreinvite                   canreinvite

nat                        nat

callgroup                     callgroup

pickupgroup                pickupgroup

language               language

allow                           allow

disallow                disallow

insecure                insecure

trustrpid                trustrpid

progressinband            progressinband

promiscredir                promiscredir

useclientcode               useclientcode

accountcode                accountcode

setvar                          setvar

callerid                 callerid

amaflags               amaflags

call-limit                call-limit

allowoverlap                allowoverlap

allowsubscribe             allowsubscribe

allowtransfer                allowtransfer

subscribecontext          subscribecontext

videosupport               videosupport

maxcallbitrate                     maxcallbitrate

rfc2833compensate            mailbox

t38pt_usertpsource             username

template

fromdomain

regexten

fromuser

host

port

qualify

defaultip

rtptimeout

rtpholdtimeout

sendrpid

outboundproxy

rfc2833compensate

t38pt_usertpsource

contactpermit         <span styl

分享到:
评论

相关推荐

    SIP协议中文版(翻译)

    **SIP协议中文版(翻译)** SIP(Session Initiation Protocol)协议是一种用于控制多媒体通信会话(如语音和视频通话)的信令协议。它最初由IETF(Internet Engineering Task Force)定义,并在RFC3261文档中详细...

    SIP协议中文版本sip协议 中文版本

    中文版SIP协议将这些规范翻译成中文,帮助开发者更直观地了解这些引用文件的内容。 3. **SIP消息** SIP协议通过交换消息来控制会话。每个SIP消息由消息头和消息体两部分组成。消息头包含请求行(Request-Line)、...

    sip协议中文版.rar

    中文版的SIP协议文档是对于英文原版的翻译,旨在帮助中文使用者更好地理解和应用这一标准。这里提到的"sip协议中文版.rar"压缩包包含了多个关于SIP及相关协议的中文文档,以及开源库eXosip的API函数说明。 1. RFC...

    最流行的SIP 3261协议的中文翻译,非常难得

    通过阅读《sip协议3261中文版.pdf》,读者可以深入理解SIP 3261的各个细节,这对于开发SIP相关应用、构建VoIP系统或优化通信服务质量都具有极高的价值。学习SIP协议不仅有助于理解互联网通信的底层原理,也有助于...

    SIP3261中文版

    SIP3261是rfc3261的中文翻译版,提供了对SIP协议的详细解释。 1. SIP协议的核心功能: - 用户定位:SIP通过查询代理服务器来确定终端用户的位置,以便进行通信。 - 用户有效性:验证用户是否愿意参与会话。 - ...

    sip揭秘(中文版)

    这本书《SIP揭秘(中文版)》是由SIP协议的主要创始人之一Gonzalo Camarillo编写,并由白建军等人翻译成中文。书中全面而深入地介绍了SIP协议的背景、设计原则、操作方式以及与其它标准的兼容性,并提供SIP工具包的...

    3M SIP2 标准协议文档(中文版)

    本文档是3M SIP2标准协议的中文翻译版本,是开发图书馆自助借还系统设备数据接口的必备参考资料。 协议的文档内容分为多个部分,涵盖了标准协议的介绍、更新信息、命令消息、响应消息、协议规则和规定、独立消息、...

    RFC3261中文版_sip.doc

    RFC3261 中文版是 Session Initiation Protocol(会话初始协议)的中文翻译版本,用于描述 SIP 协议的技术细节。SIP 协议是基于文本的应用层协议,用于在 IP 网络上初始化、修改和终止会话。该协议广泛应用于 VoIP...

    sip-3261中文

    该文档似乎是对SIP协议标准的一个中文翻译版本,标题中的“3261”很可能是指SIP协议的标准版本——RFC 3261。这一版本是SIP协议的核心规范,定义了SIP协议的基本语法、消息格式及交互流程。 ### E文不好的人可以先...

    IETF SIP RFC3261 中文

    IETF RFC3261(SIP协议)的中文翻译版;觉得看英文比较慢的朋友可以先看看这个,有少量翻译错误请对照英文版校对-IETF RFC3261 (SIP) version of the Chinese translation; Think of English slower you can take a ...

    sip协议中文版-信产部版本

    在【标题】中提及的《sip协议中文版-信产部版本》表明这是中国信息产业部翻译和标准化的一个版本,对于中文读者来说,它具有很高的参考价值。由于它被特别标记为目前翻译得最好的中文版本,可以推断该文档对SIP协议...

    个人开发SIP UA时用到的一些资料

    SIP协议文档通常是英文的,但中文版的翻译可以帮助中文读者更清晰地理解协议规定,避免在开发过程中出现误解。 9. **事件处理和注册**: SIP UA需要处理各种事件,如注册到SIP服务器、处理呼叫转移、处理忙线或...

    SIP协议中文版RFC3261

    SIP协议中文版RFC3261是基于原始的英文版RFC3261翻译而来,旨在为中国开发者和用户提供更易于理解的指南。 #### 二、SIP消息结构 ##### 2.1 起始行 SIP消息的第一行被称为**起始行**,它分为两种类型:**请求行**...

    RFC3261_ch.rar_3261_rfc3261_rfc3261中文版_sip_sip协议

    这个中文版文档对原始的英文规范进行了详尽的翻译,便于中文使用者理解和应用SIP协议。文档采用doc格式,使得阅读和查阅更为便捷,对于学习和研究SIP的中国开发者和网络工程师来说,是一份非常有价值的参考资料。 *...

    sip协议标准

    中文版(rfc3261).pdf可能是对RFC3261标准的中文翻译,而rfc3261.txt.pdf可能是原始的英文版RFC文档,便于对照学习。 SIP协议的基本概念包括以下几个方面: 1. 用户代理(User Agent):分为用户代理客户端(UAC...

    RFC3263中文翻译

    综上所述,RFC3263中文翻译涉及了SIP中DNS的重要角色,包括服务端定位、通信协议选择、备份路径确定、DNS查找的效率以及系统的扩展性和高可用性设计。理解这些概念对于理解和实施SIP基础架构至关重要。

    SIP通讯协议RFC3261的中文翻译版

    RFC3261的中文版,终于可以不用再去看英文的了

    SIP协议.7z

    此外,压缩包中的其他SIP中文资料汇编,可能是对SIP协议的深入讲解,包括原理、应用实例、配置教程等内容,有助于全面理解和掌握SIP协议。 总结来说,"SIP协议.7z"这个压缩包提供了丰富的SIP学习资源,不仅有基本的...

    CM-IMS(SIP)技术规范_第1部分与第2部分SIP的总体要求.rar

    综上所述,"CM-IMS(SIP)技术规范_第1部分与第2部分SIP的总体要求"涵盖了SIP协议的基础知识、在IMS中的应用,以及中国移动对RFC3261的官方中文翻译,对于深入理解SIP协议和在中国移动的IMS环境中应用SIP具有重要价值...

Global site tag (gtag.js) - Google Analytics