A Tempo:
Depois de muitas vagabundagens de gente vendendo o que nosso amigo Giovanni Bosa deixou de graça, resolvi postar aqui para que fique fácil do pessoal achar a melhor referencia de chan_dongle brasileira
agradescendo ao grande amigo #Chokitopx.
Introdução
O chan_dongle é um channel driver por Asterisk utilizar modem Huawei UMTS/3G USB (datacard) como gateway de VOZ e SMS
Neste momento som compatíveis só os modem originais Huawei (ver requisitos) e os recursos suportados são:
- Chamadas de voz, discagem por nome do modem, grupos, round robin, nome da operadora, IMEI or IMSI.
- Chamada em pausa e espera
- Conferências
- Enviar SMS com CLI, asterisk manager e dialplan
- Receber SMS (caracteres latinos e multilinha)
- Enviar USSD
- Receber USSD (caracteres latinos e multilinha)
- Enviar DTMF (excluindo letras A,B,C,D por não ser suportadas pela Huawei)
- Receber DTMF
Requisitos e limitações
Nota: Alguns usuários relatam a qualidade de voz ruim usando Centos 5 (ex. Elastix). Então por favor, tenham cuidado com os kernels antigos.
Lista Modem testados no Brasil:
- E153
- E1550 Precisa ativar voz (Euro 4 DC-Unlocker)
- E156 Precisa instalar novo firmware- As vez precisa habilitar VOZ (Euro 4 DC-Unlocker)
- E160 Precisa instalar novo firmware – As vez precisa habilitar VOZ (Euro 4 DC-Unlocker)
- E173 Coitado funciona só com firmware 11.xx
- E303 Tem muitos firmwares diferentes, algum vem prontos e outros precisa ativar voz (Euro 4)
Alimentação USB
De acordo com as especificas do produtor os modem 3G utilizam 5V/500mA ou seja 2.5W máximos. Quase todo os computadores tem portas USB onde você; pode conectar dispositivos como Pen-Drives, Bluetooth, discos rígidos portáteis, etc. modems 3G também pode ser conectado, mas a fonte de energia (5V) pode ser uma limitação seria. Se o seu computador tem varias portas USB, você; deve verificar se sua placa mãe pode alimentar todo os seus dispositivos para trabalhar ao mesmo tempo. Normalmente, as portas USB podem entregar apenas 500 mA, por isso, se você; tiver mais de um modem (ou outros dispositivos) ligado, é possível ficar preso com problemas estranhos pois se conectar mais de um modem 3G os 500 mA de corrente não são mais suficientes. Neste caso, o utilizo de hub USB 2.0 com fonte auxiliar é recomendado para evitar um comportamento estranho. Tenham cuidado, não é qualquer modelo de HUB USB que preste por esta tarefa, alguns tens sérios problemas com interferências de RF do lado GSM, tornando impossível usar chan_dongle.
HUB USB: Importante o uso de HUB USB 2.0!
Preparação dos modem
Como desbloquear um modem?
Modems são frequentemente comprados a partir de operadoras de telefonia móvel e as vezes tem o bloqueio para impedir o uso de cartões SIM de outras operadoras ou tem o recurso de voz desativado ou não suportado..
Tem diferentes maneiras de desbloquear:
- Com o código de desbloqueio usando esta calculadora, uma vez que você; tem o código digite-o manualmente com programas como Putty, Terminal ou Minicom usando o comando
AT^CardLock = "code"
- Usando ferramentas como o dc-unlocker ou outra ferramenta semelhante (custo EUR4)
- Pedindo ajuda neste Forum
- Procurando em Google
Como atualizar o firmware?
A principal fonte de arquivos firmware estão em DC-Files. Você pode escolher o seu modelo e baixar atualização de firmware (normalmente zip contendo o arquivo exe.). Para a atualização, precisa um computador windows (XP, Vista, 7, 8), o processo é muito simples, só executar o arquivo exe e siga as indicações.
Em algum caso o procedimento de atualização peça um código ‘Flash’ (senha), use sempre a calculadora para gerar o código ‘Flash’. Após o processo de atualização, execute o programa dc-unlocker para verificar se a voz é ativada.
Como verificar o recurso de voz?
Existe uma grande quantidade de diferentes modelos de Huawei. Principalmente são utilizados para trafegar dados de Internet, mas alguns são capazes de trafegar também a voz. Isto significa que se pode fazer chamadas utilizando o software compatível, pode baixar esta versão do Mobile Partner com recurso de voz para utilizar em sistemas Windows.
Para saber antes se o seu modem tem suporte a voz, você pode usar este sistemas:
- Software Dc-Unlocker – Baixar versão mais recente (somente para Windows) e verifique se o seu modem tem
- Encontre DDSETEX e sequencia CVOICE – Ir para http://www.dc-files.com, fazer download do firmware coreto para o seu modelo. Deve editar o arquivo .exe (use qualquer editor de texto como o Bloco de Notas ou nano) e procure DDSETEX e sequencia CVOICE. Se encontrados significa que o seu modem é capaz de voz.
- Pedindo ajuda neste Forum
- Procurando em Google
Como ativar o recurso de voz?
Se seu modem tem o recuso de voz desabilitado (Disabled) pode usar estes sistemas:
- Sempre utilizando o software DC-Unlocker e pagando 4 créditos (4 Euros)
- Tentando encontrar um firwmare, para o mesmo modelo, que tenha este recurso ativado de padrão
- Pedindo ajuda neste Forum
- Procurando em Google
Instalação Asterisk e Chan_Dongle
Quote
Quem quer instalar um sistema de teste completo com debian 7, Asterisk 11 e chan_dongle (atualizado e modificado por mim) pode seguir este trés tutoriais:
01 – Instalar Servidor Debian Wheezy 7.1.x
02 – Instalar Asterisk, Dahdi E Libpri
03 – Instalar Chan_Dongle No Asterisk 11Ao final terão um sistema minimo ‘já pronto’ para testar chan_dongle
Lembrando que este documento visa a tradução do Wiki original: Chan_dongle pode ser executado somente no Asterisk 1.6/1.8 e existe uma versão adaptada por Asterisk 11.x que não é oficial.
Pré-requisitos
Tenha cuidado com iptables e SELinux. Se necessário, edite o arquivo /etc/selinux/config verificando se:
SELINUX=disabled
SELINUXTYPE=targeted
Em seguida, desative iptables (ou configure iptables para permitir SIP e RTP):
iptables -F
iptables-save
/etc/iptables.up.rules
Atualize o sistema:
apt-get update
apt-get upgrade
Instalar pacotes necessários para a compilação de Asterisk:
apt-get install linux-headers-`uname -r` gcc g++ make libnewt-dev libncurses5-dev openssl libssl-dev zlib1g-dev
Instalar Asterisk
Baixar arquivos de origem (explicando só o Asterisk 1.8 (outras versões som similares):
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz
tar zxvf asterisk-1.8-current.tar.gz
cd asterisk-1.8
make clean
./configure --disable-xmldocs
make
make install
make config
Se necessário:
make samples
Instalar chan_dongle
Se você instalou o Asterisk como descrito vá em frente. Enfim, confira algumas dependências como automake e autoconf. Também deve dispor de fontes asterisco e ferramentas de desenvolvimento, como make, gcc e assim por diante.
Pacote compactado:
Baixar pacote em https://code.google.com/p/asterisk-chan-dongle/downloads
tar -zxvf chan_dongle_1.1.r14.tgz
cd chan_dongle_1.1
aclocal
autoconf
automake -a
Usando SVN:
svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ dongle-svn
cd dongle-svn
aclocal
autoconf
automake -a
Definir as opções de compilação:
./configure
--enable-debug
--disable-debug
--enable-manager
--disable-manager
--enable-apps
--disable-apps
--with-asterisk=/path_to_source/asterisk.h
variáveis de ambiente uteis:
DESTDIR
CFLAGS
LDFLAGS
Exemplos:
DESTDIR=”/usr/lib/asterisk/modules” ./configure
./configure –with-asterisk=/usr/src/asterisk-1.6.2.13/include
CFLAGS=”-I /usr/src/asterisk-1.6.2.13/include” ./configure
./configure --enable-debug
./configure --disable-apps --disable-manager
CFLAGS=”-O0 -g” ./configure
CFLAGS=”-Os” ./configure
Padrão:
./configure --disable-debug --enable-apps --enable-manager
DESTDIR busca nas pastas /usr/lib/asterisk/modules /usr/local/lib/asterisk/modules /opt/local/lib/asterisk/modules
asterisk.h busca nas pastas ../include /usr/include /usr/local/include /opt/local/include
Compilação:
make
make install
Configuração do modulo: copiar o arquivo dongle.conf em /etc/asterisk/, configurar como da manual e reinicializar Asterisk.
Comandos para carregar modulo:
CLI: module load chan_dongle.so
CLI: module unload chan_dongle.so
CLI: module reload chan_dongle.so
Configuração dongle.conf
Todas as informações necessárias por chan_dongle som armazenadas em /etc/asterisk/dongle.conf
dongle.conf original:
[general]
interval=15 ; Number of seconds between trying to connect to devices
;------------------------------ JITTER BUFFER CONFIGURATION --------------------------
;jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of a
; Dongle channel. Defaults to "no". An enabled jitterbuffer will
; be used only if the sending side can create and the receiving
; side can not accept jitter. The Dongle channel can't accept jitter,
; thus an enabled jitterbuffer on the receive Dongle side will always
; be used if the sending side can create jitter.
;jbforce = no ; Forces the use of a jitterbuffer on the receive side of a Dongle
; channel. Defaults to "no".
;jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
;jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
; resynchronized. Useful to improve the quality of the voice, with
; big jumps in/broken timestamps, usually sent from exotic devices
; and programs. Defaults to 1000.
;jbimpl = fixed ;Jitterbuffer implementation, used on the receiving side of a Dongle
; channel. Two implementations are currently available - "fixed"
; (with size always equals to jbmaxsize) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed.
;jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
; The option represents the number of milliseconds by which the new jitter buffer
; will pad its size. the default is 40, so without modification, the new
; jitter buffer will set its size to the jitter value plus 40 milliseconds.
; increasing this value may help if your network normally has low jitter,
; but occasionally has spikes.
;jblog = no ; Enables jitterbuffer frame logging. Defaults to "no".
;-----------------------------------------------------------------------------------
[defaults]
; now you can set here any not required device settings as template
; sure you can overwrite in any [device] section this default values
context=default ; context for incoming calls, SMS and USSD
group=0 ; calling group
rxgain=0 ; increase the incoming volume; may be negative
txgain=0 ; increase the outgoint volume; may be negative
autodeletesms=yes ; auto delete incoming sms
resetdongle=yes ; reset dongle during initialization with ATZ command
u2diag=-1 ; set ^U2DIAG parameter on device (0 = disable everything except modem function)
; -1 not use ^U2DIAG command
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation. By default use default network settings
; see http://www.the-asterisk-book.com/unstable/applikationen-setcallerpres.html
disablesms=no ; disable of SMS reading from device when received. Enable this option to disable
; sms reception. Use smsaspdu=yes to avoid problem when SMS is too long in TEXT mode.
smsaspdu=yes ; if 'yes' send SMS in PDU mode.
language=en ; set channel default language
mindtmfgap=45 ; minimal interval from end of previews DTMF from begining of next in ms
mindtmfduration=80 ; minimal DTMF tone duration in ms
mindtmfinterval=200 ; minimal interval between ends of DTMF of same digits in ms
callwaiting=auto ; if 'yes' allow incoming calls waiting; by default use network settings
; if 'no' waiting calls just ignored
disable=no ; if 'yes' no load this device and just ignore this section
exten=+1234567890 ; exten for start incoming calls, only in case of Subscriber Number not available!,
; also set to CALLERID(dnid)
dtmf=relax ; control of incoming DTMF detection, possible values:
; off - off DTMF tone detection, voice data passed to asterisk unaltered
;use this value for gateways or if you do not use IVR in diaplan
; inband - do DTMF tones detection
; relax - like inband but with relaxdtmf option
; default is 'relax' for backward compatibility
; dongle required settings
[dongle0]
audio=/dev/ttyUSB1 ; tty port for audio connection;
data=/dev/ttyUSB2 ; tty port for AT commands;
; or you can omit both audio and data parameters and use imei=123456789012345 and/or imsi=612849384756451
; imei and imsi must contain exactly 15 digits !
; imei/imsi discovery is available on Linux only
imei=123456789012345
imsi=612849384756451
; if you set audio and data parameter together with imei and/or imsi, audio and data is used.
; you can use both imei and imsi together. In this case exact match by imei and imsi is required.
Exemplos dialplan – extensions.conf
; this is chunks of Asterisk extensions.conf file for show some chan_dongle features
[general]
[dongle-incoming]
; example of ussd receive
exten => ussd,1,Set(type=${USSD_TYPE})
; values from 0 till 5
; 0 - USSD Notify
; 1 - USSD Request
; 2 - USSD Terminated by network
; 3 - Other local client has responded
; 4 - Operation not supported
; 5 - Network time out
exten => ussd,n,Set(typestr=${USSD_TYPE_STR})
; type in string, see above
exten => ussd,n,Set(ussd=${USSD})
; USSD text, but may be truncated by first \n
exten => ussd,n,Set(ussd_multiline=${BASE64_DECODE(${USSD_BASE64})})
; USSD text, may be multiline
; Note: this exten run in Local channel not attached to anything, also all CALLERID() is empty
; example of sms receive
exten => sms,1,Set(sms=${SMS})
; SMS text, but may be truncated by first \n
exten => sms,1,Set(sms_multiline=${BASE64_DECODE(${SMS_BASE64})})
; SMS text, may be multiline
; Note: this exten run in Local channel not attached to anything, also CALLERID(num) is address of SMS originator
; example of begining context execution from not default exten
exten => +12345678901,1,Verbose(This exten executed if Subscriber Number is available and equal +12345678901 or exten setting value is +12345678901)
; example of channel variables setting by chan_dongle
exten => s,1,Set(NAME_OF_DEVICE=${DONGLENAME})
; for example 'dongle0' or 'dongle1' see dongle.conf
exten => s,n,Set(NAME_OF_PROVIDE=${DONGLEPROVIDER})
; for example see output of cli 'dongle show devices' column "Provider Name"
exten => s,n,Set(IMEI_OF_DEVICE=${DONGLEIMEI})
; for example see output of cli 'dongle show devices' column "IMEI"
exten => s,n,Set(IMSI_OF_SIMCARD=${DONGLEIMSI})
; for example see output of cli 'dongle show devices' column "IMSI"
exten => s,n,Set(CNUM_NUMBER=${DONGLENUMBER})
; Subscriber Number example see output of cli 'dongle show devices' column "Number"
; may be empty, use for save in SIM commands AT+CPBS="ON" and AT+CPBW=1,"+123456789",145
exten => s,n,Set(CNUM_NUMBER=${CALLERID(dnid)})
; Set to Subscriber Number if available
; applications of chan_DONGLE
exten => s,n,DongleStatus(dongle0,DONGLE0_STATUS)
; get status of device and store result in variable
; possible values of ${DONGLE0_STATUS}
; -1 invalid argument
; 1 device not found
; 2 device connected
; 3 device connected and in use
exten => s,n,DongleSendSMS(dongle0, "+18004005422", Hello how are you, Danila?, 1440, yes)
; send SMS on selected device and to specified number
; device name of Dongle device
; destination number in International format with leading '+' or w/o leading '+'
; message maximum 70 UCS-2 symbols
; validity period in minutes, will be round up to nearest possible value, optional default is 3 days
; report request if true report for this SMS is required, optional default is not
; functions of chan_dongle
exten => s,n,GotoIf($["${CHANNEL(callstate)}" == "waiting"]?waiting-call)
; now we provide channel function argument callstate
; possible values
; active ; enjoy and speek
; held ; this call is held
; dialing ; for outgoing calls
; alerting ; for outgoing calls, number dialed and called party ringing
; incoming ; for incoming calls
; waiting ; for incoming waiting calls;
; if callwaiting=no channels for waiting calls never created
; initialize ; never appear
; released ; never appear
; Answer on waiting call activate this call and place any other active calls
; on hold, but execution of dialplan for these calls not break stopped or frozen
; When active call terminated one of held becomes active.
exten => s,n,Set(CHANNEL(callstate)=active)
; if callstate is 'held' you can assign new value 'active'
; its mean activate this call and place on hold all other active calls but
; execution of dialplan for these calls not break stopped or frozen
exten => s,n,Dial(Dongle/g1/holdother:+79139131234)
exten => s,n,Dial(Dongle/r1/holdother:+79139131234)
exten => s,n,Dial(Dongle/p:PROVIDER NAME/holdother:+79139131234)
exten => s,n,Dial(Dongle/i:123456789012345/holdother:+79139131234)
exten => s,n,Dial(Dongle/s:25099/holdother:+79139131234)
; now we add option 'holdother' for dialing
; this option do
; 1) When looking for available devices by group, provider IMEI,
; IMSI prefix not ignore devices with whose state does not
; prohibit a new outgoing call when other call place on hold
;
; 2) Before actual dialing place active calls on hold
; but execution of dialplan for these calls not break stopped or frozen
; 3) This call will be active if succesfully answered
; BUG !!!
; tested for call waiting and hold features Huawei E1550 has a next bug:
; When local side hangup any call including held call ALL other calls LOST sound
; When remove side hangup active call ALL other calls LOST sound
; Please double check true this for you or not
; If true reduce usage of this useful features
exten => s,n,Dial(Dongle/g1/conference:+79139131234)
exten => s,n,Dial(Dongle/r1/conference:+79139131234)
exten => s,n,Dial(Dongle/p:PROVIDER NAME/conference:+79139131234)
exten => s,n,Dial(Dongle/i:123456789012345/conference:+79139131234)
exten => s,n,Dial(Dongle/s:25099/conference:+79139131234)
; and also option 'conference' added
; this option do
; 1) When looking for available devices by group, provider IMEI,
; IMSI prefix not ignore devices with whose state does not
; prohibit a new outgoing call when other call place on hold
;
; 2) Before actual dialing place active calls on hold
; but execution of dialplan for these calls not break stopped or frozen
; 3) If answered attach hold calls to conrefence (in term of GSM)
; Also if created outgoing channel place call on same device that incoming channel
; both incoming and outgoing channels become readonly to avoid the voice loop.
;
; see also BUG !!! note above
Usando chan_dongle
Gerenciamento do modulo em Asterisk
Para o gerenciamento manual dos módulo pode usar os seguintes comandos no CLI de Asterisk:
- module load chan_dongle.so
Carregar o módulo em Asterisk. Configuração é em /etc/asterisk/dongle.conf - module unload chan_dongle.so
Remover o modulo da Asterisk. Todos os modem serão desconectados. - module reload chan_dongle.so
Atualizar configuração do arquivo de configuração. Se qualquer alteração for feita desde a última carga, vai ser aplicada agora.
CLI: comandos chan_dongle
chan_dongle oferece os seguintes comandos CLI:
- dongle cmd <device> <at_command>
Envia o comando AT <at_command> na porta serial do modem especificado como <device> - dongle reset <device>
Envia o comando de reinicializar (AT+CFUN=1,1) ao modem indicado <device> - dongle stop gracefully <device>
Para o <device> graciosamente. Impede novas chamadas/SMS/USSD mas permite que chamadas/SMS/USSD em andamento continuem. Quando todas as chamadas/SMS/USSD terminar, o <device> para - dongle stop now <device>
para o <device> imediatamente. Para o <device> e fecha qualquer chamada/SMS/USSD em andamento imediatamente - dongle stop when convenient <device>
Para o <device> quando conveniente. Aguarda até o <device> não ter chamadas/SMS/USSD em andamento, e, em seguida, ele para o <device>. Isso não impede que novas chamadas/SMS/USSD sejam realizadas no <device>. - dongle show device settings <device>
Mostra as configurações do <device> - dongle show device state <device>
Mostra estado detalhado do <device> - dongle show device statistics <device>
Mostra Estatísticas do <device> - dongle show devices
Visualiza o estado resumido de todos os dispositivos - dongle show version
Mostra versão do modulo - dongle sms <device> <number> <message>
Envia um SMS para o <number> com o <message> usando <device> - dongle pdu <device> <pdu>
Enviar PDU usando <device> - dongle ussd <device> <ussd>
Envia comando USSD <ussd> usando o <device> - dongle start <device>
Inicializa o <device> se não for removido antes. - dongle restart gracefully <device>
Impede novas chamadas/SMS/USSD em entrada e saída no <device> permitindo as chamadas/SMS/USSD em andamento de continuar. Quando as chamadas/SMS/USSD foi concluída o <device> será reiniciado. Reiniciar significa, primeiro parar dispositivo e segundo reabrir e inicializar. - dongle restart now <device>
Reinicia o <device> imediatamente, acabando com todas as chamadas/SMS/USSD em andamento. - dongle restart when convenient <device>
Aguarda até o <device> não ter chamadas/SMS/USSD em andamento e então reinicia o <device>. Isso não impede que novas chamadas/SMS/USSD de entrar no <device> - dongle remove gracefully <device>
Impede novas chamadas/SMS/USSD em entrada e saída do <device> e mas permite chamadas/SMS/USSD em andamento continuar. Quando chamadas/SMS/USSD terminar, <device> parar e removido módulo. - dongle remove now <device>
Remover <device> do Asterisk imediatamente. - dongle remove when convenient <device>
Aguarda até o <device> não ter chamadas/SMS/USSD em andamento e em seguida remove o <device>. Isso não impede que novas chamadas/SMS/USSD de entrar no <device>. - dongle reload gracefully
Recarrega a configuração do chan_dongle graciosamente - dongle reload now
Recarrega a configuração chan_dongle agora - dongle reload when convenient
Recarrega a configuração chan_dongle quando conveniente.BUG: complete removed devices from dongle.conf not removed from module after reload.
Use disable = yes como solução alternativa.
Dialplan: Aplicações
Os seguintes aplicativos são fornecidos por chan_dongle:
- DongleStatus(<Resource>, <Variable>)
- DongleSendSMS(<Device>, <Destination> [,Message [, Validity [, Report]]])
Dialplan: Funções
As seguintes funções são fornecidas por chan_dongle:
CHANNEL(callstate)
A leitura pode ter estes valores:
- active
- held
- dialing
- alerting
- incoming
- waiting
- initialize
- released
- unknown
Por exemplo, você pode separar as chamadas recebidas a partir de espera:
[dongle-incoming]
exten => s,1,GotoIf($["${CHANNEL(callstate)}" = "waiting"]?waiting-call)
Além disso, você pode atribuir a esta função também, mas este é útil apenas quando o estado da chamada mudou de ‘held‘ para ‘active‘ e significa colocar em ‘held’ outras chamadas deste dispositivo e ativar a chamada ligada ao canal Asterisk atual. Por exemplo:
exten => s,n,Set(CHANNEL(callstate)=active)
Mas lembre-se que colocar em espera as chamadas GSM não causa a terminação ou congelamento da execução dialplan para os canais Asterisk vinculados.
Channel variables
Para cada canal de Asterisk criado por chan_dongle (todas, entrada e saída) as seguintes variáveis de canal são definidas:
- DONGLENAME
nome do nome do dispositivo - DONGLEPROVIDER
mesma coluna de ‘Provider Name’ do comando CLI ‘dongle show devices’ - DONGLEIMEI
mesma coluna de ‘IMEI’ do comando CLI ‘dongle show devices’ - DONGLEIMSI
mesma coluna de ‘IMSI’ do comando CLI ‘dongle show devices’ - DONGLENUMBER
mesma coluna de ‘Number’ do comando CLI ‘dongle show devices’
Para extensão ‘USSD ” do contexto de entrada as próximas variáveis são definidas:
- USSD
Conteúdo da Resposta USSD - USSD_BASE64
Conteúdo da Resposta USSD codificado em Base64, útil quando USSD é multilinha
Para extensão ‘SMS” do contexto de entrada as próximas variáveis são definidas:
- SMS
Conteúdo do SMS - SMS_BASE64
Conteúdo do SMS codificado em Base64, útil quando o SMS é multilinha - CMGR
Resposta CMGR do dongle
Chamadas recebidas
Na chamadas em entrada chan_dongle tenta encontrar extensão correspondente no contexto definido (ver dongle.conf). Há três extensão diferente de pesquisar, na seguinte ordem:
- Número telefônico armazenado na SIM
- Número definido em variável ‘exten‘ no dongle.conf
- extensão ‘s’
Para salvar o número do telefone você pode gravar uma entrada para o armazenamento de números pessoais no SIM. Por exemplo, no CLI Asterisk digitar:
dongle cmd dongle0 AT+CPBS=\"ON\"
dongle cmd dongle0 AT+CPBW=1,\"+5511985856600\",145
Depois de reiniciar dongle0,
dongle restart now dongle0
as chamadas recebidas começarão da extensão do dialplan:
exten => +5511985856600,1,Noop()
também variável callerID (DNID) será definido como +5511985856600
Se o número telefônico é desconhecido, então você pode definir isso em em dongle.conf
exten = +5511985856600
Se o número do telefone é desconhecido e não há entrada de extensão em dongle.conf, a extensão ‘s’ será utilizada como ponto de partida no dialpan.
Receber SMS and USSD
Você pode receber SMS e USSD usando respectivamente a extensão SMS e USSD.
Exemplo por receber SMS:
[dongle-incoming-sms]
exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}' &gt;&gt; /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()
Exemplo por receber USSD:
[dongle-incoming-ussd]
exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' &gt;&gt; /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
Além disso, observe que a execução desta extensão ocorre em um canal “Local”.
Definir sempre as extensão SMS e USSD para o contexto das chamadas recebidas com o dispositivo dongle! Caso contrário, ao receber SMS ou USSD será executada um chamada de voz com resultados imprevisíveis.
[dongle-incoming]
include => dongle-incoming-sms
include => dongle-incoming-ussd
Além disso, observe que a extensão ‘h’ é executada por SMS/USSD pouco antes do canal local ser fechado.
Asterisk Manager: comandos
Chan_dongle pode fornecer os seguintes comandos Manager:
- DongleShowDevices
- DongleSendUSSD
- DongleSendSMS
- DongleSendPDU
- DongleSetCCWA
- DongleReset
- DongleRestart
- DongleStop
- DongleStart
- DongleRemove
- DongleReload
Asterisk Manager: eventos
Chan_dongle pode fornecer os seguintes eventos no Manager:
- DongleDeviceEntry
- DongleShowDevicesComplete
- DongleUSSDStatus
- DongleSMSStatus
- DongleNewCUSD
- DongleNewUSSD
- DongleNewUSSDBase64
- DongleCEND
- DongleCallStateChange
- DongleStatus
- DongleNewCMGR
- DongleNewSMS
- DongleNewSMSBase64
- DonglePortFail
Enviar comandos AT pela Console CLI
Você pode enviar comandos AT para qualquer modem usando
CLI: dongle cmd <device> <AT_command>
Alguns comandos AT util:
Comando AT Descrição AT+CCWA=0,0,1 Desabilita chamada em espera AT+CFUN=1,1 Reinicializa modem AT^CARDLOCK="<code>" Envia o código de desbloqueio AT^SYSCFG=13,0,3FFFFFFF,0,3 Modem só em 2G, busca frequência automática, não roaming AT^SYSCFG=2,0,3FFFFFFF,2,4 Todas as frequências AT^SYSCFG=13,1,3FFFFFFF,2,4 Só 2G AT^SYSCFG=14,2,3FFFFFFF,2,4 Só 3G AT^SYSCFG=2,1,3FFFFFFF,2,4 2G preferido AT^SYSCFG=2,2,3FFFFFFF,2,4 3G preferido AT^U2DIAG=0 Habilita função só modem ATI Visualiza informações relevantes do modem ATZ Reset configurações do modem AT+CIMI Visualiza IMSI AT+CLCK="SC",0,"<pin>" Desabilita verifica PIN Fonte: Chokitopx / Giovanni Bosa (R.I.P)
Parabéns
Será que existe um Software com código aberto (software livre) para disparo de SMS em massa, com Modem em Hub USB?
Tem sim, use o playsms.
Playsms.org
Valeu, e conseguimos controlar os disparos, por esse sistema, digo controlar qtos sms irão passar num chip?
Blza, muito obrigado.
tenho duvidas com relação aos modens para disparo de SMS, somente enviar SMS, quais os modelos, ou enviar sms todos prestam?
Pessoal boa noite, efetuei a instalação e quase tudo funciona, porem quando eu faço ligações apenas escuto quem fala mais não quem eu ligo não me escuta. alguem poderia me dar uma luz sobre o assunto ? obrigado
Rafael Avila simples no contexto sip.conf
coloque;
nat=force_rport,comedia
canreinvite=no ; isso aqui vai fazer seu áudio chegar