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

Как передать сам контекст в 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

Типа так :)

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

спросил 2012-04-29 20:19:57 +0400

Saimson Gravatar Saimson
39 3 1 7

обновил 2012-04-29 20:27:26 +0400

3 Ответа

3

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

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

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

ответил 2012-04-29 21:26:45 +0400

komrad123 Gravatar komrad123
3780 5 3 42

обновил 2012-04-29 21:27:11 +0400

Comments

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

Saimson ( 2012-04-29 22:02:20 +0400 )редактировать

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

Saimson ( 2012-04-29 22:03:57 +0400 )редактировать

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

komrad123 ( 2012-04-29 22:26:05 +0400 )редактировать

ну если я правильно понял, мне допустим надо проиграть два файла 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 ( 2012-04-29 23:59:02 +0400 )редактировать

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

Saimson ( 2012-04-30 00:02:41 +0400 )редактировать
1

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

zzuz ( 2012-04-30 00:45:50 +0400 )редактировать
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 диалплан и читать все из базы.

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

ответил 2012-04-30 00:09:51 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

обновил 2012-04-30 00:14:02 +0400

Comments

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

Saimson ( 2012-04-30 00:53:06 +0400 )редактировать

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

meral ( 2012-04-30 01:54:56 +0400 )редактировать

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

Saimson ( 2012-04-30 11:54:56 +0400 )редактировать

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

Saimson ( 2012-04-30 23:06:00 +0400 )редактировать

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

meral ( 2012-05-01 01:27:02 +0400 )редактировать
1

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

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

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

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

ответил 2012-05-02 10:42:58 +0400

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

обновил 2012-05-03 13:11:38 +0400

Comments

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

meral ( 2012-05-02 16:01:55 +0400 )редактировать

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

komrad123 ( 2012-05-02 16:30:59 +0400 )редактировать

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

meral ( 2012-05-02 16:51:36 +0400 )редактировать

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

Злобный Мыш ( 2012-05-03 11:06:59 +0400 )редактировать

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

meral ( 2012-05-03 12:52:20 +0400 )редактировать

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

Злобный Мыш ( 2012-05-03 13:09:49 +0400 )редактировать

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

meral ( 2012-05-03 13:17:39 +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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2012-04-29 20:19:57 +0400

Просмотрен: 1,107 раз

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

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