VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

dtmf в текст

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ping333
Сообщения: 18
Зарегистрирован: 14 май 2012, 06:24
Контактная информация:

dtmf в текст

Сообщение Ping333 »

Добрый день!
Уважаемые подскажите как реализовать такую штуку...
Есть астер 1.8 на ubuntu связан с avaya по Н323, с lync по SIP...вебморд и тп нет, все только из консоли. С астером,линуксом знаком неделю.
Все настраивал по документом и т.п.,в принципе все работает.
Есть одна проблема, настроена конференция на meetme, с помощью call файлов. Ежедневно в определенное время, call файлы генерятся и отрабатыватся, в итоге 20 абонентов находятся в одной конференции. Необходимо что бы абонент мог присоединить еще абонентов путем набора на телефоне номера, и вернуться в конференцию. Вообщем необходимо что бы какимто образом DTMF сигналы както сохранить в call файл и положить астеру на обработку в /outgoing
часть кода.

[conferens]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,MeetMe(500,1MAsxX)
exten => 1,1,NoOp("нажата 1") ;нажали 1
exten => 1,n,Goto(call_file,s,1) ;
exten => 2,1,NoOp("нажата 2") ;нажали 2
[call_file]
exten => s,1,Read(Digits,dial-exten,3) ; записали DTMF в Digits
# /usr/share/asterisk/agi-bin/call.agi
exten => s,1,Noop(------call file create-----)
exten => s,n,AGI(call.agi); тут думаю необходимо запускать какой то скрипт и что то еще, чтоб DTMF сохранить в call файл.
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: dtmf в текст

Сообщение Sfinx »

Call file это довольно ущербный вариант, так как дефолтными средствами нельзя определить - закончилась операция успехом или нет (архитектор этой подсистемы в aster'е явный идиот). Так что ниже решение для бедных :

Создаем нехитрый скрипт gen_call_file.sh :

.................
#!/bin/sh
....
echo "Channel: SIP/$1" >> /tmp/call_file
....
mv /tmp/call_file /var/spool/asterisk/outgoing
..................

А в dialplan вставляем :

[call_file]
exten => s,1,Read(Digits,dial-exten,3) ; записали DTMF в Digits
exten => s,n,System(/path/gen_call_file.sh ${Digits})
....
Rus

-----------
SfinxSoft
http://sfinxsoft.com
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: dtmf в текст

Сообщение Vlad1983 »

дополнительно
http://asteriskforum.ru/viewtopic.php?t=7246
пост от B0r1s
ЛС: @rostel
pan-user
Сообщения: 128
Зарегистрирован: 24 мар 2011, 13:40

Re: dtmf в текст

Сообщение pan-user »

Sfinx писал(а):Call file это довольно ущербный вариант, так как дефолтными средствами нельзя определить - закончилась операция успехом или нет
мусье не знает про exten failed

?
Ping333
Сообщения: 18
Зарегистрирован: 14 май 2012, 06:24
Контактная информация:

Re: dtmf в текст

Сообщение Ping333 »

Спасибо! Работает. Скрипт получился такой

#!/bin/bash
cat <<EOF > /var/spool/asterisk/tmp/$1
Channel: Local/$1
Callerid: Conferens_ROOM
MaxRetries: 4
RetryTime: 30
WaitTime: 10
Context: conf_dir
Extension: s
Priority: 1
Archive: yes

EOF
chown asterisk:asterisk /var/spool/asterisk/tmp/$1
mv /var/spool/asterisk/tmp/$1 /var/spool/asterisk/outgoing/$1


Всем спасибо, как раз то что надо..
Тема закрыта.
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: dtmf в текст

Сообщение Sfinx »

pan-user писал(а):
Sfinx писал(а):Call file это довольно ущербный вариант, так как дефолтными средствами нельзя определить - закончилась операция успехом или нет
мусье не знает про exten failed

?
мусье, явно не читатель: failed - это не успех. А тот кто писал pbx_spool.c не подумал о том что неплохо бы reason куда-то записывать ...
Rus

-----------
SfinxSoft
http://sfinxsoft.com
pan-user
Сообщения: 128
Зарегистрирован: 24 мар 2011, 13:40

Re: dtmf в текст

Сообщение pan-user »

мусье, явно не читатель: failed - это не успех.
я заметел, что мусье не читатель.
закончилась операция успехом или нет
failed == или нет
не failed == успехом.

тот кто писал pbx_spool буквари похоже читал в отличии ОТ, ибо reason там таки есть, и вполне себе ловится из failed.

Код: Выделить всё

    my $rc = $obj->agi_var( 'REASON' );

    my %reasons = ( 0 => 'failed',
                    1 => 'hung up',
                    3 => 'ring timeout',
                    5 => 'busy',
                    8 => 'congestion' );
Аватара пользователя
Sfinx
Сообщения: 672
Зарегистрирован: 21 июн 2011, 23:40
Откуда: Odessa
Контактная информация:

Re: dtmf в текст

Сообщение Sfinx »

я заметел, что мусье не читатель.
Кого заметел ? Куда залетел ? Или может замел ?

Ну что бы прослыть читателем, следует как минимум ясно уметь читать и вдумываться в прочитанное. Тот кто писал pbx_spool - тоже писатель, и совсем не читатель. Принцип корректной архитектуры - это взаимодействие слабо-связанных систем, чего не наблюдается в реализации call файлов. Если ошибки от системы обзвона приходится искать и ловить где угодно, но только не в самой системе обзвона, то это ясно указывает на главную ошибку - в ДНК. А reason, таки-да ловится где угодно, но только не в pbx_spool (hint: use the source luke) - предполагается что его будут ловить с _той_ стороны. С какого бодуна разработчик так решил - мне до сих пор непонятно.
Rus

-----------
SfinxSoft
http://sfinxsoft.com
pan-user
Сообщения: 128
Зарегистрирован: 24 мар 2011, 13:40

Re: dtmf в текст

Сообщение pan-user »

зачем их ловить в pbx_spool если обрабатывать их надо снаружи ? оно делает звонок ии всё, что с ним делать дальше не его забота.
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: dtmf в текст

Сообщение Aven »

+1 pan-user
Ищете проблему на ровном месте.
Решения телефонии на базе Asterisk || http://it-need.ru
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH