全部产品
云市场
云游戏

使用实例

更新时间:2019-09-25 14:43:44

目前云呼叫中心与阿里云函数计算做了集成,如下图所示,用户可以通过函数计算完成云呼叫中心IVR对第三方服务或者自有业务系统的调用。本文将通过一个IVR调用第三方接口查询号码归属地的案例来说明具体的操作配置流程。

背景

  1. 我有一个呼叫中心,按地区划分了不同的技能组,如北京客服组,河北客服组,上海客服组等,能不能根据来电号码归属地,将通话分配给对应的客服组呢?

下面我们基于上述背景,通过函数计算实现相应的IVR流程

创建函数

1. 函数计算开通授权

首先,需要开通函数计算服务,阿里云主账号登录到函数计算控制台,首次登录时,会提示您开通函数计算,点击立即开通函数计算价格说明

注: 上述操作也可以通过子账号完成,前提需要您授权您的子账号管理函数计算(FC)服务的权限 AliyunFCFullAccess,或者参考子账号控制台快速指导完成授权.

2. 新建函数

在新建函数之前,需要先了解下函数计算相关的概念服务地址基本概念

这里简要说明下:

  1. - 服务地址是函数计算服务所在的区域;
  2. - 服务(Service)是管理函数计算的基本资源单位,每个服务地址下可以有多个Service
  3. - 函数(Function)是调度和运行的基本单位,是执行特定功能的一段应用代,,每个Service可以有多个Function

下面我们开始创建函数。

  • 选择一个Region,新建一个Service。这里我们选择了华东 1(杭州),新建了一个名为demo-service的服务。

  • 在demo-service,创建一个新的函数Function,这里我们选择了一个空白函数模板,创建了一个名为get_number_region的python2.7函数

  • 实现函数逻辑,这里有关函数入口含义可以参考下函数入口定义, 函数实现如下

  1. # -*- coding: utf-8 -*-
  2. import logging
  3. import json
  4. import urllib2
  5. def handler(event, context):
  6. try:
  7. phone = json.loads(event)['phone']
  8. url = "https://cx.shouji.360.cn/phonearea.php?number={number}".format(number=phone)
  9. request = urllib2.Request(url)
  10. result = urllib2.urlopen(url).read()
  11. value = json.loads(result)
  12. return '{province}{city}'.format(province=value['data']['province'], city=value['data']['city'])
  13. except Exception as e:
  14. logging.error(" Unexpected Error: {}".format(e))
3. 测试函数

函数编辑完成后,我们可以通过函数计算控制台进行一下测试。

点击 执行, 执行结果为null,由于我们的函数中第一步 phone = json.loads(event)['phone'] 需要从入参中获取phone字段,这里没有给入参赋值,所以结果为null;为了验证我们点击 执行 右边的 触发事件, 填写参数,点击保存。

点击执行,结果返回了号码的归属地信息

这样我们就在函数计算控制台完成了函数的创建。

呼叫中心添加函数信息

主账号访问云呼叫中心管理控制台(也可以授权子账号管理呼叫中心的权限AliyunCCCFullAccess)。点击实例列表中相应实例右侧的IVR集成设置

首次操作会提示您授权,按照页面提示操作进行授权即可。

1. 添加函数信息

添加函数信息,这里我们添加了Region为华东1,Service为demo_service, Function为get_number_region的函数信息,也就是我们刚刚在函数计算控制台创建的函数相关信息。

2. 验证函数连通性

之前在函数计算控制台我们已经验证了函数可以执行,这里添加函数信息成功后,我们看到函数信息右侧有一个测试的按钮,通过测试可以验证所填的函数信息是否正确,以及云呼叫中心是否可以正常调用您的函数。下面我们点击测试、填写相应参数验证一下。

我们看上图发现报错了,提示函数计算Service不存在,service ‘demo_service’ does not exist,提示我们demo_service不存在,我们回到函数计算工作台检查下,发现我们之前创建的service叫demo-service,不是demo_service,我们编辑下刚刚在IVR集成设置页面添加的IVR信息,将其改为demo-service,再次点击测试,填写参数进行验证。这次我们看到,函数调用正常,返回相应的结果了,说明云呼叫中心可以正常的调用您的函数计算中相应的函数了。

创建带有函数模块IVR

如图所示,我们创建一个IVR,客户拨打电话进来,首先通过 放音模块 播放欢迎语,然后进入 函数模块,函数模块配置如下:

  • 函数模块 中我们首先选择函数,通过下拉列表选择刚刚添加的函数信息;
  • 设置入参,这里的参数名字要和之前的编写的函数中所解析的参数名字一致,由于之前我们函数中解析的参数名为phone,这里我们入参名称仍设为phone,参数值这里我们设置为${ANI},表示获取的是主叫号码。( ANI是一个系统参数有关系统参数,可以在开始模块中系统参数一栏查看)。
  • 设置出参,这里我们设置出参名字为region,用于存储函数的返回值,如先前看到的返回值”北京北京”。
  • 函数模块出口,当函数调用成功后,将进入下一模块,在该示例IVR中是 条件判断模块; 由于我们在号码归属地查询函数中依赖了第三方接口,我们不能保证该接口是够长期可靠,所以我们在函数调用失败出口处接了一个转人工模块,这样的好处是当函数调用失败后,会进入转人工模块,而不会直接挂断通话,具体的处理可以根据您的流程实际情况来设定。

函数模块多参数

  • 函数多参数功能,在函数节点中开启多参数开关,可以支持函数返回Json格式的对象,例如:函数返回值为 {title: ‘多参数测试’, age: 10, name: ‘张三’} ,则多参数功能可以按照上图配置,参数项对应的就是自定义参数,赋值项对应的就是函数返回的对象中的key值。(注意:参数项定义的参数不能重复且不能与设置出参的参数重复)

函数模块执行成功后,流程进入条件判断模块,在条件判断模块中,我们根据函数模块的出参来设置我们的判断条件,这里作为示例,我们只提供了两个条件作为参考。

根据条件判断模块的执行结果,最终通话分配到了指定的技能组。