使用示例
目前云呼叫中心與阿里云函數(shù)計(jì)算做了集成,如下圖所示,用戶可以通過函數(shù)計(jì)算完成云呼叫中心IVR對(duì)第三方服務(wù)或者自有業(yè)務(wù)系統(tǒng)的調(diào)用。本文將通過一個(gè)IVR調(diào)用第三方接口查詢號(hào)碼歸屬地的案例來說明具體的操作配置流程。
背景
我有一個(gè)呼叫中心,按地區(qū)劃分了不同的技能組,如北京客服組,河北客服組,上海客服組等,能不能根據(jù)來電號(hào)碼歸屬地,將通話分配給對(duì)應(yīng)的客服組呢?
下面我們基于上述背景,通過函數(shù)計(jì)算實(shí)現(xiàn)相應(yīng)的IVR流程
創(chuàng)建函數(shù)
1. 函數(shù)計(jì)算開通授權(quán)
首先,需要開通函數(shù)計(jì)算服務(wù),阿里云主賬號(hào)登錄到函數(shù)計(jì)算控制臺(tái),首次登錄時(shí),會(huì)提示您開通函數(shù)計(jì)算,點(diǎn)擊立即開通。函數(shù)計(jì)算價(jià)格說明;
注
:上述操作也可以通過子賬號(hào)完成,前提需要您授權(quán)您的子賬號(hào)管理函數(shù)計(jì)算(FC)服務(wù)的權(quán)限 AliyunFCFullAccess
,或者參考通過RAM角色實(shí)現(xiàn)跨云賬號(hào)授權(quán)完成授權(quán).
2. 新建函數(shù)
在新建函數(shù)之前,需要先了解下函數(shù)計(jì)算相關(guān)的概念服務(wù)地址和什么是函數(shù)計(jì)算。
這里簡(jiǎn)要說明下:
-服務(wù)地址是函數(shù)計(jì)算服務(wù)所在的區(qū)域;
-服務(wù)(Service)是管理函數(shù)計(jì)算的基本資源單位,每個(gè)服務(wù)地址下可以有多個(gè)Service;
-函數(shù)(Function)是調(diào)度和運(yùn)行的基本單位,是執(zhí)行特定功能的一段應(yīng)用代,,每個(gè)Service可以有多個(gè)Function;
下面我們開始創(chuàng)建函數(shù)。
選擇一個(gè)Region,新建一個(gè)Service。這里我們選擇了華東1(杭州),新建了一個(gè)名為demo-service的服務(wù)。
在demo-service,創(chuàng)建一個(gè)新的函數(shù)Function,這里我們選擇了一個(gè)空白函數(shù)模板,創(chuàng)建了一個(gè)名為get_number_region的python2.7函數(shù)
實(shí)現(xiàn)函數(shù)邏輯,這里有關(guān)函數(shù)入口含義可以參考下函數(shù)入口定義, 函數(shù)實(shí)現(xiàn)如下
# -*- coding: utf-8 -*-
import logging
import json
import urllib2
def handler(event, context):
try:
phone = json.loads(event)['phone']
url ="https://cx.shouji.360.cn/phonearea.php?number={number}".format(number=phone)
request = urllib2.Request(url)
result = urllib2.urlopen(url).read()
value = json.loads(result)
return'{province}{city}'.format(province=value['data']['province'], city=value['data']['city'])
exceptExceptionas as e:
logging.error(" Unexpected Error: {}".format(e))
3. 測(cè)試函數(shù)
函數(shù)編輯完成后,我們可以通過函數(shù)計(jì)算控制臺(tái)進(jìn)行一下測(cè)試。
點(diǎn)擊 執(zhí)行, 執(zhí)行結(jié)果為null,由于我們的函數(shù)中第一步 phone = json.loads(event)['phone']
需要從入?yún)⒅蝎@取phone字段,這里沒有給入?yún)①x值,所以結(jié)果為null;為了驗(yàn)證我們點(diǎn)擊 執(zhí)行 右邊的 觸發(fā)事件, 填寫參數(shù),點(diǎn)擊保存。
點(diǎn)擊執(zhí)行,結(jié)果返回了號(hào)碼的歸屬地信息
這樣我們就在函數(shù)計(jì)算控制臺(tái)完成了函數(shù)的創(chuàng)建。
呼叫中心添加函數(shù)信息
主賬號(hào)訪問云呼叫中心管理控制臺(tái)(也可以授權(quán)子賬號(hào)管理呼叫中心的權(quán)限AliyunCCCFullAccess)。
選擇進(jìn)入需要訪問的實(shí)例連接,在設(shè)置中的IVR集成中進(jìn)行添加。
2. 點(diǎn)擊添加函數(shù)信息
這里我們添加了Region為華東1,Service為demo_service, Function為get_number_region的函數(shù)信息,也就是我們剛剛在函數(shù)計(jì)算控制臺(tái)創(chuàng)建的函數(shù)相關(guān)信息。
3. 驗(yàn)證函數(shù)連通性
之前在函數(shù)計(jì)算控制臺(tái)我們已經(jīng)驗(yàn)證了函數(shù)可以執(zhí)行,這里添加函數(shù)信息成功后,我們看到函數(shù)信息右側(cè)有一個(gè)測(cè)試的按鈕,通過測(cè)試可以驗(yàn)證所填的函數(shù)信息是否正確,以及云呼叫中心是否可以正常調(diào)用您的函數(shù)。下面我們點(diǎn)擊測(cè)試、填寫相應(yīng)參數(shù)驗(yàn)證一下。
當(dāng)提示函數(shù)調(diào)用正常時(shí),即會(huì)返回相應(yīng)的結(jié)果,說明云聯(lián)絡(luò)中心可以正常的調(diào)用您的函數(shù)計(jì)算中相應(yīng)的函數(shù)了。
創(chuàng)建帶有函數(shù)模塊IVR
如圖所示,我們創(chuàng)建一個(gè)IVR,客戶撥打電話進(jìn)來,首先通過 放音模塊 播放歡迎語,然后進(jìn)入 函數(shù)模塊,函數(shù)模塊配置如下:
在函數(shù)模塊 中我們首先選擇函數(shù),通過下拉列表選擇剛剛添加的函數(shù)信息;
設(shè)置入?yún)ⅲ@里的參數(shù)名字要和之前的編寫的函數(shù)中所解析的參數(shù)名字一致,由于之前我們函數(shù)中解析的參數(shù)名為phone,這里我們?nèi)雲(yún)⒚Q仍設(shè)為phone,參數(shù)值這里我們?cè)O(shè)置為${開始.caller},表示獲取的是主叫號(hào)碼。( caller是一個(gè)系統(tǒng)參數(shù)有關(guān)系統(tǒng)參數(shù),可以在開始模塊中系統(tǒng)參數(shù)一欄查看)。
函數(shù)模塊出口,當(dāng)函數(shù)調(diào)用成功后,將進(jìn)入下一模塊,在該示例IVR中是 條件判斷模塊;根據(jù)${函數(shù).responseBody}作為參數(shù)值進(jìn)行判斷。如:可以根據(jù)將函數(shù)模塊返回的值于幾個(gè)歸屬地做分支,然后在進(jìn)行不同的操作處理,具體的處理可以根據(jù)您的流程實(shí)際情況來設(shè)定。
由于我們?cè)谔?hào)碼歸屬地查詢函數(shù)中依賴了第三方接口,我們無法完全保證該接口的可用性,保險(xiǎn)起見,我們?cè)诤瘮?shù)調(diào)用失敗出口處接了一個(gè)轉(zhuǎn)人工模塊,這樣的好處是當(dāng)函數(shù)調(diào)用失敗后,會(huì)進(jìn)入轉(zhuǎn)人工模塊,而不會(huì)直接掛斷通話,具體的處理可以根據(jù)您的流程實(shí)際情況來設(shè)定。
函數(shù)出參多參數(shù)功能,在函數(shù)節(jié)點(diǎn)中開啟多參數(shù)開關(guān),可以支持函數(shù)返回JSON格式的對(duì)象,例如:函數(shù)返回值為 {title: ‘多參數(shù)測(cè)試’, age: 10, name: ‘張三’} ,則多參數(shù)功能可以按照上圖配置,參數(shù)項(xiàng)對(duì)應(yīng)的就是自定義參數(shù),賦值項(xiàng)對(duì)應(yīng)的就是函數(shù)返回的對(duì)象中的key值。(注意:參數(shù)項(xiàng)定義的參數(shù)不能重復(fù)且不能與設(shè)置出參的參數(shù)重復(fù),流程參數(shù)只能輸入大小寫英文字母和下劃線)。
函數(shù)模塊執(zhí)行成功后,流程進(jìn)入分支模塊,在分支模塊中,我們根據(jù)函數(shù)模塊的出參來設(shè)置我們的判斷條件,這里作為示例,我們只提供了兩個(gè)條件作為參考。
根據(jù)分支模塊的執(zhí)行結(jié)果,最終通話分配到了指定的技能組。