/*time:2014.7
author:Mr.liu*/
本功能的实现主要包括如下几个方面值得思考:
1、asterisk如何接受用户的单个选择性按键? 如何接受长字符串查询按键?
2、asterisk如何播报语音?语音文件?
3、如何与数据库打交道?
4、asterisk如何在用户拨打电话时调用so文件及如何产生自己的so文件来供asterisk拨号调用?
5、理解一个完整拨号、调用、加载卸载的流程?
为完成相应的功能开发。需涉及如下函数模块:
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时表示输入结束
正