| Bayonne Sample |

Bayonne是用来编制电讯通信应用系统的自由软件 Bayonne的正式名称是所属于以Linux为内核而创建了GNU Bayonne工程的(GNU)团体
|
- ########################### Bayonne Sample的全面介绍 ###########################
- # '#' 从Line Comment开始
- Sample1: 电话的来信,向导的再生,接受1位键的输入
- 根据CTI的最基本的电话来信,向导的再生,1位键的输入的处理的分歧的样品
- 此样本的Call Flow呈以下形式
- 举起话筒
- 向导的再生
- 判断输入键,如果是1号键即为库存咨询;如果是9号键则是表示结束处理
- 用户在拨打输入键时,或中途挂断电话时都会发生动作。如果Call Script在接受到动作时会出现(xxx)及头部带有「~」等符号,然后继续定义活动名。此样本,对于用户在拨打「1」帓「9」的情况时,或是中途停止电话的动作都会进行处理。
- ---------------------------------------------------------------------------------
- #################################################################################
# 1.举起听筒
#
# ■ 处理概要
# 只需等候电话
#
# ■ 要点
# 在等待电话的情况下,自动进行此处理以及下一步处理的移动过程。在这里
# 只需记住在等候“# "answer.intercom"”的拨号
#################################################################################
# 'answer.intercom'在等候“指令”的接收状况,来电时自动切换到自动应答模板上。
# answer.intercom
#################################################################################
# 2.再生向导信息
#
# ■ 处理概要
# 在这里进行处理的是对打进来电话的用户进行向导处理的播放。对对方进行指点。
#
# 「欢迎光临库存询问」
# 「库存询问请按1号键」
# 「结束请按9号键」
#
# 以上的每个向导信息都是按照au文件形式播放的。
# 在播放了向导信息之后请等候10秒钟
#
# ■ 要点
- # 1.「au」文件是和Windows系中所说的(wav)文件同样。在Linux中au文件是最常见的。只要记住au = wav文件即可
# 2.只要记住au = wav文件即可
# set %text “信息”(用变量设定播放的信息)
# libexec 30 make_au.pl %text %sessionid (制作信息文件)
# play %aufile (播放向导)
# 3.在播放向导之后,等候输入键要求的命令
#################################################################################
# %text输入信息至变量中
set %text“欢迎进入库存询问系统中”
# libexec 指令是为了bayonne进行启动外部处理(Perl)的指令
# libexec [Timeout] [实行Perl] [作成为au文件的信息] [Session ID]
# 在这里的处理被%text变量设定成「欢迎光临库存询问系统」
# 信息以au文件的方式作成。文件名是以Session ID.au的方式作成
# make_au.pl是以取得的信息下放至au文件的Perl Script
ibexec 30 make_au.pl %text %sessionid
# play指令是宣读au文件的指令
# 在刚形成的au文件以语音合成的方式应答打电话的另一方
# 在这种场合下,刚形成的au文件内容为“欢迎光临库存询问系统”
# 因此打电话的另一方,将接收到语音向导的播放
play %aufile
# 在%text变数中代入信息
set %text “库存询问请按1号键”
# 作成上述信息的au文件
# au文件中的内容是被作成的“库存询问请按1号键”文件
libexec 30 make_au.pl %text %sessionid
# “库存询问请按1号键”的向导信息的播放
play %aufile
# 在%text变数中代入信息
set %text“结束请按9号键”
# 作成上述信息的au文件
# au文件中的内容是被作成的“结束请按9号键”文件
libexec 30 make_au.pl %text %sessionid
# “结束请按9号键”的向导信息的播放
play %aufile
# 在播放了向导信息之后请等候10秒钟
sleep 10
#########################################################################
# 3.判断被输入键,如果是1键的话就是库存询问,如果是9键的话就是进行结束的处理
#
# ■ 处理概要
# Key对被输入的按键实行处理
#
# . ponto
# ^1 “1”号键被输入
# ^9 “9”号键被输入
# ^hangup 中途电话被切断
# ^error 系统上发生了错误的处理
#
#########################################################################
##########################
#Key输入Handring
##########################
^1
#####因为“1”号键被输入,所以进入库存询问
redirect ::zaiko-toiawase
^9
#####因为“9”号键被输入,所以是结束处理
exit
##########################
# Event Handlink
##########################
^hangup
#####切断电话
slog.info "--hangup"
exit
^error
#####发生错误
slog.err "--error"
slog.err %script.error
exit
-------------------------------------------------------------------------
样本2∶接收4位拨号及向数据库的询问
处理样本1的(1)支持库存询问的场合下的库存询问处理
此样本的Call Flow呈以下形式
- 向导信息的再生
- 接收4位商品代码
- 进行数据库的询问
- 告知库存询问结果
-------------------------------------------------------------------------
#########################
#处理库存询问
#########################
::zaiko-toiawase
#####利用语音合成软件来完成向导信息的再生
set %text %ttsmode “请输入4位商品代码”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####消除键输入缓冲
cleardigits
#####在输入4位键时,*和#将会被拒绝接受
collect count=4 timeout=10 ignore="*#"
#####被输入的4位数字会被%session.digits接纳
set %syouhin_cd %session.digits
#####用输入的商品代码检索数据库
#####实际的检索是用Perl作成的商品检索基准要素来进行
libexec 30 syouhin_query.pl %syouhin_cd
#####判断数据库的咨询结果
case %retval -eq 0
#####
#商品存在
#####
#####读出商品名
set %text %ttsmode %syouhin_name
libexec 30 make_au.pl %text %sessionid
play %aufile
set %text %ttsmode “尚有存货” %zaiko_suu “个”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####返回Call Script
#####sample01用Script的文件名,文件的开始部分=处理部分的意思
goto ::sample01
case %retval -eq 1
#####
#商品不存在
#####
#####再生商品不存在的指示
set %text %ttsmode “是不存在的商品”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####再次输入商品的代码,返回这个函数的最前端
#####sample01用Script的文件名,文件的开始部分=处理部分的意思
goto ::sample01
otherwise
#####
#发生错误
#####
#####再生发生错误的指示
set %text %ttsmode “库存询问失败,结束样品”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####输出错误记录
slog.error "syouhin_query.pl error return [" %retval "]"
#####结束处理
exit
endcase
exit
##########################
#键输入Handring
##########################
#####键输入因为是在collect上而被接受的
#####所以在这里是不接受1位键的输入
##########################
#Event Handring
##########################
^timeout
#####是为了4位键输入的接受而没有被输入时的timeout
set %text %ttsmode “因为是timeout所以结束样品”
libexec 30 make_au.pl %text %sessionid
play %aufile
slog.error "--timeout"
exit
^hangup
#切断电话
slog.info "--hangup"
exit
^error
#发生错误
slog.err "--error"
slog.err %script.error
exit
-------------------------------------------------------------------------
样本3∶进行商品咨询的Per Script
是指用样本2的利用者输入的商品代码对数据库进行询问的Per Script
从call script的接受提取
$syouhin_cd = $TGI::QUERY{'syouhin_cd'};
向call script交付数据
用TGI::set("retval",$retval)来进行
-------------------------------------------------------------------------
use strict;
use lib '/usr/local/libexec/bayonne/'; # 1.2.x
use TGI;
use DBI;
&main;
sub main
{
my $db;
my $dns = 'DBI:Pg:dbname=CTI';
my $user = 'bayonne';
my $passwd = 'bayonne';
my $sqlString;
my @val;
my $retval;
my $syouhin_cd;
my $syouhin_name = " ";
my $zaiko_suu = " ";
my $i;
my $var
############################# 整体说明 ############################
# '#' 从Line comment开始
样本1∶电话的来信,向导的再生,接受1位键的输入
根据CTI的最基本的电话来信,向导的再生,1位键的输入的处理的分歧的样品
此样本的Call Flow呈以下形式
- 举起话筒
- 向导的再生
- 判断输入键,如果是1号键即为库存咨询;如果是9号键则是表示结束处理
用户在拨打输入键时,或中途挂断电话时都会发生动作。如果Call Script在接受到动作时会出现(xxx)及头部带有「~」等符号,然后继续定义活动名。此样本,对于用户在拨打「1」帓「9」的情况时,或是中途停止电话的动作都会进行处理。
-------------------------------------------------------------------------
#########################################################################
# 1.举起听筒
#
# . 处理概要
# 只需等候电话
#
# . ponto
# 在等待电话的情况下,自动进行此处理以及下一步处理的移动过程。在这里只需记住在等候“# "answer.intercom"”的拨号
#########################################################################
# 'answer.intercom'在等候“指令”的接收状况,来电时自动切换到自动应答模板上。
answer.intercom
#########################################################################
# 2.再生向导信息
#
# . 处理概要
# 在这里进行处理的是对打进来电话的用户进行向导处理的播放。
#
# 对对方进行指点。
# 「欢迎光临库存询问」
# 「库存询问请按1号键」
# 「结束请按9号键」
# 以上的每个向导信息都是按照au文件形式播放的。
# 在播放了向导信息之后请等候10秒钟
#
# . Ponto
# 1.「au」文件是和Windows系中所说的(wav)文件同样。在Linux中au文件是最常见的。只要记住au = wav文件即可
# 2.制作信息的程序
# set %text “信息”(用变量设定播放的信息)
# libexec 30 make_au.pl %text %sessionid (制作信息文件)
# play %aufile (播放向导)
# 3.在播放向导之后,等候输入键要求的命令
#########################################################################
# %text输入信息至变量中
set %text “欢迎进入库存询问系统中”
# libexec Command是为了bayonne进行启动外部处理(Perl)的指令
# libexec [Timeout] [实行Perl] [作成为au文件的信息] [Session ID]
# 在这里的处理被%text变量设定成「欢迎光临库存询问系统」
# 信息以au文件的方式作成。文件名是以Session ID.au的方式作成
# make_au.pl是以取得的信息下放至au文件的Perl Script
libexec 30 make_au.pl %text %sessionid
# play指令是宣读au文件的指令
# 在刚形成的au文件以语音合成的方式应答打电话的另一方
# 在这种场合下,刚形成的au文件内容为“欢迎光临库存询问系统”
# 因此打电话的另一方,将接收到语音向导的播放
play %aufile
# 在%text变数中代入信息
set %text “库存询问请按1号键”
# 作成上述信息的au文件
# au文件中的内容是被作成的“库存询问请按1号键”文件
libexec 30 make_au.pl %text %sessionid
# “库存询问请按1号键”的向导信息的播放
play %aufile
# 在%text变数中代入信息
set %text “结束请按9号键”
# 作成上述信息的au文件
# au文件中的内容是被作成的“结束请按9号键”文件
libexec 30 make_au.pl %text %sessionid
# “结束请按9号键”的向导信息的播放
play %aufile
# 在播放了向导信息之后请等候10秒钟
sleep 10
#########################################################################
# 3.判断被输入键,如果是1键的话就是库存询问,如果是9键的话就是进行结束的处理
#
# ■ 处理概要
# 键对被输入的按键实行处理
#
# . ponto
# ^1 “1”号键被输入
# ^9 “9”号键被输入
# ^hangup 中途电话被切断
# ^error 系统上发生了错误的处理
#
#########################################################################
##########################
#键输入Handring
##########################
^1
#####因为“1”号键被输入,所以进入库存询问
redirect ::zaiko-toiawase
^9
#####因为“9”号键被输入,所以是结束处理
exit
##########################
# Event Handlink
##########################
^hangup
#####切断电话
slog.info "--hangup"
exit
^error
#####错误发生
slog.err "--error"
slog.err %script.error
exit
-------------------------------------------------------------------------
样本2∶接收4位拨号及向数据库的询问
处理样本1的(1)支持库存询问的场合下的库存询问处理
此样本的Call Flow呈以下形式
- 向导信息的再生
- 接收4位商品代码
- 进行数据库的询问
- 告知库存询问结果
-------------------------------------------------------------------------
#########################
#处理库存询问
#########################
::zaiko-toiawase
#####利用语音合成软件来完成向导信息的再生
set %text %ttsmode “请输入4位商品代码”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####消除键输入缓冲
cleardigits
#####在输入4位键时,*和#将会被拒绝接受
collect count=4 timeout=10 ignore="*#"
#####被输入的4位数字会被%session.digits接纳
set %syouhin_cd %session.digits
#####用输入的商品代码检索数据库
#####实际的检索是用Perl作成的商品检索基准要素来进行
libexec 30 syouhin_query.pl %syouhin_cd
#####判断数据库的咨询结果
case %retval -eq 0
#####
#商品存在
#####
#####读出商品名
set %text %ttsmode %syouhin_name
libexec 30 make_au.pl %text %sessionid
play %aufile
set %text %ttsmode “尚有存货” %zaiko_suu “个”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####返回call script
#####sample01用Script的文件名,文件的开始部分=处理部分的意思
goto ::sample01
case %retval -eq 1
#####
#商品不存在
#####
#####再生商品不存在的指示
set %text %ttsmode “是不存在的商品”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####再次输入商品的代码,返回这个函数的最前端
#####sample01用Script的文件名,文件的开始部分=处理部分的意思
goto ::sample01
otherwise
#####
#错误发生
#####
#####再生错误发生的信息
set %text %ttsmode “库存询问失败,结束样品”
libexec 30 make_au.pl %text %sessionid
play %aufile
#####输出错误记录
slog.error "syouhin_query.pl error return [" %retval "]"
#####结束处理
exit
endcase
exit
##########################
#键输入Handring
##########################
#####键输入因为是在collect上而被接受的
#####所以在这里是不接受1位键的输入
##########################
#Event Handring
##########################
^timeout
#####是为了4位键输入的接受而没有被输入时的timeout
set %text %ttsmode “因为是timeout所以结束样品”
libexec 30 make_au.pl %text %sessionid
play %aufile
slog.error "--timeout"
exit
^hangup
#切断电话
slog.info "--hangup"
exit
^error
#错误发生
slog.err "--error"
slog.err %script.error
exit
-------------------------------------------------------------------------
样本3∶进行商品咨询的Per Script
是指用样本2的利用者输入的商品代码对数据库进行询问的Per Script
从call script的接受提取
$syouhin_cd = $TGI::QUERY{'syouhin_cd'};
向call script交付数据
用TGI::set("retval",$retval)来进行
-------------------------------------------------------------------------
use strict;
use lib '/usr/local/libexec/bayonne/'; # 1.2.x
use TGI;
use DBI;
&main;
sub main
{
my $db;
my $dns = 'DBI:Pg:dbname=CTI';
my $user = 'bayonne';
my $passwd = 'bayonne';
my $sqlString;
my @val;
my $retval;
my $syouhin_cd;
my $syouhin_name = " ";
my $zaiko_suu = " ";
my $i;
my $var;
#来自call script的输入引数
$syouhin_cd = $TGI::QUERY{'syouhin_cd'};
$db = DBI->connect($dns, $user, $passwd, {RaiseError => 1, AutoCommit => 0});
$sqlString = qq(
SELECT T1.商品代码,T1.商品名,T1.商品日文(片假名)
,CASE WHEN T2.当月库存数 IS NULL THEN 0 ELSE T2.当月库存数 END
FROM 商品 T1 LEFT JOIN
库存Master T2 ON (T1.商品代码 = T2.商品代码 AND T2.年月 = TO_CHAR(CURRENT_DATE,'YYYYMM'))
WHERE T1.商品代码=?);
my $sth = $db->prepare($sqlString);
$sth->execute($syouhin_cd);
if($sth->rows() == 0) {
$retval = 1;
print "NO DATA FOUND\n";
} elsif ($sth->rows() > 1) {
$retval = 2;
print "TOO MANY ROWS\n";
} else {
$retval = 0;
@val = $sth->fetchrow_array;
$syouhin_name = $val[1];
$zaiko_suu = $val[3];}
$sth->finish;
$db->disconnect;
#向call script返回检索结果、商品名、在库数的情况
TGI::set("retval",$retval);
TGI::set("syouhin_name",$syouhin_name);
TGI::set("zaiko_suu",$zaiko_suu);}
---------------------------------------------------------------------;----
#来自call script的输入引数
$syouhin_cd = $TGI::QUERY{'syouhin_cd'};
$db = DBI->connect($dns, $user, $passwd, {RaiseError => 1, AutoCommit => 0});
$sqlString = qq(
SELECT T1.商品代码,T1.商品名,T1.商品日文(片假名)
CASE WHEN T2.当月库存数 IS NULL THEN 0 ELSE T2.当月库存数 END
FROM 商品 T1 LEFT JOIN
库存Master T2 ON (T1.商品代码 = T2.商品代码 AND T2.年月 = TO_CHAR(CURRENT_DATE,'YYYYMM'))
WHERE T1.商品代码=?);
my $sth = $db->prepare($sqlString);
$sth->execute($syouhin_cd);
if($sth->rows() == 0) {
$retval = 1;
print "NO DATA FOUND\n";
} elsif ($sth->rows() > 1) {
$retval = 2;
print "TOO MANY ROWS\n";
} else {
$retval = 0;
@val = $sth->fetchrow_array;
$syouhin_name = $val[1];
$zaiko_suu = $val[3];}
$sth->finish;
$db->disconnect;
#向call script返回检索结果、商品名、在库数的情况
TGI::set("retval",$retval);
TGI::set("syouhin_name",$syouhin_name);
TGI::set("zaiko_suu",$zaiko_suu);}
有关这个样本的询问,请链接这里 |
| TOP |
|
| Home | CTI | Bayonne | Dialogic | Download | What's New | Profile | Address |
Voice Communication 株式会社
211-0004 日本国神奈川县川崎市中原区新丸子东2-907
TEL: +81-044-455-0038 FAX: +81-044-455-0029
联系我们 voicecn@voice-com.net |
最新更新日:
|
|
| (c) Copyright 2003 VCN, Inc. All right reserved |
|
 |
《Linux新活用方法的发现》
此报告有以下内容提要、此报告免费奉送。资料请求
■开始
■为什么是Linux+Bayonne
■关于本公司所提供CTI
构筑服务
■能够实现成本销减吗?
■有什么好的办法吗?
■苦劳
■本公司所提供的
■课题
■联系我们 |
HOME傊 |