Asterisk
TutorialAsteriskUnicallFax
AsteriskDev
AsteriskCompilar
AstBill
AsteriskRealtime
AsteriskInstalarPlacas
AsteriskUnicall
AsteriskPRI
AsteriskStatistics
AsteriskInterligando
SipExpressRouter
Instalar
debian
apt-get install asterisk-config asterisk-doc asterisk asterisk-dev \
asterisk-sounds-main zaptel-source zaptel \
build-essential dialog
teste
/usr/sbin/asterisk -cvvv
SAIR
#!/usr/sbin/asterisk -cvvv
stop now
Configuração
Exemplo SIP
Uma ATA186 com duas portas e um softphone kphone.
/etc/asterisk/sip.conf
[general]
port=5060
bindaddr=143.109.3.2
; Usuarios de fora recebem default
context=default
;disallow=all
;allow=ulaw
[kphone]
type=friend
;host=143.109.3.10
host=dynamic
dtmfmode=inband
secret=irru
[ata1861]
type=friend
username=ata1861
;md5secret=0292fad14489da0a6e230c654f84a647
;host=143.109.3.43
secret=oxente
canreinvite=no
host=dynamic
dtmfmode=rfc2833
nat=1
[ata1862]
type=friend
username=ata1862
;host=143.109.3.43
;md5secret=0292fad14489da0a6e230c654f84a647
secret=oxente
canreinvite=no
host=dynamic
dtmfmode=rfc2833
nat=1
O login do cliente eh
kphone, esta tambem eh o nome do ramal
- host=ip_do_client
nao funcionou, porque?
- secret=irru
senha do cliente do cliente eh irru, se nao configurado loga sem senha
kphone
Configuração da tela de identificação do kphone (para o exemplo anterior):
- Full Name
Iuri Gomes Diniz (ou qualquer outra coisa)
- User Part SIP URL
kphone
- Host Part SIP URL
143.109.3.2
- Outbound proxy
(vazio)
- Authentication Username
kphone
- q-value
(vazio)
ATA 186
- http://143.109.3.43/dev
- UseTftp: 0
- UID0: ata1861
- PWD0: oxente
- UID1: ata1862
- PWD1: oxente
- GkOrProxy: 143.109.3.2
- SIPRegInterval: 3500 (número menor se NAT)
- SIPRegOn: 1
- SIPPort: 5060
- OutBoundProxy: 0
Arquivo: sip.conf
- Se não possuir entrada no sip.conf
entra no contexto que foi definido como padrão. (chamadas guest)
- type=user
Usuário que não precisa se registrar, ao contactar o asterisk pode ter um contexto diferenciado (por meio de senha), usa seu próprio ip para enviar e receber ligações.
- type=friend
o mesmo que user, mas pode se registrar para pode receber/fazer ligações pelo asterisk
- type=peer
usado para o asterisk fazer ligações, o asterisk age aqui como cliente sip, lembre-se de usar register.
md5secret
Para usar criar um md5 a partir de:
USUARIO:REALM:SENHA
o realm padrão do asterisk é 'asterisk'
#!/bin/python
from md5 import md5
md5("iuridiniz:asterisk:reada").hexdigest()
sip.conf
[iuridiniz]
type=frienf
host=dynamic
md5secret=473d94e241f3a7ec72eda7e1bf9c4378
Queues
Usamos queues grupos de chamada, podemos definir uma regra para como os telefones da queue irão tocar.
/etc/asterisk/queue.conf
[minhaqueue]
strategy = random
music = random
member => SIP/grandstream
member => SIP/ata1862
member => SIP/ata1861
Acima uma
queue com 3 membros e a forma de tocar os telefones é randômica, é possível colocá-los em
roundrobin,
LFU,
ringall, ...
ref:
http://www.voip-info.org/tiki-index.php?page=Asterisk+call+queues
Podemos também usar agentes para tirar e colocar telefones na queue, veja
agents.conf e a
Manager API (Queues, QueueAdd, QueueRemove, QueueStatus)
ref:
http://www.voip-info.org/tiki-index.php?page=Asterisk+config+agents.conf
ref:
http://www.voip-info.org/wiki-Asterisk+manager+API
Logar no postgres
criar tabela no postgres:
CREATE TABLE cdr (
calldate timestamp with time zone NOT NULL default now(),
clid varchar(80) NOT NULL default '',
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
dcontext varchar(80) NOT NULL default '',
channel varchar(80) NOT NULL default '',
dstchannel varchar(80) NOT NULL default '',
lastapp varchar(80) NOT NULL default '',
lastdata varchar(80) NOT NULL default '',
duration bigint NOT NULL default '0',
billsec bigint NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
amaflags bigint NOT NULL default '0',
accountcode varchar(20) NOT NULL default '',
uniqueid varchar(32) NOT NULL default '',
userfield varchar(255) NOT NULL default ''
);
criar usuário no banco e executar o comando:
grant INSERT on cdr to usuario;
Colocar no
/etc/cdr_pgsl.conf
[global]
hostname=servidor
port=5432
dbname=banco
password=senha
user=usuario
REF:
http://www.voip-info.org/tiki-index.php?page=Asterisk+billing
Grupo de chamadas
Estabelecendo grupo de chamadas pode-se configurar meios de um telefone atender outro que esteja tocando desde que da mesma tecnologia.
sip.conf
[general]
port=5060
bindaddr=143.109.3.2
context=from-sip-default
disallow=all
allow=ulaw
allow=alaw
[ata186-1]
type=friend
username=ata186-1
secret=lalalalal
host=dynamic
canreinvite=no
dtmfmode=rfc2833
nat=no
language=pt_br
deny=0.0.0.0/0.0.0.0
permit=143.109.3.43/255.255.255.255
callgroup=1
pickupgroup=1
context=default
[ata186-2]
type=friend
username=ata186-2
host=dynamic
secret=lalalalalalal
canreinvite=no
dtmfmode=rfc2833
nat=no
language=pt_br
deny=0.0.0.0/0.0.0.0
permit=143.109.3.43/255.255.255.255
callgroup=1
pickupgroup=1
context=default
Todos os dois telefones estão no mesmo grupo, e todos podem atender telefones do grupo que pertencem.
SIP
SIP URL
sip:<user>:<password>:<authuser>@<server>:<port>
STUN server
Simple Traversal of UDP over NAT
Usado quando vc esta sobre NAT, prover meios para fazer NAT com UDP.
Servidor STUN: stun.fwdnet.net:3478
Outbound proxy Server
Usado quando vc esta sobre um firewall, vc encaminha seus dados de saida para um servidor e ele faz o resto por vc.
Proxy: fwd.pulver.com
Registrar
Quando vc não tem ip fixo, você usa um registrar para assim obter uma url de sip fixa.
Exemplo:
http://www.freeworlddialup.com
SIP clientes
linphone
- Pode se registrar em vários registrars ao mesmo tempo.
- Configurar
- Go -> Preferences -> SIP -> Remote Services -> Add proxy/registrar
- Send Registration: checked
- Registration Period: 3600 (Números menos se em NAT, segundos)
- SIP Identity: sip:<user>@<server>
- SIP Proxy: sip:<server>
- Route: blank
- Publish presence: unchecked
Asterisk e outros provedores
FWD
sip.conf
[general]
port=5060
bindaddr=143.109.3.2
context=from-sip-default
disallow=all
allow=ulaw ;codec
allow=alaw ;codec
videosupport=yes
register=>695984:reada@fwd.pulver.com/s
[fwd-out]
type=peer
username=695984
secret=reada
host=fwd.pulver.com
;fromuser=695984
;fromdomain=fwd.pulver.com
nat=no
insecure=very
context=from-sip-fwd
Detalhes:
- register=>695984:reada@fwd.pulver.com/s
o /s no final é a extenção a ser chamada nas ligações vindas para este número.
- type=peer
é usada somente para fazer ligações
- insecure=very
previne erro SIP/2.0 407 Proxy Authentication Required
- context=from-sip-fwd
Contexto para ligações recebidas.
extensions.conf
[globals]
EXTEN_FOR_INCOMING_SIP => SIP/ata186-2
[default]
; internal context
include = to-sip-fwd
include = sip-numbers
include = zap-numbers
[from-sip-default]
exten => s,1,Dial(${EXTEN_FOR_INCOMING_SIP})
[from-sip-fwd]
include = from-sip-default
[from-pstn]
; From the public telephone network
include = sip-numbers
include = zap-numbers
[sip-numbers]
;SIP numbers have extension like 91__
exten => 9107,1,Dial(SIP/ata186-1)
exten => 9108,1,Dial(SIP/ata186-2)
[zap-numbers]
;ZAP numbers have extension like 90__
[to-sip-fwd]
exten => _*393.,1,Dial(SIP/${EXTEN:5}@fwd-out)
Detalhes:
- EXTEN_FOR_INCOMING_SIP => SIP/ata186-2
o telefone de id ata186-2 recebe tudo que vier do sip.
- exten => _*393.,1,Dial(SIP/${EXTEN:4}@fwd-out)
Qualquer número após (asterisco)393 será direcionado para usar o FWD.
Vonage
sip.conf
; Vonage nao aceita anexar o /<exten> no register (cabecalho contact do sip)
register => 13053932222:KKND@sphone.vopr.vonage.net:5061
[vonage01-out]
context=from-vonage
username=13053932222
type=peer
secret=KKND
port=5061
host=sphone.vopr.vonage.net
fromuser=13053932222
fromdomain=sphone.vopr.vonage.net
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
qualify = no
insecure = very
extensions.conf
[from-vonage]
exten => 13053932222,1,Dial(SIP/9029)
[to-vonage]
exten => _00.,1,Dial(SIP/vonage01-out/${EXTEN:2})
Peoplecall
sip.conf
[general]
port=5060
bindaddr=143.109.3.2
context=from-sip-default
disallow=all
allow=g729
allow=g723
videosupport=yes
register=>34700760409001:oxente@sip.peoplecall.com/s
[peoplecall-out]
type=peer
username=34700760409001
secret=oxente
host=sip.peoplecall.com
fromuser=34700760409001
fromdomain=sip.peoplecall.com
nat=no
canreinvite=no
insecure=very
dtmfmode=rfc2833
context=from-sip-peoplecall
Detalhes:
- insecure=very
previne erro SIP/2.0 407 Proxy Authentication Required
- allow=g729
Um dos codecs usados pela peoplecall.
extensions.conf
[globals]
EXTEN_FOR_INCOMING_SIP => SIP/ata186-2
[default]
; internal context
include = to-sip-peoplecall
include = sip-numbers
include = zap-numbers
[from-sip-default]
exten => s,1,Dial(${EXTEN_FOR_INCOMING_SIP})
[from-sip-peoplecall]
include = from-sip-default
[from-pstn]
; From the public telephone network
include = sip-numbers
include = zap-numbers
[sip-numbers]
;SIP numbers have extension like 91__
exten => 9107,1,Dial(SIP/ata186-1)
exten => 9108,1,Dial(SIP/ata186-2)
[zap-numbers]
;ZAP numbers have extension like 90__
[to-sip-peoplecall]
exten => _00.,1,Dial(SIP/${EXTEN}@peoplecall-out)
exten => _84.,1,Dial(SIP/${EXTEN}@peoplecall-out)
Detalhes:
- EXTEN_FOR_INCOMING_SIP => SIP/ata186-2
o telefone de id ata186-2 recebe tudo que vier do sip.
- exten => _00.,1,Dial(SIP/${EXTEN}@peoplecall-out)
Qualquer número que começar com 00 será redirecionado integralmente (incluindo o 00) para o peoplecall
- exten => _84.,1,Dial(SIP/${EXTEN}@peoplecall-out)
Qualquer número que começar com 84 será redirecionado integralmente (incluindo o 84) para o peoplecall
Net2Phone
Este aqui eh cheio de frescuras, só aceita alguns
useragent, ainda bem que o asterisk permite "falsificar",

