3CX 服务器整合 MongoDB 数据库

介绍

3CX 提供与 MongoDB 数据库的集成。因为该数据库的结构和其他数据库不同,所以我们无法提供一个通用模板以供使用。我们也无法为您提供适用的 JSON 模板,因为我们也不知道每个用户的 JSON 该是怎么样的。所以我们将提供一个简单的模板,用户可以经过调整以达到他们的要求。

该示范模板对接 MongoDB 数据库可以实现以下功能:

  • 联系人同步 – 来自外部号码的呼叫会触发数据库中的联系人查找,并将联系人信息将添加到3CX联系人中。这样,当您接到电话时,来电者姓名会自动显示在您的电话显示屏中。
  • 呼叫弹出窗口 – 使用 3CX Web 客户端时,当您收到呼叫时,客户记录会自动显示给您。
  • 呼叫日志 – 将呼叫记录在数据库中。
  • 将收到的未知呼叫自动创建新联系人并存入数据库。

该模板在服务端完成,非常方便直接。

接下来我们将介绍如何一步步在 3CX 服务端完成与 MongoDB 的数据库集成。

准备模板

第一步 – 下载模板

可以在 3CX 管理控制台 – 设置 – CRM 集成 – 服务端标签 – Database MongoDB – 显示模板 中下载模板文件。

该模板的适用场景是使用一个 MongoDB 数据库,包含了两个集合。一个集合用来存联系人,一个集合用来存联系人的通话。数据库和集合的名称已经在模板中定义了。Contacts 对象具有以下结构:

联系人呼叫集合中的对象具有以下结构:

打开 MongoDB 的 XML 模板文件并记录下列信息:

  1. 参数:在 3CX 显示并允许在模板里配置的参数。
  2. 场景:这里我们定义 3CX 如何与 MongoDB 交互。此示例模板中有 3 个场景:
    1. 查找联系人
    2. 记录 Call Journaling
    3. 创建联系人

第二步 – 编辑模板 – 查找联系人

XML 模板的第一个场景就是从 MongoDB 检索特定联系人的详细信息。下面是样例:

要编辑这个样例,请遵循以下规则:

  1. 在 Command 元素中,需要编辑:
    • Command 属性:这是一个过滤表达式。在示例中,我们过滤了属性 Phone 或属性 Mobile 以调用者编号结束的对象。您需要创建一个过滤表达式,从 contacts 集合中返回正确的对象。
  2. Rules 元素标识每条记录,我们可以通过标准 _id 字段识别它们,因此不需要编辑它。
  3. 在 Variables 元素中,我们获取返回的每个对象的值。您需要编辑路径“Name.FirstName”,“Name.LastName”等。根据你从MongoDB返回的对象的结构。此外,如果您需要返回更多字段(其他电话,公司名称等),您可以根据需要添加变量。
  4. 最后,Outputs 元素包含场景返回的内容,即联系人查找结果。我们需要返回一个强制的 ContactUrl 字段,该字段用于在浏览器中打开联系人记录,还可以唯一地标识联系人记录和任何其他输出字段。当我们设置输出值时,我们可以使用在括号之间的上一步中创建的变量,例如[FirstName]。有效的输出字段是:
    1. ContaactUrl
    2. FirstName
    3. LastName
    4. CompanyName
    5. Email
    6. PhoneMobile
    7. PhoneMobile2
    8. PhoneHome
    9. PhoneHome2
    10. PhoneBusiness
    11. PhoneBusiness2
    12. PhoneOther
    13. FaxBusiness
    14. FaxHome
    15. Pager
    16. PhotoUrl

第三步 – 编辑模板 – Call Journaling

XML 模板中的第二个场景用于在 MongoDB 中创建调用记录,并具有特殊 ID“ReportCall”。呼叫结束时执行此方案。这是提供的示例场景:

