使用asterisk建立呼叫中心(一) 建立一个预拨号系统
本帖最后由 playsolo 于 2013-10-23 11:52 编辑
预拨号器, 系统自动拨出电话并且将应答的电话转给坐席处理;预拨号器的使用将大大提高你的销售/对外联络中心的工作效率。
这里我们使用asterisk和asterCRM来建立一个预拨号器。
astercrm可以从astercc网站上下载 http://cn.astercc.org
1. 首先我们需要安装asterisk, 对于初学者来说可以使用trixbox http://www.trixbox.com.
2. 安装astercrm, astercrm可以安装再与asterisk同一设备上或是安装在不同的系统中, 目前(2008年2约)astercrm的最高版本是 0.0461, 中文安装文档可以阅读 http://astercrm.org/astercrm_documents/installation.
3. 安装结束后使用缺省的管理员帐号 admin/admin 登陆, 选择简体中文, 进入"Manager" -> "preference", 首先我们需要设置asterisk系统拨出时使用的context.
当一组呼叫开始时, 预拨号器首先会将号码送到上面我们设定的外拨context中由它发起呼叫, 所以这个context 应该是你的外拨context (也许和你分机使用的context相同)
例如:
[from-sipuser]
exten => _X.,1,Dial(SIP/TRUNK1/${EXTEN})
对于使用 trixbox 的用户, 你可以尝试使用系统默认的context "from-internal" (使用这个context在具体使用中可能会遇到一些问题这里就不深入讨论了, 有问题的朋友可以参考帖子 http://forums.astercc.org/viewtopic.php?f=8&t=23 )
4. 由于astercrm支持多个不同的组同时工作, 所以我们要添加一个组. 进入 "管理" -> "账户管理" -> "分组管理", 点击 "添加" 按钮来增加一个新的组.
这里我们需要注意两个参数: pdcontext 和 pdextensions, 这两个参数用于设置当呼叫应答后asterisk如何处理这个呼叫, 我们可以选择将这个呼叫转给一个队列由队列中的座席应答或是将用户转到一个实现定义的IVR等, 这个取决于实际的需要
例如:
[from-trunk-customer]
exten => queue1, 1, Answer()
exten => queue1, n, Queue(tech-queue)
这个设置会将呼叫转给队列 tech-queue 进行处理
如果你没有设定 pdextensions , 那么当呼叫连接后系统会将这个呼叫的被叫号码送到 pdcontext 进行处理, 这种情况下你使用的context可能会是
[from-trunk-customer]
exten => _.,1,NoOp(${EXTEN})
exten => _.,n,Queue(tech-queue)
5. 添加一个 "战役", 点击管理界面右上方的 "Campaign" 链接然后添加一个新的战役, 这里你需要输入战役名称, 备注以及该战役所属的组.
6. 当然我们还需要准备电话列表, 我们可以使用 "导入" 功能从excel或是csv文件中把我们要拨的号码导入到astercrm中. 进入 "导入", 选择本地的excel/csv文件, 然后点击 "上传".
文件示例
astercrm.csv:
Astercrm,16B Berry Hill Rd,Oyster Bay,NY,116023,,R,,,Addonizio,R,,,,,US
Solo R,16B Berry Hill Rd,Oyster Bay,NY,050051,,R,,,Addonizio,R,,,,,US
之后, 你要选择希望将这些号码导入到哪个组以及该组的哪个战役.
"导入" 功能可以将我们希望导入的字段导入到拨号列表中, 选中底部 "添加" 前的复选框, 下拉框中的 0 表示文件的第0列. 在下拉框中选则好电话号码所在的列之后, 点击 "导入" 开始导入数据, 当工作完成后, 系统会提示 "拨号列表: XXX 记录导入成功", 然后我们可以到 右上方的"Dial list" 查看是否我们的数据是否成功地导入
当然我们也可以在这个页面手动添加一些号码
7. 现在一切都准备好了, 我们可以到 "预拨号" 来开始了!
在预拨号的界面里我们可以选择我们是希望拨打所有的号码或仅仅是某一组 某一战役的号码. 然后我们就可以点击 "Dial" 开始拨号了, 输入框中的号码表示最多允许多少个并发呼叫, 一旦系统内的并发呼叫数目达到这个值系统就会停止发起新的呼叫, 而当小于该值时系统又会继续发起呼叫, 在拨号的过程中你可以随时根据需要调整这个数值.
8. 如何使用 "回收" 功能?
在 astercrm 0.0461版本中, 我们提供了一个新的页面: dialedlist, 这里可以保存拨号结果. 我们可以点击这个页面里的 "Recycle" 按钮来将未应答的号码回收到拨号列表中.
要想让这个功能正常工作我们需要对dialplan做一些改动, 下面是一个示例:
; this context is for pdcontext
[outbound-survey]
exten => _XX.,1,Answer()
exten => _XX.,n,Set(number=${EXTEN})
exten => _XX.,n,Set(start=${EPOCH})
exten => _XX.,n,Macro(updateAnswertime,${number}) ;add answertime to dialedlist table
exten => _XX.,n,Goto(get-option,s,1)
[get-option]
exten => s,1,NoCDR
exten => s,n,Answer()
exten => s,n,AMD
exten => s,n,NoOp(${AMDSTATUS})
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => s,n(mach),WaitForSilence(1500)
exten => s,n,Background(survey/intro)
exten => s,n,Macro(updateResponse,3) ;set response to 3, means it might be a answering machine
exten => s,n,Hangup
exten => s,n,Wait(3)
exten => s,n(humn),Background(survey/intro)
exten => s,n,WaitExten(15)
exten => 1,1,Macro(updateResponse,1) ;user press 1, set response to 1
exten => 1,n,Voicemail(9999@default)
exten => 1,n,Hangup
exten => 2,1,Macro(updateResponse,2) ;user press 2, set response to 2
exten => 2,n,Hangup
exten => h,1,Macro(updateDuration)
exten => h,n,Hangup
exten => t,1,Playback(survey/intro) ;time out, so it might be an answering machine, we play the message again and then set response to 3
exten => t,n,Macro(updateResponse,3)
exten => t,n,Hangup
[macro-updateAnswertime]
exten => s,1,System(/usr/bin/mysql -uastercrmuser -pastercrmpassword -e "UPDATE dialedlist SET answertime= now(), uniqueid = ''${UNIQUEID}'' WHERE dialnumber = ''${ARG1}'' AND dialedtime > (now()-INTERVAL 60 SECOND)" asterisk)
[macro-updateResponse]
exten => s,1,System(/usr/bin/mysql -uastercrmuser -pastercrmpassword -e "UPDATE dialedlist SET response= '${ARG1}' WHERE uniqueid = ''${UNIQUEID}''" asterisk)
[macro-updateDuration]
exten => s,1,Set(duration=${MATH(${EPOCH}-${start})})
exten => s,n,Set(length=$[${LEN(${duration})} - 7])
exten => s,n,System(/usr/bin/mysql -uastercrmuser -pastercrmpassword -e "UPDATE dialedlist SET duration= '$[${EPOCH}-${start}]' WHERE uniqueid = ''${UNIQUEID}''" asterisk)
图文版: http://blog.csdn.net/playsolo/archive/2008/02/28/2130778.aspx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论