- 博客(26)
- 收藏
- 关注
原创 Asterisk XML解析接口说明
<br />XML解析库实现的初始化,是使用接口的前置工作。<br />int ast_xml_init(void);<br />清理为实现库分配的全局数据<br />int ast_xml_finish(void);<br /> 打开一个XML文档<br />struct ast_xml_doc *ast_xml_open(char *filename);<br /> 关闭一个已经打开的XML文档,释放其分配的内存<br />void ast_xml_close(struct ast_xml_doc *d
2010-08-05 12:05:00
776
转载 C语言中容易导致指针和内存泄露的几种出错
<br /><br />1. 使用未初始化内存<br /> char *p = malloc(10);<br /> //未初始化之前10个字节可能包含垃圾数据,若被访问可能获得垃圾值,导致程序的不可预测的行为。<br /> 良好的实践是通过memset与malloc结合,如下:<br /> char *p = malloc(10);<br /> memset(p,'/0',10);<br />2. 内存覆盖<br /> 对于1中的p分配了10个字节,如果某个代码片段尝试向p写入一个1
2010-08-03 18:37:00
1148
转载 多方通话拨号方案设计参考
<br />[confserv]<br />exten => _XXXX,1,Set(DYNAMIC_FEATURES=nway-start) <br />exten => _XXXX,n,Dial(SIP/${EXTEN}) <br />[dynamic-nway] <br />exten => _1199,1,noop(dynamic-nway) <br />exten => _1199,n,Answer() <br />exten => _1199,n,Set(MEETME_EXIT_CONTEXT=
2010-07-29 19:01:00
1354
原创 Asterisk Originate 内部执行流程
<br />1. originate的执行<br />向客户端发起呼叫,将客户端引入到Dialplan中,并从exten的首项开始执行,进行一系列操作。虽然客户端是被动接受,但此过程相当于主动拨入的过程。Originate call可用于任何UI对某个客户端发起呼叫,也可以邀请他人加入某个会话当中。下面以AMI方式发起Originate call.<br /><br />1) 在AMI上发起Originate呼叫命令,Channel、Context、Exten、Priority是必须设定项。<br />2)
2010-07-29 18:52:00
5037
原创 Asterisk安装指南
1 Asterisk及相关软件安装1.1 下载Asterisk及相关软件可从Asterisk官方网站http://www.asterisk.org/downloads下载;也可以从http://downloads.asterisk.org/pub/telephony/网站找到你想要的Asterisk版本以及相关的依赖软件。服务器上使用的Asterisk及相关软件版本如下:软件说明版本源代码路径libpriAsterisk支持库1.4.10.2http://downloads.asterisk.org/pu
2010-07-29 18:44:00
12839
原创 Asterisk通道简介(部分翻译)
<br /> Asterisk如何定义通道:<br /> 通过Asterisk接通的电话包含一个呼入连接和呼出连接,每个通道都是来自于通过某种类型的通道驱动生成,而该通道的类型在技术上<br /> 可以支持SIP,DAHDI,IAX等。每种技术上支持的通道驱动都有一个专有通道,并且拥有私有的数据存储结构,技术上独立的,不同类型的<br /> 通道驱动之间不存在相互依赖的关系,按照Asterisk通道编写接口标准,你可以自己编写某种类型的通道,例如GSM通道。在Asterisk中,所有<br /> 的专用通道
2010-07-29 09:15:00
2500
原创 AsteriskNow
AsteriskNow简介AsteriskNow是以最快捷的方式建立基于Asterisk的电话系统解决方案。AsteriskNow是一个完整的Linux发布版本,其中集成了Asterisk服务器、DAHDI驱动框架、管理GUI、Mysql数据库、Apache服务器以及包括了多种开发工具与组件。下图是AsteriskNow前端截取界面:AsteriskNow系统架构AsteriskNow的架构是基于LMAP(Linux-Apache-MySQL-PHP),LAMP框架是当前软件开发的一种重要模式。LAMP中的
2010-07-28 18:04:00
4270
原创 简单思考如何编写描述一个模块
<br />1)产生该模块的缘由?<br />2)该模块完成什么样的功能?<br />3)该模块完成需求的功能所需要的前提条件是什么,即该模块依赖的前置工作什么?<br />4)大体描述该模块通过怎么样才能完成需求中的功能?<br />5)该模块完成需求中的功能,需要的执行步骤有那些,这些执行步骤是否可以划分为单独的小模块,这些小模块的耦合度如何,实现功能的架构如何?<br />6)该模块的输出是什么,或者给下一个模块编写提供功能接口?<br />7)该模块是否提供了安全控制机制,设计的是时候是否考虑了这方
2010-07-28 17:54:00
1095
翻译 Asterisk AGI脚本
AGI脚本用于开发复杂的IVR应用。AGI脚本与Asterisk之间通过两个标准的数据流交互,一是STDIN(标准输入),二是STDOUT(标准输出)。从AGI脚本角度看,任何来自Asterisk的数据可以称之为STDIN,任何向Asterisk的输出可称之为STDOUT。也可以认为是通过读命令从Asterisk读取数据,通过写命令向Asterisk写入数据。AGI脚本可以支持多种语言来编写,例如通过Bash、Perl、PHP等脚本语言,也可以通过C/C++语言来编写。 Asterisk 拨号方
2010-07-25 14:24:00
3502
转载 "Tormenta" Switching and Conferencing Architecture
<br />The "Tx" and "Rx" are referring to the actual streams going out to, and in from the channel on the T1. <br />The "Tx Buffer" and "Rx Buffer" are referring to the I/O buffers for the associated channel (that would be accessed via system read and write
2010-07-22 13:55:00
483
翻译 Asterisk Callgroups and Pickupgroups-10
<br /> Call and pickup group 允许他人应答呼叫<br /> 可在mgcp,SIP,IAX,Skinny,DAHDI通道对应的话机中定义Call group 和 pickup group。Call and pickup group组功能只能在同一中类型的通道对应的话机中进行,<br /> 例如多个SIP话机,但是IAX话机与SIP话机之间则不能执行该功能。基本的功能执行如下:<br /> 1)位于某个Call group中的话机有来电呼叫<br />
2010-07-16 10:19:00
712
原创 Fastagi使用-6
<br />Asterisk支持多种语言实现AGI脚本,因此运行AGI脚本需要服务器支持脚本语言环境,例如某个AGI脚本是通过JAVA语言编写,那么服务器需要运行整个JAVA虚拟机环境。这给对于多个AGI脚本并发执行给服务器带来的负担是不可忽略的。那么是否可以提供一种机制,使得执行AGI脚本与运行Asterisk的服务器从物理上独立开来,即AGI脚本<br />在其他机器上执行,执行的结果送到Asterisk服务器,由AGI服务器与Asterisk服务器交互来完成命令的发起与执行动作。<br />Fasta
2010-07-14 17:52:00
2277
转载 IAX versus SIP
IAX versus SIP<br />Date: Mon, 5 Jul 2004 18:59:52 -0500 (CDT) <br />From: Mark Spencer <markster@digium.com> <br /><br />Let me summarize some differences between SIP and IAX, and it might help you make a decision about what is best for you. <br /><br />1
2010-07-13 15:59:00
678
原创 IPPBX功能之DID
<br />当IPPBX外线有呼入时,IPPBX将根据呼入的目标号码将其路由到指定的分机,也可以将一系列目标号码路由到指定的分机,这样不必经过中间过程。
2010-07-13 15:55:00
997
原创 Switchvox的group pickup功能
<br />号码可以分很多组,组的分配是任意的,可以是按部门或按研发部等。每个组可以设置一个组应答分机,通过组应答分机可以接起该组内其他分机的呼叫来电。例如,假定组应答分机为100,授权可接该组内的分机为111,该可能是秘书电话分机。组内号码有112,113。<br />加入112有来电,那么在分机111上拨打100可以接起112的来电。若112,113同时响铃,那么112将被优先接起来,这根据112,113在分机列表中的顺序,前者将被先应答。
2010-07-12 11:42:00
664
原创 Astersisk如何执行Parking a call功能-7
首先需要在配置文件中设置驻留转接号码和驻留分机号,驻留转接号码类似于呼叫转移时转接的分机号,但执行结果却与呼叫转移不同。驻留分机号一般为一系列分机号码串,例如701-710。Asterisk默认的驻留转接分机号码为700,该驻留转接分机号可在配置文件中设置。当您接听电话时,环境比较嘈杂,您想换个地方接听,而呼叫转接不能给您足够的时间过去接听,这时您可以使用呼叫驻留功能,驻留功能设置了最大的驻留时间。按#号进行转移,然后拨700后Asterisk将提示分配该呼叫驻留的分机号码,假如701。然后被叫者挂机。被叫
2010-07-12 10:37:00
666
转载 一篇比较好的破解LINUX密码方法
<br />1) Reboot the machine and hit any key when you see Grub kicking in. This will be after the BIOS checks but before any services start up.<br />2) You will now see a list of various kernels you can boot into, the first one in the list will probably be
2010-07-09 09:16:00
591
转载 Asterisk postgresql voicemail
<br />GETTING ODBC STORAGE WITH POSTGRESQL WORKING WITH VOICEMAIL<br /> <br />1) Install PostgreSQL, PostgreSQL-devel, unixODBC, and unixODBC-devel, and PostgreSQL-ODBC. Make sure PostgreSQL is running and listening on a TCP socket.<br /> <br />2) Log int
2010-07-02 11:17:00
1313
原创 Asterisk电子传真-5
<br /><br /> Asterisk自带传真功能,但需要第三方的软件支持。Asterisk是通过接在服务器上的语音卡发送或接受外部的传真信号。<br /> 发传真<br /> Asterisk内部注册命令通过语音卡向对方传真机发起外呼,当对方传真机送回应答信号,电子文档将通过语音卡发到对方的传真机,被打印出来。<br /> 收传真<br /> 当语音卡收到外部呼入信号时对其解析如果是T38协议,则认为是传真信号,Asterisk传真通道对传真信号进行解析,调用语音卡回复<
2010-07-02 11:05:00
1646
原创 typeid-4
<br />typeid用户检查表达式的类型。<br /> typeid (expression) <br />typeid返回定义在标准头文件中常对象类型的引用,且返回值是可通过==和!=比较的.获得的对象可通过name()成员获取以空格结尾的数据类型或类名字符串。<br />#include <iostream><br />#include <typeinfo><br />using namespace std;<br />int main () {<br /> int * a,b;<br /> a
2010-07-01 20:17:00
646
原创 全局变量,局部变量,静态变量-3
1.全局变量在函数体外定义,程序的所有部分可以使用,不受作用越影响,用exten来声明另外文件中存折的全局变量,有编译器告知声明的变量在那个文件里面定义。 2.在作用域内生效,局限与函数内部,由离开作用域而消失。 3.局部变量的值在整个程序生命周期存在,定义函数的局部变量为static。而且static变量在函数的范围外是不可访用的。
2010-06-28 20:09:00
386
原创 传递指针和传递引用的区别-2
<br /> 1)通过引用可以传递参数的地址<br /> 2)带引用的函数调用比带指针的函数调用在语法构成上更清晰。<br /> 3)引用和指针一样都是传递参数地址,而不是参数值的拷贝<br /> 4)引用和指针一样都允许函数去改变外部对象。
2010-06-26 17:43:00
364
转载 [转]异常控制try,catch的用法
<br />1、基础介绍<br />try<br />{<br />//程序中抛出异常<br />throw value;<br />}<br />catch(valuetype v)<br />{<br />//例外处理程序段<br />}<br />语法小结:throw抛出值,catch接受,当然,throw必须在“try语句块”中才有效。<br /><br />2、深入throw:<br />(i)、程序接受到throw语句后就会自动调用析构器,把该域(
2010-06-25 17:50:00
429
原创 技术问题自问自答3000题
<br />自问自答主要是对工作学习过程中碰到的问题的解析,解答内容可能参照某篇课本或网上某个指引。也可能是读书过程中为了增强记忆,将<br /> 内容以问答的形式写在帖子上。目的是帮助自己学习,不断成长。现阶段目标是3000题。
2010-06-25 17:48:00
520
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人