要编辑此方案,请执行以下操作:

  1. 在 Command 元素中,您需要编辑:
    1. CommandData 子元素描述了3CX应如何创建要在 MongoDB 插入的 JSON 对象。在我们的示例中,要插入的对象只有 string 子属性,但您也可以创建子对象或数组。
  2. 此方案不会向3CX返回任何信息。

第四步 – 编辑模板 – 创建联系人

当无法找到呼叫者号码时,XML 模板中的第三个场景用于在 MongoDB 中创建联系人记录,并具有特殊ID“CreateContactRecord”。这是提供的示例场景:

要编辑此方案,请执行以下操作:

  1. 在 Command 元素中,您需要编辑:
    1. CommandData 子元素描述了 3CX 应如何创建要在 MongoDB 中插入的 JSON 对象。在我们的示例中,要插入的对象具有嵌套的子属性(名称和电话)。根据需要插入的对象的结构进行编辑。
  2. 以与联系人查找方案相同的方式,我们使用 Rules 元素来标识记录(这可以保持不变,因此我们获取刚刚插入的记录的 ID),Variables 元素用于从记录中获取信息,以及 Outputs 元素需要返回与联系人查找方案相同的信息。

第五步 更新 3CX 模板

根据 MongoDB 集合和对象结构完成模板编辑后,需要将其上传到3CX。去做这个:

  1. 登录 3CX 管理控制台 – 设置 – CRM 集成 – 服务端。
  2. 点击添加,将编辑后的 XML 文件上传上去。接着就可以配置了。

 

3CX 配置

通用设置

  1. 登录 3CX 管理控制台 – 设置 – CRM 集成 – 服务端集成。
  2. 在下拉列表中选择 MongoDB。

  1. 输入连接字符串。你可以从连接 MongoDB 的工具中获取。
  2. 定义数据库名字。
  3. 输入 Contacts Collection,它是包含联系人数据的集合的名称。
  4. 输入 Calls Collection,它是包含呼叫数据的集合的名称。

 

Call Journaling

  1. 如果想记录与外部的通话到 MongoDB 中,请勾选 Enable Call Journaling 选项,并配置下列选项:呼叫项目,不同的呼叫类型(已接听,未接,已接听的外线,未接听的外线)。
  2. 请注意,您可以在上面的字段中使用变量。变量在 [] 之间指定,例如外部数字指定为 [Number]。可用的变量是:
    • CallType – 呼叫类型,可以是”Inbound”, “Outbound”, “Missed” 或者 “Unanswered”。
    • Number – 外部联系号码(已拨打的外形号码或者呼入的主叫号码)。
    • Agent – 处理这个通话的坐席分机号码。
    • Duration – 通话持续时间。以 “hh:mm:ss” 形式显示。
    • DurationTimeSpan – TimeSpan 对象的通话持续时间,可以根据客户需求格式化。
    • DateTime – 使用3CX服务器中的本地格式在本地时区中进行呼叫的开始日期和时间。
    • CallStartTimeLocal – 以本地时间记录通话开始的日期和时间,是一个 DateTime 对象,可以根据用户格式化。
    • CallStartTimeUTC – 以 UTC 时间记录通话开始的日期和时间,是一个 DateTime 对象,可以根据用户格式化。
    • CallEndTimeLocal – 以本地时间记录通话结束的日期和时间,是一个 DateTime 对象,可以根据用户格式化。
    • CallEndTimeUTC – 以 UTC 时间记录通话结束的日期和时间,是一个 DateTime 对象,可以根据用户格式化。

 

创建联系人

  1. 如果要在找不到呼叫方号码时在 MongoDB 中创建新联系人,请选中“启用联系人创建”复选框,然后配置“新建联系人姓名”和“新联系人姓氏”字段。
  2. 请注意,您可以在上面的字段中使用变量。变量在[]之间指定,例如外部数字指定为[Number]。可用的变量是:
    • Number – 外部联系号码(拨出呼叫的号码或呼入呼叫的呼叫者号码)。