рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ, рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЗ рд╡рд┐рднрд╛рдЧ рдХреЗ рдкреНрд░рдореБрдЦ рдиреЗ рдореЗрд░реА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛ред рд╕рднреА рдмрдбрд╝реЗ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреА рддрд░рд╣, рдЙрдирдХрд╛ рдЕрдкрдирд╛ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдкрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди (рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЙрдЯрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡рд╛рдЬ рдореЗрдиреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рд╢реНрди: "рдХреНрдпрд╛ рд╣реЙрдЯрд▓рд╛рдЗрди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдиреЗ рдЖрдкрдХреА рдорджрдж рдХреА?"
рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк: рдирд╣реАрдВ - рдмрдЯрди "0" рдФрд░ рд╣рд╛рдВ - рдмрдЯрди "1"
рд╕рдм рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рд╣рдХ рдЖрдИрд╡реАрдЖрд░ рдореЗрдВ рдЖ рдЧрдпрд╛, рдЬрд╣рд╛рдБ рд╡рд╣ рдорддрджрд╛рди рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдЧреЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛:
1) рдкрд╛рдХ рдХрд▓рд╛ mysql db:
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди CDRs рдХреЛ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд╣рд╛рдБ рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
DROP TABLE IF EXISTS `opinion`; CREATE TABLE IF NOT EXISTS `opinion` ( `id` int(11) NOT NULL auto_increment, `callerid` varchar(15) NOT NULL default '', `exten` varchar(15) NOT NULL default '', `queues` varchar(7) NOT NULL, `opinion` char(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2) рдореИрдХреНрд░реЛ рдЦрд╛рдирд╛ рдмрдирд╛рдирд╛
/Etc/asterisk/extensions_custom.conf рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
[macro-press-1] exten => s,1,MYSQL(Connect connid localhost _ _ asteriskcdrdb) exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN}, ${CDR(dst)}, ${CDR(src)}, 1)) exten => s,n,MYSQL(Clear ${resultid}) exten => s,n,MYSQL(Disconnect ${connid}) [macro-press-0] exten => s,1,MYSQL(Connect connid localhost _ _ asteriskcdrdb) exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN}, ${CDR(dst)}, ${CDR(src)}, 0)) exten => s,n,MYSQL(Clear ${resultid}) exten => s,n,MYSQL(Disconnect ${connid})
рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдорддреМрд░ рдкрд░ /etc/asterisk/cdr_mysql.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ
3) рдлрд╝реАрдЪрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ
Features_applicationmap_custom.conf рдореЗрдВ рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдореИрдХреНрд░реЛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдмрд╛рдБрдзрддреЗ рд╣реИрдВ
press1 => 1,peer/caller,Macro,press-1 press0 => 0,peer/caller,Macro,press-0
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрдЪрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдбрд╛рдпрд▓рдкреИрдб рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
in /etc/asterisk/extensions_override_freepbx.conf рдЬреЛрдбрд╝реЗрдВ
[globals] DYNAMIC_FEATURES = apprecord
apprecord рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Freepbx рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╣рдо рдЗрд╕реЗ рднреА рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред
рдкрд░рд┐рдгрд╛рдо
рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рдордп, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ 0 рдпрд╛ 1 рджрдмрд╛рдХрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИ
рд╕рдлрд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рд▓реЙрдЧ:
-- Feature Found: press1 exten: press1 -- Executing [s@macro-press-1:1] MYSQL("Local/299@from-queue-56b8;1", "Connect connid localhost root 123 asteriskcdrdb") in new stack -- Executing [s@macro-press-1:2] MYSQL("Local/299@from-queue-56b8;1", "Query resultid 1 INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, +74993462198, 299, 1234, 1)") in new stack
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЗрдЦреЗрдВ
mysql> SELECT * FROM opinion; +----+-------------+-------+--------+---------+ | id | callerid | exten | queues | opinion | +----+-------------+-------+--------+---------+ | 8 | 74993462198 | 299 | 1234 | 1 | | 9 | 74993462198 | 299 | 1234 | 1 | +----+-------------+-------+--------+---------+ 2 rows in set (0.00 sec)
рдЕрджреНрдпрддрди:
рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓рдЯрдХрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЖрдк рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП IVR рдХреЛ рддреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
WEB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрддрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ FreePbx рд╕рдВрд╕реНрдХрд░рдг рд╕рджрд╕реНрдпреЛрдВ рдХреЛ LOCAL / 999 @ рд░рд╛рдп-ivr / n рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдЖрдЗрдЯрдо рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рддреЛ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╡реЗрдм рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ queues_post_custom.conf рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ
member=Local/299@opinion-ivr/n member=Local/999@opinion-ivr/n
Extension_custom.conf рдореЗрдВ
[opinion-ivr] exten => _.,1,NoOp(Statrt IVR) exten => _.,n,DIAL(SIP/${EXTEN},,trg) ; g exten => _.,n,Goto(opinion,,1) [opinion] exten => _X.,1,NoOp(Statrt IVR) exten => _X.,n,Background(Plese_press_0_or_1,m) ; exten => _X.,n,Set(TIMEOUT(absolute)=2) exten => 0,1,MYSQL(Connect connid localhost root 123 asteriskcdrdb) exten => 0,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN}, ${DIALEDPEERNUMBER}, ${NODEST}, 0)) exten => 0,n,MYSQL(Disconnect ${connid}) exten => 1,1,MYSQL(Connect connid localhost root 123 asteriskcdrdb) exten => 1,n,MYSQL(Query resultid ${connid} INSERT INTO opinion (`id`, `callerid`, `exten`, `queues`, `opinion`) VALUES (NULL, ${FROMEXTEN}, ${DIALEDPEERNUMBER}, ${NODEST}, 1)) exten => 1,n,MYSQL(Disconnect ${connid})
рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реЗрдЯрд┐рдВрдЧ !!!