First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

asterisk macro-auto-blkvm set variable

0

Добрый день!

Необходимо в macro-auto-blkvm определить переменную, которая далее будет доступна в последующих контекстах и макросах.

Пробую так:

[macro-auto-blkvm]
include
=> macro-auto-blkvm-custom
exten
=> s,1,Set(__MACRO_RESULT=)
exten
=> s,n,Noop(===>>>> ANSWER RING <<<<===)
exten
=> s,n,Set(__MYNEWVAR=${STRFTIME(${EPOCH},,%F %T)})

но не вижу ${MYNEWVAR} в других контекстах и в макросах, например в macro-hangupcall. Если делать через GLOBAL то проходит, но по логике так нельзя.

спросил Mar 15 '18

rukit Gravatar rukit
85 9 5

обновил Mar 15 '18

1 Ответ

1

Если после этого контекста есть Dial local , то переменная теряется из области видимости следующего канала, для которого скорее всего и запускается один из macro-hangupcall .

Используйте функции SHARED() и IMPORT() для передачи межканальных переменных.

ссылка удалить спам редактировать

ответил Mar 15 '18

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

а еще можно в базу встроенную писать и читать от туда

awsswa (Mar 15 '18)edit

конечно можно. вопрос всегда в затратах. если речь идет о небольшом куску кода в одной двумя переменными , то это не всегда целесообразно.

zzuz (Mar 15 '18)edit

если использовать встроенную бд, при условии что одновременных звонков может быть много, данные будут пересекаться? или они независимы от каналов?

rukit (Mar 15 '18)edit

нужно прокинуть только 1 переменную. в двух словах ситуация такая: приходит входящий звонок, на него сразу идет ансвер и проигрывается реплика приветствия, одновременно идет исход на ринггруппу. и нам нужно отловить dt_answer, кто/когда поднял трубку из ринггруппы

rukit (Mar 15 '18)edit

Направление вам задали. Вооружайтесь DumpChan и все получится.

zzuz (Mar 15 '18)edit

данные будут писаться так как вы задумали - хотите будут пересекаться, хотите, не будут. У меня не пересекаюся

awsswa (Mar 16 '18)edit

а почему, ксттаи, теряется? я так передаю в локал и уменя все работает. там же два подчеркивания.

meral (Mar 16 '18)edit

хотя если передать наверх, то надо передать ВНИЗ CHANNEL_NAME и использовать SHARED.

meral (Mar 16 '18)edit

записали переменную с нужным каналов в контексте:

[from-pstn-custom]

exten => .,n,Set(CURCHANNEL=${CHANNEL})

далее в макросе создаем нужную нам переменную и делаем шаред в ранее определенный канал

exten => s,n,Set(SHARED(MANAGERANSWDATE,${CUR_CHANNEL})=${STRFTIME(${EPOCH},,%F %T)})

пытаемся словить ее ниже в

[macro-hangupcall]

exten => s,n,Noop(>>>>> VALUE_manager: ${MANAGERANSWDATE})

не видит. но каналы совпадают, должно работать.

rukit (Mar 19 '18)edit

просто надо принимать правильно:

${SHARED(MANAGERANSWDATE,${CUR_CHANNEL})}

Все получилось, всем спасибо!

rukit (Mar 19 '18)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Mar 15 '18

Просмотрен: 606 раз

Обновлен: Mar 15 '18

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.