e após errar a senha você tem que esperar 1 hora para poder autenticar novamente.
sip.conf
Conta: 796684403564, senha: 77691
[general]
port=5060
bindaddr=143.109.3.2
context=from-sip-default
disallow=all
; g711u (ulaw), g723 e g729
allow=ulaw
allow=g723
allow=g729
; falsificar useragent para um válido
useragent = Cisco ATA 186
register => 796684403564:77691@sip.net2phone.com
; para realizar ligações
[net2phone-out]
type = peer
host = sip.net2phone.com
username = 796684403564
secret = 77691
fromuser = 796684403564
fromdomain = net2phone.com
insecure = very
canreinvite = no
extensions.conf
[from-sip-default]
[default]
; Ligacoes internacionais usam modo EUA de ligar (011) cod_pais numero_telefone
; Permitir um metodo mais brasileiro de ligar.
; com isto abaixo para ligar para o brasil, natal -rn, exemplo discar 00558499822234,
; resulta em 011558499822234 que eh o metodo ianque de discar.
exten => _00.,1,Dial(SIP/011${EXTEN:2}@net2phone-out)
; permitir tambem, metodo ianque de discar
exten => _011.,1,Dial(SIP/${EXTEN}@net2phone-out)
Vono
Usuário: diginet
senha: k1k2k3k4
sip.conf
register => diginet:k1k2k3k4@vono.net.br:5060
[vono-out]
username=diginet
type=peer
secret=k1k2k3k4
port=5060
host=vono.net.br
fromuser=diginet
fromdomain=vono.net.br
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
;auth=md5
qualify = no
insecure = very
extensions.conf
[using-vono]
; o vono é como uma telefone normal no qual vc nao escolhe a operadora
; entao se eu quiser ligar para fortaleza é so usar 085 3444 5555
; qualquer numero que comece com 0 use o vono, e ja use direto
exten => _0.,1,Dial(SIP/vono-out/${EXTEN},,)
Vim Syntax Highlighting
http://www.voip-info.org/wiki-vim+syntax+highlighting
Pegar entrada do usuario e repetir
um exemplo de macro que pega o que o usuario digitou e repete a cada tecla pressionada.
/etc/asterisk/extensions.conf
[macro-readandsay]
; le digitos e retorna para o usuario
; ${ARG1} => VARIAVEL DESTINO
; ${ARG2} => numero max de digitos
;
exten => s,1,NoOp(macro read and say)
exten => s,n,Set(TIMEOUT(response)=5)
exten => s,n,Set(COUNT=0)
exten => s,n,Set(DIGITS=)
exten => s,n(read),Read(DIGIT||1)
exten => s,n,Set(TIMEOUT(response)=1.5)
exten => s,n,SayDigits(${DIGIT})
exten => s,n,Set(COUNT=$[${COUNT} + 1])
exten => s,n,Set(DIGITS=${DIGITS}${DIGIT})
exten => s,n,GosubIf($[${COUNT} < ${ARG2}]?read)
exten => s,n,Set(${ARG1}=${DIGITS})
[default]
exten => 500,1,Answer()
exten => 500,2,Macro(readandsay,pin,6)
exten => 500,3,Wait(1)
exten => 500,4,SayDigits(${pin})
exten => 500,5,Wait(2)
exten => 500,6,hangup()
How do I make a T1/E1 crossover cable
from
http://www.evtmedia.com/designersFAQ.htm
Q: How do I make a T1/E1 crossover cable?
A: E1 and T1 connections only use pins 1, 2, 4, and 5
In a straight-through cable, which is usually what�s required when you connect your voice card to
your T1/E1 provider, those four pins are wired end-to-end, with the same pins at both ends.
Although longer cable runs should have pins 1 and 2 in one twisted pair and 3 and 4 in the other
pair, shorter runs can use a standard CAT5 ethernet cable instead. This cable has the proper
pins connected, but 4 and 5 are not in a twisted pair which would upset the balance of the
signals in a longer run (over 5 meters).
A crossover cable is usually used to connect one voice system to another voice system, or
possibly to an on-site PBX. Although the same pins are used, the wiring is different:
Pin 1 --- Pin 4
Pin 2 --- Pin 5
Pin 4 --- Pin 1
Pin 5 --- Pin 2
Note that you can not use a crossover CAT5 cable as a crossover E1/T1 cable � the pins are not
connected properly. You either have to buy one or make one. For shorter runs, I usually cut off
one end of a regular CAT5 cable and wire the other end properly with the help of a multi-meter
and my trusty crimping tool.
Problemas
Music on hold não funciona em channels ZAP
no dialplan, execute o Answer() antes.
--
IuriDiniz - 23 Aug 2005
--
IuriDiniz - 12 Sep 2005
--
IuriDiniz - 10 Oct 2005