mysql> CREATE TABLE pickup_message -> (pg_id smallint unsigned,
-> message varchar(128), -> CONSTRAINT pk_pg_id PRIMARY KEY (pg_id)
-> ); Query OK, 0 rows affected (0.09 sec)
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)
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)
exten => _ZXX,1,Macro(jabb-personal-pickup,${EXTEN}) same => n,Dial(SIP/${EXTEN},120,t) same => n,Hangup
[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})
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
Source: https://habr.com/ru/post/225837/
All Articles