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)