如何使用 RingCentral 设置带有区号匹配的来电显示?

How to set Caller ID with area code matching using RingCentral?

使用RingCentral拨打电话时,是否可以进行Local Presence或设置Call​​er ID (CLID)?我有一组 1000+ phone 个号码,其中包含我公司的各种区号,我希望在拨出时能够将其用于来电显示。我还有许多不同的座席在打电话,所以我需要多个座席才能同时使用同一个来电显示。

我正在使用 RingCentral WebRTC JavaScript SDK,但没有看到来电显示选项。我看到为 RingOut 设置来电显示的选项,但没有本地状态选项。

在询问和尝试之后,我想出了以下可以通过 WebRTC 或 RingOut 完成的方法。

(1) 分配来电显示 (CLID) Phone 号码

要将多个 CLID phone 号码加载到 RingCentral 帐户中,请将它们添加为公司号码,这可以在 Online Account Portal 下为管理员帐户完成:

Home > Phone System > Company Numbers and Info > Add Number

我把这些都分配给了Auto-Receptionist

这些号码作为公司号码加载后,用户应该可以使用它们作为 CLID。要验证这一点,请在用户授权应用后调用以下 REST API 端点来检索用户可用的 CLID 编号列表:

/restapi/v1.0/account/~/extension/~/phone-number

可用于来电显示的返回号码将 CallerId 作为 features 属性.

中的元素之一

(2) 根据目标号码选择合适的CLID

在您的应用程序中,获得要拨打的号码后,找到最接近的匹配区号。最好是与您的区号完全匹配。之后,找到地理位置上最近的那个。

要确定要使用的最佳号码,可以使用区号到 lat/lon 的最近邻匹配映射。我无法找到 lat/lon 映射的直接代码,但可以执行以下操作之一:

  1. areacode 到 lat/lon:您可以使用直接 areacode 到 lat/lon 数据库,例如这里的那个:https://github.com/grokify/gotilla/blob/master/strconv/phonenumber/us-area-code-geo.csv
  2. 区号到 lat/lon 的邮政编码:您可以使用区号和 lat/lon 数据的邮政编码数据集,如 Benjamin Dean 所述。邮政编码很有用,因为更密集的地区有更多的邮政编码,确保人口稠密的地区代表更多。
  3. areacode to LOCODE with lat/lon: UN LOCODES也有lat/lon信息,可以使用。理想情况下,每个 LOCODE 都将映射到人口以进行加权。

为了快速解决问题,我获取了区号并将每个区号映射到此处的 UN LOCODE 数据集:

一旦 UN LOCODE 可用,就可以使用 LOCODE 数据集中的 lat/lon 并计算距离。值得注意的是,一些城市没有 lat/lon 数据,最好将其提交给 UN LOCODE 项目。现在每个区号只有一个主要城市,但可以增强为拥有多个城市。在理想情况下,美国和加拿大所有具有联合国地址的城市都将映射到区号(和邮政编码)。

(3) 使用CLID进行呼叫

使用 RingCentral,可以将您的来电显示设置为授权号码,包括用户自己的号码和公司号码。这可以通过下面描述的 WebRTC 和 RingOut 来完成。

(3.1) WebRTC调用CLID

用户应该使用自己的分机登录,这样用户调用就不会相互冲突。然后应用程序可以使用 fromNumber 参数使用 RingCentral WebRTC SDK 设置首选 CLID,如下所示:

var session = webPhone.userAgent.invite('PHONE_NUMBER', {
    media: {
        render: {
            remote: document.getElementById('remoteVideo'),
            local: document.getElementById('localVideo')
        }
    },
    fromNumber: 'CALLERID_NUMBER', // Optional, Company Number will be used as default
    homeCountryId: '1' // Optional, the value of
 }).then(...);

(3.2) CLID通过RingOut进行呼叫

为了完整起见,还可以使用以下方法通过 RingOut 设置来电显示:

POST /restapi/v1.0/account/~/extension/~/ring-out

{
    "from": {"phoneNumber": "+12125550101"},
    "to": {"phoneNumber": "+16175550101"},
    "callerId": {"phoneNumber": "+16505550101"},
    "playPrompt": true
}

https://developer.ringcentral.com/api-reference#RingOut-makeRingOutCall

我会先阅读这篇知识库文章,其中解释了如何使用 RingCentral 在线帐户门户 (http://success.ringcentral.com/articles/RC_Knowledge_Article/Outbound-Caller-ID-Overview) 进行设置:

  • 公司来电显示(显示的姓名)
  • 按功能显示的默认来电显示号码

与 RingOut 一起使用的 RingCentral 来电显示验证规则应适用于 WebRTC,并定义您在 application/integration.

中设置 CLID 的限制

RingCentral 来电显示验证规则(至少其中一项必须适用):

  • callerId值与当前认证用户的分机号码相同

  • 获取与邮箱关联的所有 phone 个号码。 Phone 为默认值,callerId 与此号码相同

  • 获取用户所有转发phone号码的列表,callerId与本地或免费号码之一相同

  • 使用 API 获取所有分机 Phone 号码的列表,并且任何指示为可用于来电显示的号码在分配时均有效作为 "fromNumber".

最后一个 API 选项就是上面的 @grokify 示例。

GET Extension Phone RingCentral 中的号码 API Explorer: https://developers.ringcentral.com/api-explorer/latest/index.html#/!/Extension/listExtensionPhoneNumbers