电讯通信应用系统软件能够简单编制而成,这是真的吗?是的,是真的。
如果使用GUN Bayonne的话,自动自动应答系统、CTI系统等电讯通信应用系统软件就能够简单编制而成。
日本语网站 中国语网站

用开放源码创建CTI的秘诀 一举公开

Voice Communication
>> 主页 | 产品和服务 | 下载 | 最新信息 | 关于我们 | 公司地址 最新更新日:
 Bayonne Sample

GNU Bayonne

Bayonne是用来编制电讯通信应用系统的自由软件
Bayonne的正式名称是所属于以Linux为内核而创建了GNU Bayonne工程的(GNU)团体


########################### Bayonne Sample的全面介绍 ###########################
# '#' 从Line Comment开始
Sample1: 电话的来信,向导的再生,接受1位键的输入
根据CTI的最基本的电话来信,向导的再生,1位键的输入的处理的分歧的样品
此样本的Call Flow呈以下形式
  1. 举起话筒
  2. 向导的再生
  3. 判断输入键,如果是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呈以下形式
  1. 向导信息的再生
  2. 接收4位商品代码
  3. 进行数据库的询问
  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. 举起话筒
  2. 向导的再生
  3. 判断输入键,如果是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呈以下形式
  1. 向导信息的再生
  2. 接收4位商品代码
  3. 进行数据库的询问
  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
!! 特集 !!
CTI开发奋斗记Part2
Dialogic vs Voicetronix
用CTI能够做些什么?
所谓的Bayonne是什么?
Dialogic紧急联络
开发CTI的技巧一举公开
快速领悟语音识别板
CTI开发奋斗记
资料请求
技术咨询

产品介绍
Outbound System
Open PBX+
通话录音装置
语音板卡
CTI 产品
自动呼叫系统
产品价格

信息
语音文件格式化
Bayonne Sample
下载
特约店程序
关于我们

Linux新活用方法的发现
《Linux新活用方法的发现》

此报告有以下内容提要、此报告免费奉送。资料请求

■开始
■为什么是Linux+Bayonne
■关于本公司所提供CTI
 构筑服务
■能够实现成本销减吗?
■有什么好的办法吗?
■苦劳
■本公司所提供的
■课题
■联系我们

HOME傊