рдмрдбрд╝реА рдкреГрд╖реНрдарднреВрдорд┐ рдирд╣реАрдВ рд╣реИ
рдХрд╛рдо рдкрд░, рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓ рдХреЛ рд░реЛрдХрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдмрд╛рдж рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕рдВрдЦреНрдпрд╛, рддрджрдиреБрд╕рд╛рд░, рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реБрдИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдореБрдЭреЗ mysql рдореЗрдВ cdr'ki рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдпрд╛ рд╕рд╛рдереА рдХреЗ рдлрд╝реЛрди рдкрд░ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдлрд╝реЛрди рдирдВрдмрд░ рдЦреЛрдЬрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рдереА рдХреЛ рдЯреЗрд▓реАрдлреЛрди рдкрд░ рдХреЙрд▓ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЖрд╕рд╛рди рддрд░реАрдХреЗ рдирд╣реАрдВ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ: рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдкрд░ рдПрдХ рдкреАрдмреАрдПрдХреНрд╕ (рд╕рдВрд╕реНрдХрд░рдг = 1.8.15.1), рдЬреИрдмрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЙрд▓ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЙрд▓ рдкрд┐рдХрдЕрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдЗрдВрдЯрд░рдиреЗрдЯ рдореЗрдВ рдЬреИрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред
рдЖрдЗрдП рдореИрд╕реВрд░рд▓ (рд╕рдВрд╕реНрдХрд░рдг = рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг: 5.5.31-0 + wheezy1 (рдбреЗрдмрд┐рдпрди)) рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, 2 рдкрд┐рдХрдЕрдк_рдореЗрд╕реЗрдЬ рдФрд░ рдкрд┐рдХрдЕрдк_рдЧреНрд░реБрдк рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВред
рдкрд┐рдХрдЕрдк_рдореЗрд╕реЗрдЬ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 2 рдХреЙрд▓рдо рд╣реЛрдВрдЧреЗ pg_id рдФрд░ рд╕рдВрджреЗрд╢:
pg_id - Asterisk рдореЗрдВ id рдкрд┐рдХрдЕрдк рд╕рдореВрд╣;
рд╕рдВрджреЗрд╢ - рдлрд╝реАрд▓реНрдб рдЬрд╣рд╛рдВ рд╕реВрдЪрдирд╛рдПрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рдПрдВрдЧреА;
mysql> CREATE TABLE pickup_message -> (pg_id smallint unsigned,
Pg_id рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП SMALLINT рдФрд░ UNSIGNED рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рдХреЗрд╡рд▓ рдЫреЛрдЯреЗ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
-> message varchar(128), -> CONSTRAINT pk_pg_id PRIMARY KEY (pg_id)
Pg_id рдХреЙрд▓рдо рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЕрдирдиреНрдп рд░рд┐рдХреЙрд░реНрдб рд╣реЛрдВрдЧреЗ, рдФрд░ рдХреЙрд▓рдо 2 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
-> ); Query OK, 0 rows affected (0.09 sec)
рдкрд┐рдХрдЕрдк_рдЧреНрд░реБрдк рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирдВрдмрд░ (рд╕рд╣рдХрд░реНрдореА) рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рд░реЛрдзрди рд╕рдореВрд╣ (pg_id) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
2 рдЯреЗрдмрд▓реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП FOREIGN KEY () рдФрд░ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВред
mysql> CREATE TABLE pickup_group -> (pg_id SMALLINT UNSIGNED, -> peer SMALLINT UNSIGNED, -> CONSTRAINT fk_pg_id FOREIGN KEY (pg_id) -> REFERENCES pickup_message (pg_id) -> ); Query OK, 0 rows affected (0.08 sec)
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА, рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рд╕рдореВрд╣ 1, рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЦреНрдпрд╛ 309 рдФрд░ 373 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рднрд░рддреЗ рд╣реИрдВ:
mysql> insert into pickup_message values (1, NULL); Query OK, 1 row affected (0.05 sec) mysql> insert into pickup_group values (1, 309); Query OK, 1 row affected (0.06 sec) mysql> insert into pickup_group values (1, 373); Query OK, 1 row affected (0.04 sec) mysql> select * from pickup_message; +-------+---------+ | pg_id | message | +-------+---------+ | 1 | NULL | | 33 | NULL | +-------+---------+ 2 rows in set (0.00 sec) mysql> select * from pickup_group; +-------+------+ | pg_id | peer | +-------+------+ | 1 | 309 | | 1 | 373 | +-------+------+ 2 rows in set (0.00 sec)
рддрд╛рд░рд╛рдВрдХрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ, Extension.conf рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
exten => _ZXX,1,Macro(jabb-personal-pickup,${EXTEN}) same => n,Dial(SIP/${EXTEN},120,t) same => n,Hangup
рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ (рдПрдХ рдЪрд░ $ {ARG1}, рдЬреЛ рдирдВрдмрд░ рдбрд╛рдпрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдореИрдХреНрд░реЛ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:
[macro-jabb-personal-pickup] exten => s,1,Set(text= ${CALLERID(number)}) same => n,MYSQL(Connect connid 127.0.0.1 root PASSWORD asteriskcdrdb) same => n,MYSQL(Query resultid ${connid} select pickup_message.pg_id from pickup_message inner join pickup_group where peer = '${ARG1}';) ; # same => n,MYSQL(Fetch fetchid ${resultid} pg_id) same => n,GotoIf($["${fetchid}"="1"]?yes:no) same => n(yes),MYSQL(Query resultid ${connid} update pickup_message set message ='${text}' where pg_id = '${pg_id}') ; # , message text same => n(no),MYSQL(Clear ${resultid}) same => n,MYSQL(Query resultid ${connid} select jabb_id from jabber where number=${ARG1}) same => n,MYSQL(Fetch fetchid ${resultid} jabb_id) same => n,GotoIf($["${fetchid}"="1"]?ok:bad) same => n(ok),JabberSend(asterisk,${jabb_id},${text}) same => n(bad),MYSQL(Clear ${resultid}) same => n,MYSQL(Disconnect ${connid})
] [macro-jabb-personal-pickup] exten => s,1,Set(text= ${CALLERID(number)}) same => n,MYSQL(Connect connid 127.0.0.1 root PASSWORD asteriskcdrdb) same => n,MYSQL(Query resultid ${connid} select pickup_message.pg_id from pickup_message inner join pickup_group where peer = '${ARG1}';) ; # same => n,MYSQL(Fetch fetchid ${resultid} pg_id) same => n,GotoIf($["${fetchid}"="1"]?yes:no) same => n(yes),MYSQL(Query resultid ${connid} update pickup_message set message ='${text}' where pg_id = '${pg_id}') ; # , message text same => n(no),MYSQL(Clear ${resultid}) same => n,MYSQL(Query resultid ${connid} select jabb_id from jabber where number=${ARG1}) same => n,MYSQL(Fetch fetchid ${resultid} jabb_id) same => n,GotoIf($["${fetchid}"="1"]?ok:bad) same => n(ok),JabberSend(asterisk,${jabb_id},${text}) same => n(bad),MYSQL(Clear ${resultid}) same => n,MYSQL(Disconnect ${connid})
рдФрд░ рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрджрд░реНрдн (* 8)ред рдпрд╣рд╛рдВ рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдпрд╛рдиреА рдПрдХ рдЖрдВрддрд░рд┐рдХ рдирдВрдмрд░ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рдХреЙрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдореВрд╣ рд╕реЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрд╡рд░реЛрдзрди рд╕реЗ рд╣рдо рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗрддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
exten => *8,1,NoOp(pickup) same => n,MYSQL(Connect connid 127.0.0.1 root PASSWORD asteriskcdrdb) same => n,MYSQL(Query resultid ${connid} select pickup_message.message from pickup_message inner join pickup_group where peer = ${CALLERID(number)}) ; # same => n,MYSQL(Fetch fetchid ${resultid} message) same => n,GotoIf($["${fetchid}"="1"]?message:no) ; # same => n(message),Set(text= . ${message}) ;# text same => n,MYSQL(Clear ${resultid}) same => n,MYSQL(Query resultid ${connid} select jabb_id from jabber where number=${CALLERID(number)}) ;# id jabber peer'a, .. same => n,MYSQL(Fetch fetchid ${resultid} jabb_id) same => n,GotoIf($["${fetchid}"="1"]?yes:no) ; # same => n(yes),JabberSend(asterisk,${jabb_id},${text}) same => n(no),MYSQL(Clear ${resultid}) same => n,MYSQL(Query resultid ${connid} update pickup_message set message ='NULL' where message = '${message}') same => n,MYSQL(Disconnect ${connid}) same => n,PickUP()
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬрдм рдХрд┐рд╕реА рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдЬреИрдмрд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ:
[15:09:07] <Office Manager> . . 302 [15:12:08] <Office Manager> . . 226 [15:25:47] <Office Manager> . . 106 [15:32:40] <Office Manager> . 116
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред