社区
网络及通讯开发
帖子详情
大家来看看我设计的一种脚本语言
bluesen
2004-06-18 11:15:41
请看:
http://www.bluespace.com.cn/koodoo/
在上面可以浏览语言的规范,还有简短的示例。免费下载全功能的开发平台(不必安装)。除各种语音卡外,还支持TAPI3的接口,这样可以在桌面应用--甚至不要任何硬件。
欢迎讨论。
...全文
314
16
打赏
收藏
大家来看看我设计的一种脚本语言
请看: http://www.bluespace.com.cn/koodoo/ 在上面可以浏览语言的规范,还有简短的示例。免费下载全功能的开发平台(不必安装)。除各种语音卡外,还支持TAPI3的接口,这样可以在桌面应用--甚至不要任何硬件。 欢迎讨论。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluesen
2004-07-19
打赏
举报
回复
谢谢各位支持,我的MSN是:bluesen@msn.com
Email是:zhudn@bluespace.com.cn
庄鱼
2004-07-15
打赏
举报
回复
支持一下!有机会合作。
bluesen
2004-07-14
打赏
举报
回复
魔鬼隐藏在细节之中。
bluesen
2004-07-14
打赏
举报
回复
to MEFULEU(没有作不到,只有想不到):
兄弟你可能对CTI的开发平台不熟悉,你可能不知道CTI应用开发所面临的问题。
你可以看看Intel的东西CT ADE:
http://www.ctiforum.com/train/intel/tech/tech01_001_00.htm
你看了Intel CT ADE的VOS语言丑陋的语法,也许就会惊叹Koodoo语言是多么的优雅、简洁了。
MEFULEU
2004-07-13
打赏
举报
回复
个人感觉有点换汤不换药的感觉;
就像看到过的一些所谓的中文编程一样;
程序开始
{
如果:
那么:
}
k~a~o
不过依然期望国产的产品做的更好!!!!
MEFULEU
2004-07-13
打赏
举报
回复
本教程介绍了一些Koodoo语言及蓝星际语音普通的基本知识与概念。学习者最好有一定的程序设计基础,当然如果稍微熟悉C或JAVA更好,其实只要懂一点它们的语法结构就可以了。
本教程包含很多简短的例子,它们都可以独立运行,当然也许实际的系统要复杂许多。正式一点的语法说明请参见《蓝星际语音平台Koodoo语言手册》,完整的库函数说明请参见《蓝星际语音平台系统函数参考手册》.
学习完本教程,你就可以阅读和编写Koodoo脚本程序了,你可以下载开发平台来执行你的脚本程序,开发平台是免费的,如果要开发多线路的语音运行系统,你需要购买相应的硬件和蓝星际语音运行平台版本,请与销售商联系。
第1章 Koodoo简介
欢迎进入Koodoo的世界, Koodoo是一种脚本语言, 特别擅长快速构造IVR(自动语音应答)、呼叫中心等语音方面的应用.
当然,Koodoo也是一种通用的脚本语言,除了面对语音方面的应用外,也可以进行文件操作、数据运算、网络通讯、数据库操作等各种应用,对这些问题都有简单的解决方法。而且,Koodoo语言天然地支持多线程,支持线程之间的通讯,所谓线程对应着语音应用中的线路。所以可以使用Koodoo语言开发数据服务、通讯服务、座席服务等网关应用。
Koodoo是一个设计精巧的高级语言,Koodoo很容易学习,它有类似C语言的简明、清晰语法,它又是一种高效率的动态脚本语言,借鉴了AWK, Python等脚本语言的精华,使用它进行开发是一个愉快的过程,Koodoo是一种南非条纹羚羊的名字,音Kudu--其实也写作Kudu,虽然没有 python那么凶猛,却也是我们这个蓝色星球上一种美丽的动物,我们借用了它的名字。
就让我们跟随Koodoo,开始语音开发的浪漫之旅吧。
Koodoo语言的设计受到下列语言的影响:
1. C语言
借鉴了C语言简洁的语法
2. Python语言
动态数据类型, 数组(散列表或字典), 尤其是数组别名的思想
文件操作
3. AWK语言
数组,字符串的分解
4. Java语言
字符串拼接: 将不同类型的变量拼成一个字符串
第2章 Koodoo语法
2.1 概述.一个简单的例子
让我们来看看Koodoo语言的"Hello, world!":
WaitRing(1); // 等待来电
Play("Welcome.wav"); // 播放欢迎语音
Hangup(); // 挂断
就这三行语句,构成了一个最简单的语音应答机(IVR).
当然,运行上面的例子需要语音硬件,也要录制那个欢迎语音Welcome.wav文件。
如果你安装了微软的SAPI--是免费的,你也可以不录音:
WaitRing(1); // 等待来电
TxtSpeak("您好,欢迎来电!", false, false); // TTS合成欢迎语音
Hangup(); // 挂断
让我们看看别的方式输出"Hello, world!":
在第一个信息栏显示信息:
DispInfo(0, "Hello, world!");
return(0);
在日志文件记录信息:
TextFileAppend("userlog.txt", "Hello, world!", true); // 日志文件名为:"userlog.txt"
return(0);
怎么样,够简单的吧?
也许你注意到前面两个脚本例子没有return语句,Koodoo语言规定,在主脚本中如果没有return语句,则脚本将循环执行。最前面的脚本,等价于:
while(true)
{
WaitRing(1); // 等待来电
Play("Welcome.wav"); // 播放欢迎语音
Hangup(); // 挂断
}
return(0);
主脚本流程中如果遇到return语句,则该线路的流程将终止。
在自定义函数中,在函数结尾处,不管是否有return语句,函数都将返回到调用的地方。Koodoo语言大小写敏感。
如何执行一个脚本,请参照文档: Step by Step.
2.2 常量
Koodoo语言支持常量定义,如:
const PAI = 3.1415926;
const BLUE_SPACE = "深圳市蓝星际公司";
"const"关键字,表示后面的符号是个常量,常量在运行时不会被改变。
注意,系统也提供了几个有用的常量:
_lineNo // 当前线路号, 整型, 从0开始
_bssFile // 本线路执行的脚本文件名, 字符串类型
true // 逻辑真, 也就是整型1
false // 逻辑假, 也就是整型0
2.3 变量
Koodoo语言支持动态的变量,如:
i = 0; // i现在是整型0
i= "Space"; // i现在是字符串"Space"
i = 19.34; // i现在是双精度浮点型值为19.34
可以进行复杂的变量运算:
a = 23;
i1 = 99*88;
v = 10 - 8*2 + a*(i1-10);
类似C/C++, 支持:
i=0;
i++;
变量分为全局变量和局部变量,在用户自定义函数里定义的变量为局部变量,在主模块里定义的变量为全局变量。其意义与C语言相同。
2.4 数组
数组的使用是很灵活的, 规则如下:
数组下标可以是任意类型, 即使是整型也可以不连续;
数组等同于字典或散列表,不存在越界的问题;
数组可以用在复杂表达式中,其含义与其它语言如C一样;
数组可以有别名,就是不带下标的赋值, 在函数调用中如果实参为数组名,函数内也将使用别名.
例如:
m[0] = 12; // m为数组类型, 下标0对应的值是12
m[1] = "English";
i = m[0]*100;
p = m; // 为数组m创建一个别名p
在开发平台,双击变量列表中的数组型变量,可以浏览整个数组的全部元素。例子可以参见数组示例。
2.5 注释
与C/C++相同,有两种注释方法: 单行注释,以 // 开始直到行尾; 多行注释, 以 /* 开始, 以 */ 结束.
2.6 其它语句
1. 函数调用,包括系统函数调用,用户自定义函数调用,外部动态库函数调用3种。
系统函数功能及其参数列表,参见文档<蓝星际语音平台呼叫系统函数参考手册>,随着系统功能的扩展,系统函数会增加.
用户自定义函数和外部动态库函数参见下面章节。
2. 流程控制类语句,主要有4种
1).条件语句
if(表达式或布尔变量)
{
语句块 // 表达式或布尔变量为真时执行
}
else
{
语句块 // 表达式或布尔变量为假时执行
}
注意:else 语句块可以省略
2).循环语句
while(表达式或布尔变量)
{
语句块 // 表达式或布尔变量为真时执行
}
语句块中可以包含 break 和 continue 语句, break直接退出循环,而continue忽略下面的语句直接回到while继续
3).标准循环语句
for(初始表达式; 表达式或布尔变量; 步进表达式)
{
语句块 // 表达式或布尔变量为真时执行
}
与while语句相同, 语句块中可以包含 break 和 continue 语句, break直接退出循环,而continue忽略下面的语句直接回到for继续;
最常见的用法类似下面:
for(i=0; i<100; i++)
{
语句块
}
4).多分支条件语句
switch(主变量)
{
case(变量1或常量1) // 注意case后面要小括号, 并且不用冒号, 这与C语言不同
{
语句块 // 主变量=变量1 时执行
}
...
case(变量n或常量n)
{
语句块 // 主变量=变量n 时执行
}
default() // 看起来像一个函数调用
{
语句块 // 主变量不等于上述变量列表中的任何一个时执行
}
}
注意,与C语言相比不需要break语句, default() 语句块可以省略。
特别地,当某个case()语句没有语句块时, 表示穿透到下一条case()或default()语句, 例如:
switch(i)
{
case(1)
{
// i==1时,执行的语句块
}
case(2) // 穿透
case(3)
{
// i==2或i==3时,执行的语句块
}
default()
{
// 其它情况下执行的语句块
}
}
以上4类语句的语句块可以是空语句块, 如:
if(i=0)
{
// 空语句块, 即 i=0 时什么也不干
}
else
{
Play(VocLangSele);
}
注意,所有的流程控制语句下面的语句块都必须用大括号对括起来, 而且 '{' 及 '}' 都必须单独一行.
2.7 用户自定义函数
Koodoo语言支持用户自定义函数,例如:
// 函数定义
function Add(a, b, c)
{
c = a + b;
}
// 主流程
i = 10;
j = 20;
k = 0;
Add(i, j, k); // 调用函数Add
DispInfo(0, k);
Add("Hell ", "world!", k); // 调用函数Add
DispInfo(1, k);
return(0);
注意,函数一定要在调用之前定义。
2.8 文件包含
#include 或#include "fileName"
这个语句完全类似C语言,它只是在编译时使用
可以不写扩展名, 扩展名缺省为".bss"
典型应用是将参数化变量放入配置文件; 或将用户自定义函数集放在一个单独的文件, 每次使用时包含它即可,这相当于用户可以构建自己的程序库。这样可以改善程序结构,增加主程序的可读性。复杂的IVR应用通常由多个脚本文件组成, 由主脚本文件包含其它文件。
注意: 同一个文件最多只能包含一次, 也不可以循环包含。
此外,也不能在函数定义内包含文件。
MEFULEU
2004-07-13
打赏
举报
回复
搞了大半天;原来!
bluesen
2004-07-07
打赏
举报
回复
招聘程序员 (1-2人)
要求:
1. 大专以上学历,良好的语言表达能力。
3. 熟悉c/c++,精通.NET 或 J2EE开发。
4. 诚心敬业,良好的团队合作精神。
5. 经验丰富的优先录用。
e_mail: bluesen@sina.com, zhudn@bluespace.com.cn和chenbf@bluespace.com.cn
niuzhenjun
2004-06-28
打赏
举报
回复
好,支持国货
bluesen
2004-06-28
打赏
举报
回复
《程序员》杂志今年第5期讲到动态语言和静态语言,脚本语言和编译语言的比较,我认为大可参考。
bluesen
2004-06-22
打赏
举报
回复
Koodo语言特性表
------------------------------------------------------------------------------
语法结构 | 接近C语言,语法十分简单,按通用语言设计。
| 提供函数定义,函数调用,条件语句(if/else),循环(while)语句,标准循
| 环(for)语句,多路分支(switch/case)语句,支持复杂表达式
------------------------------------------------------------------------------
变量 | 接近Python,动态类型,不必预先定义类型,函数参数为引用传递
------------------------------------------------------------------------------
常量定义 | 接近C++语言,使用const关键字
------------------------------------------------------------------------------
数组 | 接近Python的字典(或map),不必预先定义,支持别名,下标可以不连续,
| 下标可以任意数据类型,遍历操作,自动内存回收
------------------------------------------------------------------------------
字符串 | 接近JAVA语言,可以任意拼接;类似AWK语言,带分隔符的格式化字符串可
| 以分解到数组;提供查找、替换等操作
------------------------------------------------------------------------------
文件包含 | 和C语言的#include语句一样,可以简单地构造大型工程
------------------------------------------------------------------------------
多线程 | 线程等于线路,脚本运行于线路之上。线路基于硬件,虚拟线路则不受物理
| 线路限制,线路数可以配置;每条线路可以运行不同的脚本
------------------------------------------------------------------------------
线路间通讯| 消息队列、共享内存变量;可以构造高效率的、结构简单清晰的大型应用
------------------------------------------------------------------------------
外部扩展 | 用户可以编写动态库,动态库里面的函数可以像自定义函数一样调用,可以
| 通过变量与动态库交换数据
------------------------------------------------------------------------------
文件操作 | 写日志文件;文件换名、删除等;目录操作;
| 格式化文件存取接近Python,甚至可以把每一行的内容读到数组
------------------------------------------------------------------------------
数据库操作| 支持ADO访问各种数据库;也支持多种数据库的原生API,有很高的效率;
| 提供一致的界面
------------------------------------------------------------------------------
语音操作 | 支持市场上主流的各种语音卡,支持WAV格式语音文件;
| 接听、外拨、录放音、收码、发码、传真收发、转接、主叫被叫号码识别等
------------------------------------------------------------------------------
TTS支持 | 支持免费的TTS如微软SAPI,蓝星际TTS;也支持商品化的TTS;自动识别
| 汉字内码,无论是GB码还是BIG5码
------------------------------------------------------------------------------
外部通讯 | 直接支持TCP/IP通讯,用户也可以使用自己编写的动态库进行特殊的处理
------------------------------------------------------------------------------
加载运行 | 在开发平台可以编译调试;在运行平台没有显式的编译过程,系统自动加载;
| 系统结构简单:运行平台(一个可执行文件),配置文件,脚本文件;可以不
| 需要任何数据库
------------------------------------------------------------------------------
注: Koodoo念[kudu],是一种南非条纹羚羊。
bluesen
2004-06-20
打赏
举报
回复
to cool222(菜得不能再菜):
你怎么会认为没有数据库存取功能呢?请仔细阅读文档。
“11.为各种数据库类型提供一致的接口
a). MySql数据库, 内部调用MySql的客户端访问库, 有最好的效率
b). MS SqlServer或Sybase数据库, 内部调用DB-Lib API方式访问SQL, 有最好的效率
c). DBF数据库文件, 内部使用文件方式操作DBF, 有最好的效率
d). ADO, 可以访问Acces, Ms SqlServer, Sybase, Oracle, Infomix, DB2等数据库, Windows2000以上操作系统已经有ADO驱动, 不必额外安装驱动软件
上述方式可以混合使用,构成复杂的业务应用。”
至于“让我的劳资管理程序也支持电话查询工资”这种小case, 根本不用类库,写个脚本就搞定了,也就几十行语句。
bluesen
2004-06-18
打赏
举报
回复
动态语言。
bluesen
2004-06-18
打赏
举报
回复
那个主页上有几篇文章,详细讲了设计的思想。
有哥
2004-06-18
打赏
举报
回复
很好!
两点建议:
1、加上数据库存取功能,否则完全没有实用价值;
2、真希望能提供个类库,让我的劳资管理程序也支持电话查询工资。
benbebnmao
2004-06-18
打赏
举报
回复
hao ,先去看看。不错的说
什么是脚本,
脚本语言
?
一、脚本 百科解释: 脚本(script)是使用
一种
特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页
设计
中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当我们点击网页上的E-mail地址时能自动调用Outlook Express或Fox...
html
脚本语言
有哪些,常见的
脚本语言
(有哪些)
常见的
脚本语言
脚本言语:脚本言语又被称为扩建的言语,或者动态言语,是
一种
编程言语,用bai来操控软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解说或编译。言语分类:Shell脚本:此类脚本用于自动化工作操控,即发动和操控体系程序的行为。大多的脚本言语解说器也一起是命令行界面,如Unixshell和MS-DOSCOMMAND.COM。其他如AppleScript,可以为体系添加脚...
初学者最容易学的六种编程语言
学编程关键是要找到
一种
合适的语言。下面是为大家介绍初学者,最容掌握的六种编程语言。1.JavaScript可别将JavaScript与Java混为一谈。Java是
一种
可以撰写跨平台应用软件的面向对象的程序
设计
语言,即使是开发简单的程序,也必须
设计
对象;而JavaScript是
一种
直译式
脚本语言
,它本身提供了非常丰富的内部对象供
设计
人员使用。JS之所以特别受欢迎,是由于它是跨平台的。由于JS本身在浏...
利用Python进行游戏脚本编程,不愧是最强的
脚本语言
!
使用
脚本语言
可以更加快速地开发游戏逻辑,而不必担心由于 C++ 程序员的粗心大意所造成的后果。使用已有的
脚本语言
可以节省开发新型自定义语言的时间和开销,并且这些语言通常要比自己创造的语言更加的强大。Python 对于游戏
脚本语言
来说是
一种
不错的选择,它很强大,容易嵌入使用,能够无缝地使用 C/C++ 进行扩展,包含很多
脚本语言
所具有的高级特性,并且它可以用来实现自动化过程[TR1: automating production]。
JS
脚本语言
是什么意思?
javascript,Javascript是
一种
浏览器端的
脚本语言
,用来在网页客户端处理与用户的交互,以及实现页面特效。比如提交表单前先验证数据合法性,减少服务器错误和压力。根据客户操作,给出一些提升,让用户体验更好等。也可以实现一些页面动画。 有两种,
一种
是嵌在网页里的。
一种
是引用的。 先
看看
嵌在网页中的。比较易懂。 一、嵌网页的脚本格式 脚本可以写在任何位置,但一般来说都写在网页最底部,...
网络及通讯开发
1,316
社区成员
8,873
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章