现在的位置: 首页 > 综合 > 正文

asterisk中电话评价系统的开发

2013年12月02日 ⁄ 综合 ⁄ 共 2370字 ⁄ 字号 评论关闭

本方法采用定义applicationmap 的方法实现,适用于asterisk+FreePBX的环境中

具体请参考前面的文章http://blog.csdn.net/radkitty/archive/2009/12/29/5102097.aspx

在/etc/asterisk/features_applicationmap_custom.conf添加:、

evaluate-start => *0,callee,Macro,evaluate-start

evaluate-zhustart => *7,caller,Macro,evaluate-zhustart

在/etc/asterisk/globals_custom.conf添加:

DYNAMIC_FEATURES=evaluate-start#evaluate-zhustart

在/etc/asterisk/extensions_custom.conf添加:

[dynamic-evaluate]

exten => _X.,1,Hangup()

exten => _X.,2,Answer

;exten => _X.,n,Set(PLAYNUM=${EXTEN})

;exten => _X.,n,Noop(playback ${PLAYNUM})

exten => _X.,n,Background(evaluate)

;exten => _X.,n,Read(DEST,dial,, i)

exten => 1,1,Answer

exten => 1,n,Noop(your input is 1 for ${PLAYNUM})

exten => 1,n,Set(CIDNUM=${CALLERID(num)})

exten => 1,n,Set(ETIME=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S))

exten => 1,n,MYSQL(Connect connid localhost asteriskuser SOMEPASSWORD asteriskcdrdb)

exten => 1,n,MYSQL(Query ${connid} insert into evaluate values (" ${ETIME} ", 1, ${CIDNUM}))

exten => 1,n,Playback(thanks-for-evaluate)

exten => 1,n,MYSQL(Disconnect ${connid})

exten => 1,n,Hangup()

exten => 2,1,Answer

exten => 2,n,Noop(your input is 2 for ${PLAYNUM})

exten => 2,n,Set(CIDNUM=${CALLERID(num)})

exten => 2,n,Set(ETIME=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S))

exten => 2,n,MYSQL(Connect connid localhost asteriskuser SOMEPASSWORD asteriskcdrdb)

exten => 2,n,MYSQL(Query ${connid} insert into evaluate values (" ${ETIME} ", 2, ${CIDNUM}))

exten => 2,n,Playback(thanks-for-evaluate)

exten => 2,n,Hangup()

exten => t,n,Hangup()

exten => i,n,Hangup()

[my-evaluate]

;exten => _X.,1,Wait(30)

exten => _X.,1,Hangup()

[macro-evaluate-start]

exten => s,1,Set(NUM=${CALLERID(num)})

exten => s,n,Noop(evaluate extension is ${NUM})

exten => s,n,ChannelRedirect(${BRIDGEPEER},my-evaluate,${NUM},1)

;exten => s,n,Hangup()

exten => s,n,Gosub(dynamic-evaluate,${NUM},1)

[macro-evaluate-zhustart]

exten => s,1,Set(NUM=${CALLERID(num)})

exten => s,n,Noop(evaluate extension is ${NUM})

exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-evaluate,${NUM},2)

;exten => s,n,Hangup()

exten => s,n,Gosub(my-evaluate,${NUM},1)

在mysql的asteriskcdrdb数据库建表evaluate如下:

+-----------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-----------+----------+------+-----+---------+-------+

| date | datetime | YES | | NULL | |

| result | char(5) | YES | | NULL | |

| callernum | char(20) | YES | | NULL | |

+-----------+----------+------+-----+---------+-------+

使用方法:

来电:接听用户电话完成后,按*1即可将用户转到评价系统进行评价,结束后会自动挂机。

去电:呼叫用户电话完成后,按*7即可将用户转到评价系统进行评价,结束后会自动挂机。(注意,转接后请等待自动挂机)

Powered by Zoundry Raven

抱歉!评论已关闭.