в общем я в макросе [macro-zvon-db-blkvm], выполняю определенное действие когда трубка поднимается. Потом когда звонок заканчивается и оператор кладет трубку, вызывается из конткста from-internal, другой макрос в которо должны производлится проверка данной переменной, если она равна 0 значит выполняется специальное действие, если 1 то звонок хангапится. Вот такая логика, мне эту переменную надо обязательно из диалплана брать, в БД вообще не вариат засовывать, также использовать глобальные переменные нельзя. Asterisk 1.8.12.0
romariosar ( 2012-08-06 16:39:55 +0400 )редактироватьаа, тоесть таки макрос в Диале/Очереди. тогда так не прокатит ибо они на разных каналах выполняются. К тому что посоветовал meral еще SHARED можно добавить.
komrad123 ( 2012-08-06 16:54:43 +0400 )редактироватьс помощью Shared как передать переменную, можно пример, а то я чет нагeглил но никак не допру.
romariosar ( 2012-08-06 16:56:22 +0400 )редактироватькак то так:
[macro-blegvars]
exten => s,1,Set(SHARED(bsipcallid,${LEGA})=${SIPCALLID})
exten => s,n,Set(SHARED(bcodec,${LEGA})=${CHANNEL(audionativeformat)})
exten => s,n,Set(SHARED(bnoncodec,${LEGA})=${PEER_NONCODECCAPABILITY})
komrad123 ( 2012-08-06 17:05:20 +0400 )редактироватьа там както надо канал же указывать куда я хоче передать это переменную. В товем случае я из другого макроса могу запросить переменную LEGA?
romariosar ( 2012-08-06 17:16:27 +0400 )редактироватьу меня в начале звонка
Set(_LEGA=${CHANNEL}) ( с двумя _ )
komrad123 ( 2012-08-06 17:33:00 +0400 )редактироватьMeral дал самый верный вариант: ${DB(/path/something)}
"мне эту переменную надо обязательно из диалплана брать, в БД вообще не вариат засовывать"
А ты и бери эту переменную из ДиалПлана - просто в одном месте диалплана засовываеш, а в другом высовываеш :)
varnar ( 2012-08-07 06:42:51 +0400 )редактироватьмне это переменную именно к моему звонку нужно привязывать, если с БД работать то нужно еще идентификатор звонка отлавливать.
romariosar ( 2012-08-07 11:50:56 +0400 )редактировать