Fedora14 x8664 ядро сам не компилировал. Самостоятельно скомпилирован asterisk и модуль chandatacard. При звонках с SIP на SIP все отлично, качество идеальное.
Проблема #1: Когда поступает звонок на модем он поступает в очередь и перенаправляется SIP агентам. Не играет музыка дозванивающемуся (при звонках с SIP на SIP внутри сервера все работает) и в консоли астериска пишет:
-- Started music on hold, class 'default', on Datacard/datacard0-d06a == Begin MixMonitor Recording Datacard/datacard0-d06a [Nov 24 12:58:10] WARNING[6588]: translate.c:93 powerof: No bits set? 0 [Nov 24 12:58:10] WARNING[6588]: translate.c:246 ast_translator_build_path: No translator path: (starting codec is not valid) [Nov 24 12:58:10] WARNING[6588]: slinfactory.c:96 ast_slinfactory_feed: Cannot build a path from unknown to slin == Using SIP RTP CoS mark 5 == Using SIP RTP CoS mark 5 -- SIP/300-00000001 connected line has changed. Saving it until answer for Datacard/datacard0-d06a -- SIP/200-00000000 connected line has changed. Saving it until answer for Datacard/datacard0-d06a -- SIP/200-00000000 is ringing -- SIP/300-00000001 is ringing -- SIP/300-00000001 connected line has changed. Saving it until answer for Datacard/datacard0-d06a -- SIP/300-00000001 answered Datacard/datacard0-d06a [Nov 24 12:58:16] WARNING[6588]: __channel.c:887 channel_indicate: [datacard0] Don't know how to indicate condition 22 -- Stopped music on hold on Datacard/datacard0-d06a
Подозреваю что дело в кодеках...
Проблема #2: SIP клиент поднимает трубку, друг друга слышно, но качество просто ужасное. Шум и хрипение и у одного и у другого. В это время идет запись разговора. На записи качество отличное, но голос звонящего через datacard слышно очень тихо.
Может кто сталкивался с данными проблемами... Больше на самом деле волнует вторая проблема. Без музыки прожить можно, а говорить с такими помехами просто невозможно...
Вот собственно говоря конфиги:
[root@linuxgear ~]# uname -a Linux linuxgear 2.6.35.14-103.fc14.x86_64 #1 SMP Thu Oct 27 15:41:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
sip.conf:
[general] bindaddr=0.0.0.0 bindport=5060 limitonpeers = yes mohinterpret=default
queues.conf:
[support] music=default strategy = ringall member => SIP/200 member => SIP/300 mohsuggest=default [300] type=friend secret=1234 nat=yes host=dynamic username=300 dtmfmode=rfc2833 disallow=all allow=gsm allow=ulaw allow=alaw context=mobile callerid=300 call-limit=1 [200] type=friend secret=1234 nat=yes host=dynamic username=200 dtmfmode=rfc2833 disallow=all allow=gsm allow=ulaw allow=alaw context=mobile callerid=200 call-limit=1
datacard.conf:
[datacard0] audio=/dev/ttyUSB1 ; tty for audio connection data=/dev/ttyUSB2 ; tty for AT commands context=datacard-incoming ; context for incoming calls group=1 ; calling group rxgain=3 ; increase the incoming volume txgain=3 ; increase the outgoint volume
extensions.conf:
[datacard-incoming] exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS}) exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt) exten => sms,n,Hangup() exten => ussd,1,Verbose(Incoming USSD: ${USSD}) exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt) exten => ussd,n,Hangup() ;exten => s,1,Dial(SIP/300,10) ;exten => s,n,Dial(SIP/200,10) ;exten => s,1,Playback() ;exten => s,1,Answer() exten => s,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d.%H-%M)}-${CALLERID(number)}-${EXTEN} exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav) exten => s,n,Queue(support,t,,) exten => s,n,Playback(vm-nobodyavail) exten => s,n,Hangup() [mobile] exten => _X.,1,Dial(Datacard/datacard0/${EXTEN}) exten => 300,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d.%H-%M)}-${CALLERID(number)}-${EXTEN} exten => 300,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav) exten => 300,n,Dial(SIP/300,,m) exten => 200,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d.%H-%M)}-${CALLERID(number)}-${EXTEN} exten => 200,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav) exten => 200,n,Dial(SIP/200,,m) exten => 400,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d.%H-%M)}-${CALLERID(number)}-${EXTEN} exten => 400,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav) exten => 400,n,Dial(SIP/400,,m)
Если что-то требуется добавить из конфигов, или дополнить - напишу.
Музыку пытаюсь проигрывать так:
musiconhold.conf:
[general] [default] mode=files directory=moh
queues.conf:
[support] music=default strategy = ringall member => SIP/200 member => SIP/300 [root@linuxgear asterisk]# ls /var/lib/asterisk/moh/ CHANGES-asterisk-moh-opsound-wav LICENSE-asterisk-moh-opsound-wav manolo_camp-morning_coffee.wav reno_project-system.wav CREDITS-asterisk-moh-opsound-wav macroform-cold_day.wav music
При звонках с SIP на SIP пишу прям в extensions.conf:
exten => 300,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d.%H-%M)}-${CALLERID(number)}-${EXTEN} exten => 300,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav) exten => 300,n,Dial(SIP/300,,m)