r37 - 22 Aug 2006 - 18:54:57 - IuriDinizYou are here: TWiki >  Asterisk Web  > AsteriskPBXSoftware

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 MOVED TO... nao funcionou, porque?
  • secret=irru MOVED TO... 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 MOVED TO... Iuri Gomes Diniz (ou qualquer outra coisa)
  • User Part SIP URL MOVED TO... kphone
  • Host Part SIP URL MOVED TO... 143.109.3.2
  • Outbound proxy MOVED TO... (vazio)
  • Authentication Username MOVED TO... kphone
  • q-value MOVED TO... (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 MOVED TO... entra no contexto que foi definido como padrão. (chamadas guest)
  • type=user MOVED TO... 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 MOVED TO... o mesmo que user, mas pode se registrar para pode receber/fazer ligações pelo asterisk
  • type=peer MOVED TO... 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 MOVED TO... o /s no final é a extenção a ser chamada nas ligações vindas para este número.
  • type=peer MOVED TO... é usada somente para fazer ligações
  • insecure=very MOVED TO... previne erro SIP/2.0 407 Proxy Authentication Required
  • context=from-sip-fwd MOVED TO... 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 MOVED TO... o telefone de id ata186-2 recebe tudo que vier do sip.
  • exten => _*393.,1,Dial(SIP/${EXTEN:4}@fwd-out) MOVED TO... 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:

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 MOVED TO... o telefone de id ata186-2 recebe tudo que vier do sip.
  • exten => _00.,1,Dial(SIP/${EXTEN}@peoplecall-out) MOVED TO... 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) MOVED TO... 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", big grin 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&#65533;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 &#65533; 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

AsteriskForm
Classificacao Outros
Resumo FIXME: dividir em varios topicos
Versao Asterisk

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r37 < r36 < r35 < r34 < r33 | More topic actions
Asterisk.AsteriskPBXSoftware moved from Personal.AsteriskPBXSoftware on 08 Mar 2006 - 18:21 by IuriDiniz - put it back
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback