asterisk中电话评价系统的开发

来源:互联网 发布:isis base软件下载 编辑:程序博客网 时间:2024/04/26 18:26

本方法采用定义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