asterisk中常用函数说明


int ast_strlen_zero(const char *s);
    \param s    判断的字符串
    s为空返回1,非空返回0

int ast_play_and_wait(struct ast_channel *chan, const char *fn);
    \param chan     播放语音的信道
    \param fn            播放的文件名,文件放在/var/lib/asterisk/sounds/目录下,如:此目录下的"您好.gsm",那么fn = "您好",如果是/var/lib/asterisk/sounds/mymusic/下的"您好.gsm"呢?只要令fn = "/mymusic/您好"
    return     返回按的键,只能有一个键
    播放fn,等待并返回按的键
    
int ast_streamfile(struct ast_channel *c, const char *filename, const char *preflang);
    \param c                播放文件的信道
    \param filename    播放的文件名(类似于ast_play_and_wait的fn)
    \param preflang    播放文件的语种
    用preflang语种播放filename,成功返回0,失败返回-1

int ast_readstring(struct ast_channel *c, char *s, int len, int timeout, int ftimeout, char *enders);
    \param c                读取数据的信道
    \param s                读取的字符串存入S,需要有空间
    \param len            最多能读取字符的长度
    \param timeout    字符输入之间间隔容许的最长时间
    \param ftimeout    等待第一个字符的最长时间
    \param enders        输入字符串结束标志
    从c中读取输入的数据,并保存在s中,最大保存数据为len,两个数据之间最大时间间隔为timeout,等待第一个字符的最长时间为ftimeout,当输入enders时表示输入结束
    正常读取数据返回0,超过timeout返回1,失败返回-1
    
int ast_say_number(struct ast_channel *chan, int num, const char *ints, const char *lang, const char *options);
    \param    chan    播放一个数据的信道
    \param    num        播放的数字
    \param    ints    播放的过程中可以被中断的字符
    \param    lang    播放数字的语种
    \param    options    "f"为女性的,"m"为男性,"c"为亲切的,"n"为中立的,"p"为复性的
    播放一个数字num,成功或中断返回0,失败返回返回-1
    
    
struct ast_variable *ast_load_realtime(const char *family, ...);
    \param    family    为连接数据库的句柄,在/etc/asterisk/extconfig.conf内设置
    \param    ...            变参,传入方式为"字段","与此字段相应的数值","字段","与此字段相应的数值", ...最后是NULL结尾
    返回在family连接的表中符合...的内容,若有相符的,返回一个struct ast_variable的结构体,没有则返回NULL
    
    我们可以简化struct ast_variable {        
                                            char *name;        //字段名
                                            char *value;    //数值
                                            struct ast_variable *next;
                        };(实际上在代码中并不是这样子的,为了方便看懂才写成这样)
                        
struct ast_app * pbx_findapp(const char *app);
    \param    app    app的名字
    查找在/asterisk/apps/内注册的app函数,查找到对应的app返回一个struct ast_app结构体,失败返回NULL


int pbx_exec(struct ast_channel *c, struct ast_app *app, void *data);
    \param    c            执行app应用的信道
    \param    app        执行的app
    \param    data    执行此app时传入app的参数
    执行app并传入参数data,执行成功返回0,失败返回-1,这个函数一般都是先用
    struct ast_app * pbx_findapp(const char *app);找到,再执行
    
void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value);
    \param    chan    设置的变量所在的信道
    \param    name    设置的变量名
    \param    value    变量的值
    在chan中设置变量名为name,值为value的变量
    
const char *pbx_builtin_getvar_helper(struct ast_channel *chan, const char *name);
    \param    chan    取得变量的信道
    \param    name    变量的名字
    得到在chan信道中变量名为name的变量值,返回name的值,这个函数都是通过
    void pbx_builtin_setvar_helper(struct ast_channel *chan, const char *name, const char *value);
    先设置name的值,再用此函数得到这个值


int ast_ivr_menu_run(struct ast_channel *c, struct ast_ivr_menu *menu, void *cbdata);
    \param    c            执行的渠道        
    \param    menu    执行的一个struct ast_ivr_menu变量
    \param    cbdata    传入menu内的参数
    执行menu,成功返回0,挂断返回-1,menu有错返回-2

猜你喜欢

转载自coolwhy1.iteye.com/blog/1748362