First time here? Check out the FAQ!

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

Как передать сам контекст в extension.conf через call файл?

2

Добрый день, такой вопрос, стоит задача при автоматическом звонке клиенту проиграть свой wav звук, для каждого клиента свой. Я этот вопрос решил так: в extension.conf вручную для каждого клиента создавал свой диалплан

[client_219]
exten
=> 10,1,Answer()
exten
=> 10,n,Wait(2)
exten
=> 10,n,Playback(custom/1)
exten
=> 10,n,Playback(custom/2)
exten
=> 10,n,Playback(custom/5)
exten
=> 10,n,Wait(1)
exten
=> 10,n,Hangup()

[client_220]
exten
=> 10,1,Answer()
exten
=> 10,n,Wait(2)
exten
=> 10,n,Playback(custom/5)
exten
=> 10,n,Playback(custom/5)
exten
=> 10,n,Playback(custom/1)
exten
=> 10,n,Wait(1)
exten
=> 10,n,Hangup()

и передавал asterisk call файл на выполнения того или иного диалплана,

Channel: Dongle/dongle1/??????????
MaxRetries: 3
RetryTime: 50
Context: client_219
Extension: 10

Стоит вопрос, можно ли как-то передавать уже сгенерированный контекст через call фаил? к примеру:

Channel: Dongle/dongle1/??????????
MaxRetries: 3
RetryTime: 50
Context:
exten
=> 10,1,Answer()
exten
=> 10,n,Wait(2)
exten
=> 10,n,Playback(custom/5)
exten
=> 10,n,Playback(custom/5)
exten
=> 10,n,Playback(custom/1)
exten
=> 10,n,Wait(1)
exten
=> 10,n,Hangup()
Extension: 10

Типа так :)

спросил Apr 29 '12

Saimson Gravatar Saimson
39 3 2 7

обновил Apr 29 '12

3 Ответа

3

контекст не получится, имена файлов получится: Setvar: file1=1222 Setvar: file2=1111

и потом из общего контекста ппроговаривать

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

ответил Apr 29 '12

komrad123 Gravatar komrad123
3810 5 3 44

обновил Apr 29 '12

Comments

Разложи пожалуйста поподробней ... что куда и как?

Saimson (Apr 29 '12)edit

Ну мне тогда всеравно нужно в extension.conf для каждого клиента свой диалплан писать? Если я тебя правильно понял?

Saimson (Apr 29 '12)edit

Диалплан один, но в playback вместо статических файлов запихивать значения переменных. Playback($file1) и тд.

komrad123 (Apr 29 '12)edit

ну если я правильно понял, мне допустим надо проиграть два файла 1.wav и 2.wav я им присваиваю переменную ($file1) ($file2) и передаю call-файлом

Channel: Dongle/dongle1/063???????

MaxRetries: 3

RetryTime: 50

Context: call-file

Extension: 10

Set: file1=1: file2=2

А какой тогда будет диалплан в extension.conf ?

Мне же нужно чтобы для каждого клиента свои звуки ....

Saimson (Apr 29 '12)edit

Напиши пожалуйста с примером чтото немогу вьехать ....

Saimson (Apr 29 '12)edit
1

Лекции нахяляву - такая халява. Всегда мечтал.

zzuz (Apr 29 '12)edit
1

правильно както так

[client_ALL]
exten
=> 10,1,Answer()
exten
=> 10,n,Wait(2)
exten
=> 10,n,Playback(${files})
exten
=> 10,n,Wait(1)
exten
=> 10,n,Hangup()

файлик

Channel: Dongle/dongle1/063???????
MaxRetries: 3
RetryTime: 50
Context: client_all

Extension: 10
Set: files=custom/5&custom/2&custom/1
Set: someother_variable=1

тут вторая переменная введена чтоб вы понимали синтаксис. а файлики можно играть одной командой playback вписав имена файлов через & знак.

еще можно аж вот так, но это бред

Set: command1=Answer
Set: arg1=

exten
=> 10,1,${command1}($arg1)

а самое правильное делать просто realtime диалплан и читать все из базы.

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

ответил Apr 29 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил Apr 29 '12

Comments

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

Saimson (Apr 29 '12)edit

нинадо ничего ребутить. ну в чем проблема? я вам фразу для поиска дал? вы хотите примеры чтоли? http://voip.rus.net/tiki-index.php?page=Asterisk+Realtime+Extensions

meral (Apr 29 '12)edit

Все разобрался, спасибо за ответ :)

Saimson (Apr 30 '12)edit

meral, немогу понять почему при таком вводе проигрывает только первые два? Set: files=custom/1&custom/2&custom/gold$custom/0$custom/9$custom/2 в чем я ошибся? или какой должен быть синтаксис чтобы * проиграл 9 звуковых файлов?

Saimson (Apr 30 '12)edit

ну во первых у вас вместо & стоит $ дальше.а во вторых смотрите как то что вы передали выполняется. asterisk -vvvr и смотрите.

meral (Apr 30 '12)edit
1

А почему не сделать вот так?

Channel: SIP/$line
CallerID: AutoDial
MaxRetries: 2
RetryTime: 600
WaitTime: 20
Application: Playback
Data: $dialwavfile
Archive: yes

И генерить файлики скриптом? У меня так и сделано. нано-вебморда, в ней заливается файлик, вводится список телефонов, жмакается кнопка и запускается скрипт, он создает колл файлы для всех номеров что в списке, и подсовывает их астериску по мере выполнения(скрипту же и подсовывается файлик для воспроизведения). Запускать можно сколько угодно раз, ибо файлику и коллфайлам присваиваются уникальные имена. При этом в диалплане вообще ничего редактировать не надо. Слить файлики в один тоже можно скриптом к примеру sox это умеет, емнип, или заранее вручную.

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

ответил May 2 '12

Злобный Мыш Gravatar Злобный Мыш
292 13 5 16

обновил May 3 '12

Comments

потомучто астриск в следующих версиях вполне вправе проверить есть ли application в списке. и ваш хак пеерстанет рабоать. он не соответвует спецификации.

meral (May 2 '12)edit

для Application есть еще Data в который $dialwavfile надо пихать, так что это похоже на очепятку.

komrad123 (May 2 '12)edit

да нет. так тоже работает;) в 1.4. а в 1.8 кажися нет.

meral (May 2 '12)edit

1.8.7 все работает. Не понял немного про проверку "application в списке" в том смысле умеет ли астер такое вообще делать? Плюс как то странно вводить функционал в колл файлах который не соответствует спецификации. Но вообще конечно не претендую на идеальное решение, но мне показалось раздувать диалплан нежелательным.

Злобный Мыш (May 3 '12)edit

по спецификации он должен по этой строке сделать "core show application playback($dialwavfile)" и сказать что не может это сделать. пока он это Не делает.это не функционал. это незакрытая уязвимость. функционал это параметры писать после Data:

meral (May 3 '12)edit

А! Про это. Это я проверю, может просто опечатался, или ошибка вкралась. Скорей всего у меня там как раз поле data и есть. Я подумал про сам подход к реализации с указанием application не верен. Сча подредактирую пост чтобы не вводить в заблуждение.

Злобный Мыш (May 3 '12)edit

ну так можно.только у клиента дилплан отличается. тогда надо так silence/2&$dialwavfile&silence/2

meral (May 3 '12)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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: Apr 29 '12

Просмотрен: 2,517 раз

Обновлен: May 03 '12

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