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

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 то проходит, но по логике так нельзя.

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

спросил 2018-03-15 10:17:25 +0400

rukit Gravatar rukit
85 9 5

обновил 2018-03-15 10:17:59 +0400

1 Ответ

1

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

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

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

ответил 2018-03-15 11:41:03 +0400

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

Comments

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

awsswa ( 2018-03-15 14:44:36 +0400 )редактировать

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

zzuz ( 2018-03-15 14:48:42 +0400 )редактировать

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

rukit ( 2018-03-15 21:42:06 +0400 )редактировать

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

rukit ( 2018-03-15 21:44:19 +0400 )редактировать

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

zzuz ( 2018-03-16 01:08:53 +0400 )редактировать

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

awsswa ( 2018-03-16 08:07:09 +0400 )редактировать

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

meral ( 2018-03-16 20:57:09 +0400 )редактировать

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

meral ( 2018-03-16 20:58:34 +0400 )редактировать

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

[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 ( 2018-03-19 09:35:14 +0400 )редактировать

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

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

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

rukit ( 2018-03-19 10:04:28 +0400 )редактировать

Ваш ответ

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 ленту новостей

Статистика

Задан: 2018-03-15 10:17:25 +0400

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

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

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