Quantcast
Channel: IP АТС Asterisk
Viewing all 1135 articles
Browse latest View live

Asterisk 'sip.zadarma.com' PJSIP trunk

$
0
0

Asterisk 'sip.zadarma.com' PJSIP trunk

local_net - локальная сеть (например 192.168.0.0/24)
external_media_address = внешний IP
external_signaling_address = внешний IP
SIP_USER - SIPлогин
SIP_PASSWORD - SIPпароль

/etc/asterisk/pjsip.conf

Global PJSIP Settings

[global]
type=global
user_agent=Asterisk 13.8.2

Transport PJSIP

[0.0.0.0-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5066
; NAT settings
local_net = 10.0.0.0/8
external_media_address =  123.123.123.123
external_signaling_address =  123.123.123.123

Zadarma ITSP

AOR

[zadarma]
type=aor
qualify_frequency=400
contact=sip:SIP_USER@sip.zadarma.com:5060

AUTH

[zadarma]
type=auth
auth_type=userpass
password=SIP_PASSWORD
username=SIP_USER

ENDPOINT

[zadarma]
type=endpoint
transport=0.0.0.0-udp
context=from-zadarma
from_user=SIP_USER
from_domain=sip.zadarma.com
disallow=all
allow=alaw,ulaw
outbound_auth=zadarma
aors=zadarma

IDENTIFY

[zadarma]
type=identify
endpoint=zadarma
match=sip.zadarma.com

REGISTRATION

[zadarma]
type=registration
transport=0.0.0.0-udp
outbound_auth=zadarma
retry_interval=120
max_retries=10
expiration=3600
auth_rejection_permanent=yes
contact_user=SIP_USER
server_uri=sip:sip.zadarma.com:5060
client_uri=sip:SIP_USER@sip.zadarma.com:5060

FreeSwitch: простейшая настройка SIP gateway и Диалплана

$
0
0

FreeSwitch: простейшая настройка SIP gateway и Диалплана

Обзор
Простой пример настройки Sip профилей FreeSWITCH. Конфигурация sip шлюза (gateway) для подключения провайдера IP телефонии (ITSP) через интернет и SIP Gateway к корпоративной АТС в локальной сети, входящая и исходящая маршрутизация FreeSWITCH.

 +---------------------+          +-----------------------+
 |    Extensions       |          |       Profiles        |
 |  ../conf/directory  |          |  ../conf/sip_profiles |
 +---------------------+          +-----------------------+
            |                                 |
            +----------+          +-----------+ 
                       |          |
                       V          V
                  +---------------------+
                  |      Contexts       |
                  |  ../conf/dialplan   |
                  +---------------------+
вводные данные шлюзов
IP/domainGateway Name
192.168.0.252samsung
sip.itsp.comitsp
SIP транк (gateway) частной сети АТС.

conf/sip_profiles/internal/samsung.xml

<include>
    <gateway name="samsung">
      <param name="username" value="samsung"/>
      <param name="password" value="register:false"/>
      <param name="proxy" value="192.168.0.252"/>
      <param name="expire-seconds" value="800"/>
      <param name="register" value="false"/>
      <param name="register-transport" value="udp"/>
      <param name="retry-seconds" value="60"/>
      <param name="context" value="default"/>
      <param name="caller-id-in-from" value="true"/>
    </gateway>
</include>

Если в параметре <param name="proxy" value="192.168.0.252"/>порт не задан, то используется 5060, по умолчанию.
Чтобы задать специфический порт SIPсигнализации, используйте форму записи: <param name="proxy" value="192.168.0.252:5077"/>

Так как gateway создан в sip_profileinternal, входящие вызовы из корпоративной АТС будут попадать непосредственно в контекст defaultи если пользователь с вызываемым номером существует, он будет вызван. Дополнительные правила входящей маршрутизации не требуются. Таким образом вы можете создать корпоративную телефонную сеть со сквозной нумерацией.

Поле <param name="caller-id-in-from" value="true"/>обеспечит передачу внутреннего номера из поля From:в качестве CallerID.

SIP gateway провайдера ( ITSP )

conf/sip_profiles/external/itsp.xml

<include>
    <gateway name="itsp">
      <param name="username" value="itsp"/>
      <param name="password" value="12345"/>
      <param name="realm" value="sip.itsp.com"/>
      <param name="from-user" value="itsp_user"/>
      <param name="from-domain" value="sip.itsp.com"/>
      <param name="proxy" value="sip.itsp.com:5060"/>
      <param name="expire-seconds" value="800"/>
      <param name="register" value="true"/>
      <param name="retry-seconds" value="60"/>
      <param name="context" value="public"/>
      <param name="caller-id-in-from" value="false"/>
    </gateway>
</include>
Входящая маршрутизация из контекста Public

conf/dialplan/public/00_inbound_did.xml

<include>
  <extension name="public_did">
    <condition field="destination_number" expression="^(7771000)$">
      <!--	  
	  $${domain} это домен FreeSwitch по умолчанию, назначенный в vars.xml.**
      --> 
      <action application="set" data="domain_name=$${domain}"/>
      <!-- этот пример направляет вызовы по  DID 7771000 на внутренний номер 1000 в контексте default -->
      <action application="transfer" data="1000 XML default"/>
    </condition>
  </extension>
</include>

<X-PRE-PROCESS cmd=«set» data=«domain=$${local_ip_v4}»/>
<X-PRE-PROCESS cmd=«set» data=«domain_name=$${domain}»/>

Устанавливает домен по умолчанию используемый FreeSWITCH, если другое не задано.
По умолчанию $${local_ip_v4}

Исходящая маршрутизация через gateway's

вводные данные маршрутизации

Набор Четырехзначных номеров в частную сеть АТС
цифрыexpressionextension name
2XXX^(2\d{3})$local.samsung

conf/dialplan/default/01_samsung.xml

<include>
  <extension name="local.samsung">
    <condition field="${toll_allow}" expression="local"/>
    <condition field="destination_number" expression="^(2\d{3})$">
      <action application="set" data="effective_caller_id_number=${effective_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${effective_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/samsung/$1"/>
    </condition>
  </extension>
</include>

Переменная ${effective_caller_id_number}указывает непосредсвенно на CallerID устройства инициирующего вызов.
Если требуется передать имя, в первую очередь FS принимает значение указанное устройством в SIPпакете.
Переменная заданная в настройках ../directory/default/user.xml<variable name="effective_caller_id_name" value="User Userov"/>игнорируется.

Внешние вызовы через провайдера без префикса
цифрыextension name
XXXXXXXlocal.itsp
89XXXXXXXXXdomestic.itsp
810XXXXXXXXXXinternational.itsp

conf/dialplan/default/01_itsp.xml

<include>
  <extension name="local.itsp">
    <condition field="${toll_allow}" expression="local"/>
    <condition field="destination_number" expression="^(\d{7})$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/itsp/$1"/>
    </condition>
  </extension>

  <extension name="domestic.itsp">
    <condition field="${toll_allow}" expression="domestic"/>
    <condition field="destination_number" expression="^(89\d{9})$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/itsp/$1"/>
    </condition>
  </extension>

  <extension name="international.itsp">
    <condition field="${toll_allow}" expression="international"/>
    <condition field="destination_number" expression="^(810\d+)$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/itsp/$1"/>
    </condition>
  </extension>
</include>

переменная ${outbound_caller_id_number}задается в файле vars.xml:

<X-PRE-PROCESS cmd="set" data="outbound_caller_id_name=fs"/>
   <X-PRE-PROCESS cmd="set" data="outbound_caller_id_number=777777"/>

обычно требуется передать провайдеру callerID из вашего пула номеров, это можно сделать для каждого маршрута:

<action application="set" data="effective_caller_id_number=8129981138"/>
    <action application="set" data="effective_caller_id_name=8129981138"/>
Внешние вызовы через провайдера через префикс "9".
префиксцифрыextension name
9XXXXXXXlocal.itsp
98[09]XXXXXXXXXmobile.itsp
98X.international.itsp

<include>
<extension name="local.itsp">
    <condition field="caller_id_number" expression="^(397\d)$"/>
    <condition field="destination_number" expression="^9(\d{7})$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/itsp/$1"/>
    </condition>
  </extension>

  <extension name="mobile.itsp">
        <condition field="caller_id_number" expression="^(397\d)$"/>
    <condition field="destination_number" expression="^9(8[09]\d{9})$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/itsp/$1"/>
    </condition>
  </extension>

  <extension name="international.itsp">
        <condition field="caller_id_number" expression="^(397\d)$"/>
    <condition field="destination_number" expression="^9(8\d+)$">
      <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
      <action application="bridge" data="sofia/gateway/$itsp/$1"/>
    </condition>
  </extension>

</include>

Условие <condition field="caller_id_number" expression="^(397\d)$"/>, можно использовать для ограничения доступа к gateway.
В примере через данный gateway смогут звонить только номера 3970-3979.

sc qc FreeSWITCH

FreeSWITCH

Установка Asterisk 13 + FreePBX 13 на CentOS 7

$
0
0

Установка Asterisk 13 + FreePBX 13 на CentOS 7

CentOS 7 64-bit Asterisk 13, FreePBX 13 , libpri, DAHDI, Mysql (mariadb), apache2, lame, php, httpd.conf, php.ini

Выключение SELinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

Зависимости

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum install -y kernel-devel kernel-headers

yum install -y e2fsprogs-devel  keyutils-libs-devel krb5-devel libogg \
libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \
php php-gd php-mysql php-pdo php-mbstring ncurses-devel \
mysql-connector-odbc unixODBC unixODBC-devel \
audiofile-devel libogg-devel openssl-devel zlib-devel  \
perl-DateManip sox git wget net-tools psmisc

yum install -y gcc gcc-c++ make gnutls-devel \
libxml2-devel ncurses-devel subversion doxygen \
texinfo curl-devel net-snmp-devel neon-devel  \
uuid-devel libuuid-devel sqlite-devel sqlite \
speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel 

Сделайте полный апдейт

 yum update -y

Перезагрузите компьютер

 reboot

Установка mysql (mariadb)

1: Установим mariadb (MySQL)

 yum -y install mariadb-server mariadb mariadb-devel

2: Запустим и включим автозагрузку mariadb (MySQL)

 systemctl start mariadb.service
 systemctl enable mariadb.service

3: Запустим интерактивный конфигуратор (будет предложено задать пароль пользователя root для mysql и др.)

 mysql_secure_installation
Spoiler

Установите PearDB

 pear uninstall db
 pear install db-1.7.14

SRTP

 cd /usr/src && wget http://srtp.sourceforge.net/srtp-1.4.2.tgz 

tar zxvf srtp-1.4.2.tgz && 
cd srtp && autoconf && 
./configure CFLAGS=-fPIC --prefix=/usr && 
make && 
make runtest && 
make install

Pjproject

 cd /usr/src && git clone git://github.com/asterisk/pjproject pjproject 

cd pjproject/ && 
./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample &&
make dep &&
make &&
make install &&
ldconfig &&
ldconfig -p | grep pj
Вывод ldconfig -p | grep pj

libjansson

 cd /usr/src && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz

tar zvxf jansson-2.5.tar.gz && 
cd jansson-2.5 && 
./configure --prefix=/usr/ && 
make clean && 
make && 
make install && 
ldconfig

Исходники

cd /usr/src &&  
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.5.0.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Lame

cd /usr/src && 
tar zxvf lame-3.98.4.tar.gz && 
cd lame-3.98.4 && 
./configure && 
make && 
make install 

DAHDI & LibPRI

 yum install "kernel-devel-uname-r == $(uname -r)"

cd /usr/src && 
tar xvfz dahdi-linux-complete-current.tar.gz && 
cd dahdi-linux-complete-* && 
make all && 
make install && 
make config
cd /usr/src && 
tar xvfz libpri-1.5.*.tar.gz && 
cd /usr/src/libpri-1.5.* && 
make && 
make install

SpanDSP

cd /usr/src && wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz
tar zxvf spandsp-0.0.6.tar.gz && 
cd spandsp-0.0.6 && 
./configure && 
make && 
make install &&
ln -s /usr/local/lib/libspandsp.so.2 /usr/lib64/libspandsp.so.2

Asterisk 13

cd /usr/src && 
tar xvfz asterisk-13-*.tar.gz &&
cd asterisk-13.* &&
./configure --libdir=/usr/lib64 &&
contrib/scripts/get_mp3_source.sh &&
make menuselect
Asterisk 12

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль 'format_mp3'

 --->  Add-ons (See README-addons.txt)  
             --- extended ---
             XXX chan_mobile
             [*] chan_ooh323
             [*] format_mp3
             [*] res_config_mysql
             --- deprecated ---
             [*] app_mysql
             [*] app_saycountpl
             [*] cdr_mysql

  ---> Core Sound Packages
            [*] CORE-SOUNDS-RU-GSM
  --->  Extras Sound Packages
            [*] EXTRA-SOUNDS-EN-GSM  

make && make install && make config && ldconfig
 sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g'  /usr/sbin/safe_asterisk

Создайте пользователя Asterisk и задайте права пользователя.

useradd -m asterisk &&
chown asterisk.asterisk /var/run/asterisk &&
chown -R asterisk.asterisk /etc/asterisk &&
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk &&
chown -R asterisk.asterisk /usr/lib64/asterisk 

Настроим httpd (Apache)

cp /etc/php.ini /etc/php.ini_orig &&
sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g' /etc/php.ini &&
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini &&
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig &&
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf &&
sed -i 's/AllowOverride None/AllowOverride All/'  /etc/httpd/conf/httpd.conf &&
systemctl restart httpd &&
systemctl enable httpd

FreePBX

freepbx13

pear install Console_Getopt

cd /usr/src &&
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz

tar zxvf freepbx-13.0-latest.tgz &&
cd freepbx &&
./start_asterisk start
 ./install -n

Подключимся к FreePBX

http://IP.Address.FreePBX.Server/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX

freepbx start set user login

Can Not Connected To Asterisk

Если появится предупреждение Can Not Connected To Asterisk, а Asterisk точно запущен, закомментируйте инклюды в файле /etc/asterisk/manager.conf

;#include manager_additional.conf
;#include manager_custom.conf

Установка Asterisk

opensipsCTL

$
0
0

opensipsCTL

Existing commands:

 -- command 'start|stop|restart'

 restart ............................ restart OpenSIPS
 start .............................. start OpenSIPS
 stop ............................... stop OpenSIPS

 -- command 'acl' - manage access control lists (acl)

 acl show [<username>] .............. show user membership
 acl grant <username> <group> ....... grant user membership (*)
 acl revoke <username> [<group>] .... grant user membership(s) (*)

 -- command 'cr' - manage carrierroute tables

 cr show ....................................................... show tables
 cr reload ..................................................... reload tables
 cr dump ....................................................... show in memory tables
 cr addrt <routing_tree_id> <routing_tree> ..................... add a tree
 cr rmrt  <routing_tree> ....................................... rm a tree
 cr addcarrier <carrier> <scan_prefix> <domain> <rewrite_host> ................
               <prob> <strip> <rewrite_prefix> <rewrite_suffix> ...............
               <flags> <mask> <comment> .........................add a carrier
               (prob, strip, rewrite_prefix, rewrite_suffix,...................
                flags, mask and comment are optional arguments) ...............
 cr rmcarrier  <carrier> <scan_prefix> <domain> ................ rm a carrier

 -- command 'rpid' - manage Remote-Party-ID (RPID)

 rpid add <username> <rpid> ......... add rpid for a user (*)
 rpid rm <username> ................. set rpid to NULL for a user (*)
 rpid show <username> ............... show rpid of a user

 -- command 'add|passwd|rm' - manage subscribers

 add <username> <password> .......... add a new subscriber (*)
 passwd <username> <passwd> ......... change user's password (*)
 rm <username> ...................... delete a user (*)

 -- command 'add|dump|reload|rm|show' - manage address

 address show ...................... show db content
 address dump ...................... show cache content
 address reload .................... reload db table into cache
 address add <grp> <ip> <mask> <port> <proto> [<context_info>] [<pattern>]
             ....................... add a new entry
             ....................... (from_pattern and tag are optional arguments)
 address rm <grp> <ip> <mask> <port> ............... remove all entries
             ....................... for the given grp ip mask port

 -- command 'dispatcher' - manage dispatcher

   * Examples:  dispatcher addgw 1 sip:1.2.3.1:5050 1 'outbound gateway'
   *            dispatcher addgw 2 sip:1.2.3.4:5050 3 ''
   *            dispatcher rmgw 4
 dispatcher show ..................... show dispatcher gateways
 dispatcher reload ................... reload dispatcher gateways
 dispatcher dump ..................... show in memory dispatcher gateways
 dispatcher addgw <setid> <destination> <flags> <description>
            .......................... add gateway
 dispatcher rmgw <id> ................ delete gateway

 -- command 'db' - database operations

 db exec <query> ..................... execute SQL query
 db roexec <roquery> ................. execute read-only SQL query
 db run <id> ......................... execute SQL query from $id variable
 db rorun <id> ....................... execute read-only SQL query from
                                       $id variable
 db show <table> ..................... display table content

 -- command 'speeddial' - manage speed dials (short numbers)

 speeddial show <speeddial-id> ....... show speeddial details
 speeddial list <sip-id> ............. list speeddial for uri
 speeddial add <sip-id> <sd-id> <new-uri> [<desc>] ...
           ........................... add a speedial (*)
 speeddial rm <sip-id> <sd-id> ....... remove a speeddial (*)
 speeddial help ...................... help message
    - <speeddial-id>, <sd-id> must be an AoR (username@domain)
    - <sip-id> must be an AoR (username@domain)
    - <new-uri> must be a SIP AoR (sip:username@domain)
    - <desc> a description for speeddial

 -- command 'avp' - manage AVPs

 avp list [-T table] [-u <sip-id|uuid>]
     [-a attribute] [-v value] [-t type] ... list AVPs
 avp add [-T table] <sip-id|uuid>
     <attribute> <type> <value> ............ add AVP (*)
 avp rm [-T table]  [-u <sip-id|uuid>]
     [-a attribute] [-v value] [-t type] ... remove AVP (*)
 avp help .................................. help message
    - -T - table name
    - -u - SIP id or unique id
    - -a - AVP name
    - -v - AVP value
    - -t - AVP name and type (0 (str:str), 1 (str:int),
                              2 (int:str), 3 (int:int))
    - <sip-id> must be an AoR (username@domain)
    - <uuid> must be a string but not AoR

 -- command 'alias_db' - manage database aliases

 alias_db show <alias> .............. show alias details
 alias_db list <sip-id> ............. list aliases for uri
 alias_db add <alias> <sip-id> ...... add an alias (*)
 alias_db rm <alias> ................ remove an alias (*)
 alias_db help ...................... help message
    - <alias> must be an AoR (username@domain)"
    - <sip-id> must be an AoR (username@domain)"

 -- command 'domain' - manage local domains

 domain reload ....................... reload domains from disk
 domain show ......................... show current domains in memory
 domain showdb ....................... show domains in the database
 domain add <domain> ................. add the domain to the database
 domain rm <domain> .................. delete the domain from the database

 -- command 'cisco_restart' - restart CISCO phone (NOTIFY)

 cisco_restart <uri> ................ restart phone configured for <uri>

 -- command 'online' - dump online users from memory

 online ............................. display online users

 -- command 'monitor' - show internal status

 monitor ............................ show server's internal status

 -- command 'ping' - ping a SIP URI (OPTIONS)

 ping <uri> ......................... ping <uri> with SIP OPTIONS

 -- command 'ul|alias' - manage user location or aliases

 ul show [<username>]................ show in-RAM online users
 ul show --brief..................... show in-RAM online users in short format
 ul rm <username> [<contact URI>].... delete user's usrloc entries
 ul add <username> <uri> ............ introduce a permanent usrloc entry
 ul add <username> <uri> <expires> .. introduce a temporary usrloc entry

 -- command 'fifo'

 fifo ............................... send raw FIFO command

[root@SKRS1918 opensips]# opensipsctl module show
/usr/local/sbin/opensipsctl $Revision: 4448 $

Existing commands:

 -- command 'start|stop|restart'

 restart ............................ restart OpenSIPS
 start .............................. start OpenSIPS
 stop ............................... stop OpenSIPS

 -- command 'acl' - manage access control lists (acl)

 acl show [<username>] .............. show user membership
 acl grant <username> <group> ....... grant user membership (*)
 acl revoke <username> [<group>] .... grant user membership(s) (*)

 -- command 'cr' - manage carrierroute tables

 cr show ....................................................... show tables
 cr reload ..................................................... reload tables
 cr dump ....................................................... show in memory tables
 cr addrt <routing_tree_id> <routing_tree> ..................... add a tree
 cr rmrt  <routing_tree> ....................................... rm a tree
 cr addcarrier <carrier> <scan_prefix> <domain> <rewrite_host> ................
               <prob> <strip> <rewrite_prefix> <rewrite_suffix> ...............
               <flags> <mask> <comment> .........................add a carrier
               (prob, strip, rewrite_prefix, rewrite_suffix,...................
                flags, mask and comment are optional arguments) ...............
 cr rmcarrier  <carrier> <scan_prefix> <domain> ................ rm a carrier

 -- command 'rpid' - manage Remote-Party-ID (RPID)

 rpid add <username> <rpid> ......... add rpid for a user (*)
 rpid rm <username> ................. set rpid to NULL for a user (*)
 rpid show <username> ............... show rpid of a user

 -- command 'add|passwd|rm' - manage subscribers

 add <username> <password> .......... add a new subscriber (*)
 passwd <username> <passwd> ......... change user's password (*)
 rm <username> ...................... delete a user (*)

 -- command 'add|dump|reload|rm|show' - manage address

 address show ...................... show db content
 address dump ...................... show cache content
 address reload .................... reload db table into cache
 address add <grp> <ip> <mask> <port> <proto> [<context_info>] [<pattern>]
             ....................... add a new entry
             ....................... (from_pattern and tag are optional arguments)
 address rm <grp> <ip> <mask> <port> ............... remove all entries
             ....................... for the given grp ip mask port

 -- command 'dispatcher' - manage dispatcher

   * Examples:  dispatcher addgw 1 sip:1.2.3.1:5050 1 'outbound gateway'
   *            dispatcher addgw 2 sip:1.2.3.4:5050 3 ''
   *            dispatcher rmgw 4
 dispatcher show ..................... show dispatcher gateways
 dispatcher reload ................... reload dispatcher gateways
 dispatcher dump ..................... show in memory dispatcher gateways
 dispatcher addgw <setid> <destination> <flags> <description>
            .......................... add gateway
 dispatcher rmgw <id> ................ delete gateway

 -- command 'db' - database operations

 db exec <query> ..................... execute SQL query
 db roexec <roquery> ................. execute read-only SQL query
 db run <id> ......................... execute SQL query from $id variable
 db rorun <id> ....................... execute read-only SQL query from
                                       $id variable
 db show <table> ..................... display table content

 -- command 'speeddial' - manage speed dials (short numbers)

 speeddial show <speeddial-id> ....... show speeddial details
 speeddial list <sip-id> ............. list speeddial for uri
 speeddial add <sip-id> <sd-id> <new-uri> [<desc>] ...
           ........................... add a speedial (*)
 speeddial rm <sip-id> <sd-id> ....... remove a speeddial (*)
 speeddial help ...................... help message
    - <speeddial-id>, <sd-id> must be an AoR (username@domain)
    - <sip-id> must be an AoR (username@domain)
    - <new-uri> must be a SIP AoR (sip:username@domain)
    - <desc> a description for speeddial

 -- command 'avp' - manage AVPs

 avp list [-T table] [-u <sip-id|uuid>]
     [-a attribute] [-v value] [-t type] ... list AVPs
 avp add [-T table] <sip-id|uuid>
     <attribute> <type> <value> ............ add AVP (*)
 avp rm [-T table]  [-u <sip-id|uuid>]
     [-a attribute] [-v value] [-t type] ... remove AVP (*)
 avp help .................................. help message
    - -T - table name
    - -u - SIP id or unique id
    - -a - AVP name
    - -v - AVP value
    - -t - AVP name and type (0 (str:str), 1 (str:int),
                              2 (int:str), 3 (int:int))
    - <sip-id> must be an AoR (username@domain)
    - <uuid> must be a string but not AoR

 -- command 'alias_db' - manage database aliases

 alias_db show <alias> .............. show alias details
 alias_db list <sip-id> ............. list aliases for uri
 alias_db add <alias> <sip-id> ...... add an alias (*)
 alias_db rm <alias> ................ remove an alias (*)
 alias_db help ...................... help message
    - <alias> must be an AoR (username@domain)"
    - <sip-id> must be an AoR (username@domain)"

 -- command 'domain' - manage local domains

 domain reload ....................... reload domains from disk
 domain show ......................... show current domains in memory
 domain showdb ....................... show domains in the database
 domain add <domain> ................. add the domain to the database
 domain rm <domain> .................. delete the domain from the database

 -- command 'cisco_restart' - restart CISCO phone (NOTIFY)

 cisco_restart <uri> ................ restart phone configured for <uri>

 -- command 'online' - dump online users from memory

 online ............................. display online users

 -- command 'monitor' - show internal status

 monitor ............................ show server's internal status

 -- command 'ping' - ping a SIP URI (OPTIONS)

 ping <uri> ......................... ping <uri> with SIP OPTIONS

 -- command 'ul|alias' - manage user location or aliases

 ul show [<username>]................ show in-RAM online users
 ul show --brief..................... show in-RAM online users in short format
 ul rm <username> [<contact URI>].... delete user's usrloc entries
 ul add <username> <uri> ............ introduce a permanent usrloc entry
 ul add <username> <uri> <expires> .. introduce a temporary usrloc entry

 -- command 'fifo'

 fifo ............................... send raw FIFO command

opensips The cake is a lie!

$
0
0

opensips The cake is a lie!

«SIP/2.0 480 The cake is a lie!.»

This error appears when your opensips can't see any media server active. Make sure you have added media servers ip correctly and they are reachable from opensips.

Установка и первоначальная конфигурация OpenSIPS

$
0
0

Установка и первоначальная конфигурация OpenSIPS

Протестировано на CentOS 7.X with OpenSIPS 1.7.1

Подготовка инсталляции

Создадим пользователя 'opensips'

useradd -d /usr/local/etc/opensips -s /sbin/nologin opensips

Создание и конфигурация opensips.log

Создадим log файл

touch /var/log/opensips.log
chown opensips:opensips /var/log/opensips.log

Добавим log в rsyslog.conf

nano /etc/rsyslog.conf
Add this line to the file:
local0.*                                                /var/log/opensips.log

Перезагрузим rsyslog

systemctl restart rsyslog

Установим зависимости

yum install -y gcc-c++ bison lynx subversion flex curl-devel libxslt libxml2-devel
libxml2 pcre-devel  wget make

yum -y install mariadb-server mariadb mariadb-devel

 systemctl start mariadb.service
 systemctl enable mariadb.service
Скачаем и скомпилируем OpenSIPS 1.7.1

Скачаем исходники

cd /usr/src
wget http://opensips.org/pub/opensips/1.7.1/src/opensips-1.7.1_src.tar.gz
tar zxvf opensips-1.7.1_src.tar.gz
cd opensips-1.7.1-tls

Скомпилируем с поддержкой MySQL

make all include_modules="db_mysql"

Установим OpenSIPS

make include_modules="db_mysql" prefix="/usr/local" install
Конфигурация OpenSIPS

Создадим Базу Данных MySQL

Отредактируем opensipsctlrc файл

nano /usr/local/etc/opensips/opensipsctlrc
раскомментируйте следующие строки:
DBENGINE=MYSQL
DBHOST=localhost
DBNAME=opensips
DBRWUSER=opensips
DBRWPW="DBPASSWORD"

Запустим opensipsdbctl

Введите рутовый пароль MySQL если он задан.

opensipsdbctl create
MySQL password for root: 

Создайте стартовые скрипты

cp /usr/src/opensips-1.7.1-tls/packaging/rpm/opensips.init /etc/init.d/opensips &&
sed -i "s/\/usr\/sbin\/opensips/\/usr\/local\/sbin\/opensips/g" /etc/init.d/opensips &&
sed -i "s/\/etc\/opensips/\/usr\/local\/etc\/opensips/g" /etc/init.d/opensips &&
sed -i "s/\/etc\/default\/opensips/\/usr\/local\/etc\/opensips/g" /etc/init.d/opensips &&
sed -i "s/RUN_OPENSIPS=no/RUN_OPENSIPS=yes/g" /etc/init.d/opensips &&
chmod +x /etc/init.d/opensips &&
chkconfig opensips on

Редактируем opensips.cfg

Создадим новый конфиг opensips.cfg

mv /usr/local/etc/opensips/opensips.cfg /usr/local/etc/opensips/opensips.cfg.noload
nano /usr/local/etc/opensips/opensips.cfg

Скопипастим в новый файл opensips.cfg

Замените «ext.ip.addr» на публичный IP вашего OpenSIPS сервера.
«eth0» - на имя ethernet интерфейса вашего сервера.

modparam("dispatcher", "db_url", "mysql://opensips:DBPASSWORD@localhost/opensips") 
- отредактируйте в соответствии с вашими настройками MySQL.

Конфиг под спойлером

opensips.cfg
Запустим OpenSIPS

/etc/init.d/opensips start

Добавление SIP серверов в OpenSIPS dispatcher

Замените fs1.ext.ip.addrи fs2.ext.ip.addrна IP адреса ваших серверов:

opensipsctl dispatcher addgw 1 sip:fs1.ext.ip.addr:5060 0 'fs1'
opensipsctl dispatcher addgw 1 sip:fs2.ext.ip.addr:5060 0 'fs2'

Дебаг

Установка Asterisk 13 на Debian 8

$
0
0

Установка Asterisk 13 на Debian 8

Установка зависимостей

apt-get install -y build-essential autoconf libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libsox-fmt-all uuid-dev libjansson-dev libiksemel-dev libssl-dev libtiff5-dev mysql-client libmyodbc lame linux-headers-`uname -r`

Установка DAHDI и LibPRI

DAHDI

cd /usr/src &&
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz &&
tar xvfz dahdi-linux-complete-current.tar.gz &&
rm -f dahdi-linux-complete-current.tar.gz &&
cd dahdi-linux-complete-* &&
make all &&
make install &&
make config

LibPRI

cd /usr/src &&
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz &&
tar xvfz libpri-current.tar.gz &&
rm -f libpri-current.tar.gz &&
cd libpri-* &&
make &&
make install

PJSip

cd /usr/src &&
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2 &&
tar -xjvf pjproject-*.tar.bz2 &&
rm -f pjproject-*.tar.bz2 &&
cd pjproject-* &&
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr &&
make dep &&
make &&
make install

SpanDSP

 apt-get install -y libspandsp2 libspandsp-dev

Asterisk 13

cd /usr/src &&
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz &&
tar xvfz asterisk-13-current.tar.gz &&
rm -f asterisk-13-current.tar.gz &&

Codec OPUS

 apt-get install -y libopus-dev opus-tools

wget https://github.com/seanbright/asterisk-opus/archive/asterisk-13.3.zip -O opus-asterisk13.zip &&
unzip opus-asterisk13.zip &&
rm -f opus-asterisk13.zip &&
cp asterisk-opus-asterisk*/codecs/* asterisk-13*/codecs/ &&
cp asterisk-opus-asterisk*/formats/* asterisk-13*/formats/ &&
cp asterisk-opus-asterisk*/asterisk.patch asterisk-13*/ &&
cd asterisk-13* &&
patch -p1 < ./asterisk.patch &&
./bootstrap.sh &&
cd /usr/src

Asterisk 13

cd asterisk-13* &&
contrib/scripts/get_mp3_source.sh &&
contrib/scripts/install_prereq install &&
./configure &&
make menuselect

Выберите, как минимум, следующие компоненты Asterisk

  • Add-ons: format_mp3
  • Core Sound Packages: CORE-SOUNDS-EN-(GSM), CORE-SOUNDS-RU-(GSM)
  • Extras Sound Packages: GSM
и продолжим установку

make &&
make install &&
make config &&
make samples &&
ldconfig

Codec G729

Узнайте какой у вас процессор

 cat /proc/cpuinfo | grep model name

Скачать с сайта http://asterisk.hosting.lv/#bin

 wget -P /usr/lib/asterisk/modules -O codec_g729.so link_to_download
тестируем старт Asterisk

Asterisk user

 adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
 usermod -a -G dialout,audio asterisk

Права

chown -R asterisk:asterisk /var/lib/asterisk &&
chown -R asterisk:asterisk /var/log/asterisk &&
chown -R asterisk:asterisk /var/run/asterisk &&
chown -R asterisk:asterisk /var/spool/asterisk &&
chown -R asterisk:asterisk /usr/lib/asterisk &&
chown -R asterisk:asterisk /etc/asterisk &&
chmod -R u=rwX,g=rX,o= /var/lib/asterisk &&
chmod -R u=rwX,g=rX,o= /var/log/asterisk &&
chmod -R u=rwX,g=rX,o= /var/run/asterisk &&
chmod -R u=rwX,g=rX,o= /var/spool/asterisk &&
chmod -R u=rwX,g=rX,o= /usr/lib/asterisk &&
chmod -R u=rwX,g=rX,o= /etc/asterisk

Русский голос по умолчанию

 sed -i 's/defaultlanguage = en/defaultlanguage = ru/' /etc/asterisk/asterisk.conf
 sed -i 's/;language=en/language=ru/' /etc/asterisk/*.conf

Start as Asterisk user

Раскомментируем в/etc/default/asterisk

 AST_USER="asterisk"
 AST_GROUP="dialout"

Тест

 /etc/init.d/asterisk start

 ps aux | grep asterisk
asterisk   850  0.9  0.5 2626632 45140 ?       Ssl  12:38   0:04 /usr/sbin/asterisk -U asterisk -G asterisk
root       925  0.0  0.0  12728  2076 pts/0    S+   12:46   0:00 grep asterisk

Использованные материалы

Dial

$
0
0

Dial

Команда плана набора Asterisk "Dial"

Краткий обзор

Приложение Asterisk 'Dial', пытается установить соединение, одного устройства с другим.

Описание

Данное приложение направляет вызовы на один или несколько назначенных каналов. Как только один из запрашиваемых каналов отвечает, происходит соединение. Эти два канала и составляют активное соединение. Вызовы на остальные запрашиваемые каналы прекращаются (hangup).
Если тайм-аут не назначен, вызов будет ждать бесконечно, пока кто-то из пользователей не произведет отбой, или все вызываемые каналы получат статус «занят» или «недоступен»(busy or unavailable).

Если ${OUTBOUND_GROUP}переменная установлена, все каналы созданные этим приложением будут группированы, как (Set(GROUP()=…).

При использовании переменной ${OUTBOUND_GROUP_ONCE}все каналы созданные этим приложением будут также сгруппированы, как (Set(GROUP()=…),
но в отличии от ${OUTBOUND_GROUP}, после использование значение не сохранится и будет удалено.

Приложение «Dial» также возвращает следующие переменные:

${DIALEDTIME}: Время с начала набора до разъединения вызова.

${ANSWEREDTIME}: Фактическое время соединения (разговора).

${DIALSTATUS}: Состояние вызова.

  • CHANUNAVAIL
  • CONGESTION
  • NOANSWER
  • BUSY
  • ANSWER
  • CANCEL
  • DONTCALL: Для Privacy и Screening Modes. Будет установлен, если вызываемый абонент выбирает для отправки вызывающему абоненту сценария «Go Away».
  • TORTURE: Для Privacy и Screening Modes. Будет установлен, если вызываемый абонент выбирает для отправки вызывающему абоненту сценария «Torture».
  • INVALIDARGS

Синтаксис

Dial(Technology/Resource[&Technology2/Resource2[&…]][,timeout[,options[,URL]]])

Аргументы

Technology/Resource - Определение устройств для вызова в формате 'Technology/Resource', где <Technology> означает специфическую технологию драйвера канала, а <Resource> доступные для заданной технологии каналы.

  • DAHDI/1 - Вызов устройства DAHDI.
  • DAHDI/g0/${EXTEN} - Вызов через группу каналов DAHDI
  • SIP/100 - Вызов SIPпира.
  • PJSIP/${EXTEN}@pjsip_trunk - вызов через PJSIP транк.
  • Local/100@from-internal - вызов через локальный прокси драйвер Asterisk.
core show channeltypes

Technology2/Resource2 - Параллельный вызов дополнительных устройств. Если требуется вызвать более одного устройства используйте синтаксис: Technology2/Resource2&Technology3/Resourse3&…..

timeout - Время подачи вызова на указанные устройства. Если не задано, время по умолчанию 136 лет.

 exten => _1XXX,1,Dial(PJSIP/${EXTEN},60,)

Опции

  • A(x): Воспроизведение голосового сообщения для вызывающей стороны. Где (х) звуковой файл.
 exten => _1XXX,1,Dial(PJSIP/${EXTEN},60,A(demo-congrats))
  • a: Ответить на вызов, вне зависимости от состояния вызываемого канала. Обычно ответ на вызовпроисходит, когда отвечает вызываемый канал, но иногда требуется ответить до того, как поднимут трубку. Например при использовании опций A() и M().

b([[context^]exten^]priority[(arg1[^...][^argN])]): Выполнить переход, аналогичный GoSub, до того, как будет вызван канал указанный в Technology/Resource

    Before initiating
    an outgoing call, Gosub to the specified location using the newly created
    channel.  The Gosub will be executed for each destination channel.
  • * B([[context^]exten^]priority[(arg1[^...][^argN])])**: Before initiating

the outgoing call(s), Gosub to the specified location using the current

  channel.

[sub-4555]
exten => s,1,playback(${ARG1})
exten => s,n,return
[from-4555]
exten => _4555,1,Answer
exten => _4555,n,Dial(PJSIP/2829@fs_pjsip,60,B(sub-4555,s,1(demo-congrats)))

code

- Executing [4555@from-4555:1]Answer("SIP/samsung-000000cd","")innew stack
    -- Executing [4555@from-4555:2]Dial("SIP/samsung-000000cd","PJSIP/2829@fs_pjsip,60,b(sub-4555,s,1(demo-congrats))")innew stack
    -- PJSIP/fs_pjsip-000000a4 Internal Gosub(sub-4555,s,1(demo-congrats)) start
    -- Executing [s@sub-4555:1] Playback("PJSIP/fs_pjsip-000000a4","demo-congrats")innew stack
    --<PJSIP/fs_pjsip-000000a4> Playing 'demo-congrats.gsm'(language 'en')-- Executing [s@sub-4555:2] Return("PJSIP/fs_pjsip-000000a4","")innew stack
  == Spawn extension (from-fs-pjsip,4555,1) exited non-zero on 'PJSIP/fs_pjsip-000000a4'-- PJSIP/fs_pjsip-000000a4 Internal Gosub(sub-4555,s,1(demo-congrats)) complete GOSUB_RETVAL=-- Called PJSIP/2829@fs_pjsip
  • C: Сбросить детализированный отчет о звонках (CDR) для этого вызова.
  • c: Если приложение Dial() отменяет этот вызов, всегда устанавливать HANGUPCAUSE в 'answered elsewhere'
  • d: Allow the calling user to dial a 1 digit extension while waiting

for a call to be answered. Exit to that extension if it exists in the

  current context, or the context defined in the ${EXITCONTEXT} variable,
  if it exists.
  NOTE: Many SIP and ISDN phones cannot send DTMF digits until the
  call is connected.  If you wish to use this option with these phones,
  you can use the 'Answer' application before dialing.
  • D([called][:calling[:progress]]): Send the specified DTMF strings

after the called party has answered, but before the call gets bridged.

  The <called> DTMF string is sent to the called party, and the <calling>
  DTMF string is sent to the calling party.  Both arguments can be used
  alone.  If <progress> is specified, its DTMF is sent to the called party
  immediately after receiving a PROGRESS message.
  See SendDTMF for valid digits.
  • e: Execute the 'h' extension for peer after the call ends
  • f([x]): If <x> is not provided, force the CallerID sent on a

call-forward or deflection to the dialplan extension of this Dial() using

  a dialplan 'hint'. For example, some PSTNs do not allow CallerID to be
  set to anything other than the numbers assigned to you. If <x> is provided,
  force the CallerID sent to <x>.
  • F(z):
    • x - Maximum call time, in milliseconds
  • y - Warning time, in milliseconds
  • z - Repeat time, in milliseconds

Limit the call to <x> milliseconds. Play a warning when <y> milliseconds are left. Repeat the warning every <z> milliseconds until time expires.

  This option is affected by the following variables:
      ${LIMIT_PLAYAUDIO_CALLER}:
          yes
          no
          If set, this variable causes Asterisk to play the
          prompts to the caller.
      ${LIMIT_PLAYAUDIO_CALLEE}:
          yes
          no
          If set, this variable causes Asterisk to play the
          prompts to the callee.
      ${LIMIT_TIMEOUT_FILE}:
          filename
          If specified, <filename> specifies the sound prompt
          to play when the timeout is reached. If not set, the time remaining
          will be announced.
      ${LIMIT_CONNECT_FILE}:
          filename
          If specified, <filename> specifies the sound prompt
          to play when the call begins. If not set, the time remaining will
          be announced.
      ${LIMIT_WARNING_FILE}:
          filename
          If specified, <filename> specifies the sound prompt
          to play as a warning when time <x> is reached. If not set, the
          time remaining will be announced.
  m([class]): Provide hold music to the calling party until a requested
  channel answers. A specific music on hold <class> (as defined in "mus
  iconhold.conf") can be specified.
  M(macro[^arg[^...]]):
      macro - Name of the macro that should be executed.
      arg - Macro arguments

Execute the specified <macro> for the *called* channel before connecting to the calling channel. Arguments can be specified to the Macro using '^' as a delimiter. The macro can set the variable ${MACRO_RESULT} to specify the following actions after the macro is finished executing:

      ${MACRO_RESULT}: If set, this action will be taken after
      the macro finished executing.
          ABORT: Hangup both legs of the call
          CONGESTION: Behave as if line congestion was
          encountered
          BUSY: Behave as if a busy signal was encountered
          CONTINUE: Hangup the called party and allow the
          calling party to continue dialplan execution at the next priority
          GOTO:[[<context>^]<exten>^]<priority>: Transfer the
          call to the specified destination.
  NOTE: You cannot use any additional action post answer options in
  conjunction with this option. Also, pbx services are run on the peer
  (called) channel, so you will not be able to set timeouts via the TIMEOUT()
  function in this macro.
  WARNING!!!: Be aware of the limitations that macros have, specifically
  with regards to use of the 'WaitExten' application. For more information,
  see the documentation for Macro()
  n([delete]):
      delete - With <delete> either not specified or set to '0
      ', the recorded introduction will not be deleted if the caller hangs
      up while the remote party has not yet answered.

- With <delete> set to '1', the introduction will always be deleted. This option is a modifier for the call screening/privacy mode. (See the 'p' and 'P' options.) It specifies that no introductions are to be saved in the «priv-callerintros» directory.

  N: This option is a modifier for the call screening/privacy mode.
  It specifies that if Caller*ID is present, do not screen the call.
  o([x]): If <x> is not provided, specify that the CallerID that was
  present on the *calling* channel be stored as the CallerID on the *called*
  channel. This was the behavior of Asterisk 1.0 and earlier. If <x> is
  provided, specify the CallerID stored on the *called* channel. Note that
  o(${CALLERID(all)}) is similar to option o without the parameter.
  O([mode]):
      mode - With <mode> either not specified or set to '1', the
      originator hanging up will cause the phone to ring back immediately.

- With <mode> set to '2', when the operator flashes the trunk, it will ring their phone back. Enables *operator services* mode. This option only works when bridging a DAHDI channel to another DAHDI channel only. if specified on non-DAHDI interfaces, it will be ignored. When the destination answers (presumably an operator services station), the originator no longer has control of their line. They may hang up, but the switch will not release their line until the destination party (the operator) hangs up.

  p: This option enables screening mode. This is basically Privacy
  mode without memory.
  P([x]): Enable privacy mode. Use <x> as the family/key in the AstDB
  database if it is provided. The current extension is used if a database
  family/key is not specified.
  r([tone]): Default: Indicate ringing to the calling party, even if
  the called party isn't actually ringing. Pass no audio to the calling
  party until the called channel has answered.
      tone - Indicate progress to calling party. Send audio 'tone'
      from the indications.conf tonezone currently in use.
  S(x): Hang up the call <x> seconds *after* the called party has
  answered the call.
  s(x): Force the outgoing callerid tag parameter to be set to the
  string <x>.
  Works with the f option.
  t: Allow the called party to transfer the calling party by sending
  the DTMF sequence defined in "features.conf". This setting does not perform
  policy enforcement on transfers initiated by other methods.
  T: Allow the calling party to transfer the called party by sending
  the DTMF sequence defined in "features.conf". This setting does not perform
  policy enforcement on transfers initiated by other methods.
  U(x[^arg[^...]]):
      x - Name of the subroutine to execute via Gosub
      arg - Arguments for the Gosub routine

Execute via Gosub the routine <x> for the *called* channel before connecting to the calling channel. Arguments can be specified to the Gosub using '^' as a delimiter. The Gosub routine can set the variable ${GOSUB_RESULT} to specify the following actions after the Gosub returns.

      ${GOSUB_RESULT}:
          ABORT: Hangup both legs of the call.
          CONGESTION: Behave as if line congestion was
          encountered.
          BUSY: Behave as if a busy signal was encountered.
          CONTINUE: Hangup the called party and allow the
          calling party to continue dialplan execution at the next priority.
          GOTO:[[<context>^]<exten>^]<priority>: Transfer the
          call to the specified destination.
  NOTE: You cannot use any additional action post answer options in
  conjunction with this option. Also, pbx services are run on the peer
  (called) channel, so you will not be able to set timeouts via the TIMEOUT()
  function in this routine.
  u(x):
      x - Force the outgoing callerid presentation indicator
      parameter to be set to one of the values passed in <x>: 'allowed_
      not_screened' 'allowed_passed_screen' 'allowed_failed_screen' 'allowed'
      'prohib_not_screened' 'prohib_passed_screen' 'prohib_failed_screen'
      'prohib' 'unavailable'

Works with the f option.

  w: Allow the called party to enable recording of the call by sending
  the DTMF sequence defined for one-touch recording in "features.conf".
  W: Allow the calling party to enable recording of the call by sending
  the DTMF sequence defined for one-touch recording in "features.conf".
  x: Allow the called party to enable recording of the call by sending
  the DTMF sequence defined for one-touch automixmonitor in "features.c
  onf".
  X: Allow the calling party to enable recording of the call by sending
  the DTMF sequence defined for one-touch automixmonitor in "features.c
  onf".
  z: On a call forward, cancel any dial timeout which has been set
  for this call.

URL

  The optional URL will be sent to the called party if the channel
  driver supports it.

См также:

Команды диалплана Asterisk12 в алфавитном порядке

Spoiler

Asterisk

$
0
0

Наши контакты


info@asterisk-pbx.ru

Skype:asterisk-pbx.ru


+7 (812) 998-11-38

+7 (921) 998-11-38


Неотек Инжиниринг

194021,Санкт-Петербург
2-й Муринский пр-т, 49, оф. 225

время работы офиса 10-00 до 17-30

Asterisk

Услуги по установке и настройке IP АТС Asterisk.

Построение Колл-Центра на базе IP АТС Asterisk и FreeSWITCH.

Интеграция Asterisk с TDM АТС через ISDN PRI E1 или VoIP с единым номерным планом

Факс-Сервер, Конференц-Сервер, GSM-VoIP шлюз, SIP-SKYPE шлюз, TDM over IP

Wiki Asterisk

Asterisk IP Телефония VoIP АТС FreePBX GUI Dial Dahdi SIP PJSIP Skype Документация

Наша организация предлагает услуги по установке, настройке и обслуживанию IP АТСAsteriskи FreeSWITCH

Установка IP АТС на открытом программном обеспечении включает в себя следующие этапы:

  1. Разработка технического задания с учетом требований заказчика и возможностей IP АТС.
  2. Подготовка договора на установку и настройку и, если требуется, поставку оборудования.
  3. Подготовка счета на оплату с учетом технического задания, согласование сроков и порядка оплаты.
  4. Удаленная установка IP АТС в любой точке мира.
  5. Установка IP АТС с выездом на объект.
  6. Предварительная настройка оборудования.
  7. Сдача проекта. Проверка работоспособности всех компонентов и алгоритмов работы IP АТС.
  8. Обучение для дальнейшей самостоятельной эксплуатации IP АТС сотрудниками заказчика.
  9. Бесплатная техническая поддержка в течении месяца с момента запуска в эксплуатацию.

Телефония будущего Asterisk

Asterisk как IP АТС

Приложение работает на операционных системах

  • Linux, FreeBSD и даже Windows:)

VOIP протоколы:

и др. см. Каналы в Asterisk, а также поддерживаются ISDNи ОКС-7.

Asterisk совместим с VOIP оборудованием через вышеперечисленные протоколы. Компания Digium выпускает платы в PCI и PCIe исполнении, с аналоговыми FXO/FXSи цифровыми E1, T1 и т.д. интерфейсами. Существуют также аналоги от других производителей: Sangoma, OpenVox, Parabel

Asterisk IP PBXможет использоваться в качестве учрежденческой АТС,
коммутируя вызовы, управляя маршрутами,
используя различные опции и соединяя абонентов с миром
через IP, аналоговые (ТФОП) и цифровые (Т1/Е1) каналы связи (DAHDI).
VoIPТелефония Asterisk - это свободно распространяемая (Open Source) программная IP АТС.

Asterisk PBXобладает всеми возможностями классической АТС и предоставляет функции:

Asterisk как Call center

(Call Center на Asterisk)

Факс Сервер Asterisk - Fax Over IP

Asterisk в качестве факс сервера -Asterisk + Hylafax (факс сервер)

  • Прием факсов на емайл(fax-to-email)
  • Отправка факсов через емайл(emai-to-fax)
  • Отправка факсов через драйвер виртуального принтера.
  • Сохранение в сетевой директории.

Asterisk WebRTC

  • Asterisk реализует коммуникации в реальном времени WebRTC

Звонки из браузера в браузер, звонки с сайта, новый этап развития IP коммуникаций.

Asterisk как медиа-сервер

  • Интерактивные голосовые меню любой сложности.(IVR)
  • Голосовая почта с управлением через веб-интерфейс и уведомлением по e-mail.(Voicemail)
  • Конференции с большим количеством участников. Asterisk Конференц-мост
  • Система CDRи записи разговоров.Asterisk-CDR-Viewer

Asterisk как шлюз

Asterisk может быть использован в качестве универсального медиа-шлюза, соединяя старую телефонную сеть общего пользования с VOIP. Передавать цифровые линии E1/T1 через IP(TDM overIP). VOIP в GSM. и т.д., и т.п.

Asterisk GUI

AsteriskNOW, FreePBX Distro, Trixbox, Elastix, Vicidial Call Center Suite, AsterCRM, PBX in a Flash

Asterisk настраивается с помощью конфигурационных файлов. Существует также веб интерфейсы, такие как FreePBX. Asterisk GUIFreePBXиспользуется многими сборками, предлагающими готовые дистрибьютивы Asteriskсо множеством дополнительных приложений. AsteriskNOW, FreePBX Distro, Trixbox, Elastix, Vicidial Call Center Suite, AsterCRM, PBX in a Flash, только некоторые из них.

Asterisk CRM

Asterisk может быть интегрирован с CRMсистемами (VTiger, SugarCRM, 1C Предприятие и др.).

Asterisk billing

A2billing

Asterisk будущее телефонии.

Публикации

SIP TLS SRTP Asterisk

  mkdir /etc/asterisk/keys
  cd  /usr/src/asterisk-13*/contrib/scripts/
  ./ast_tls_cert -C pbx.asterisk-pbx.ru -O "asterisk-pbx.ru" -d /etc/asterisk/keys
  • -C domain или IP адрес)
  • -O name
  • -d directory (/etc/asterisk/keys)

No config file specified, creating '/etc/asterisk/keys/tmp.cfg'
You can use this config file to create additional certs without
re-entering the information for the fields in the certificate
Creating CA key /etc/asterisk/keys/ca.key
Generating RSA private key, 4096 bit long modulus
..++
........................................................................................................................++
e is 65537 (0x10001)
Enter pass phrase for /etc/asterisk/keys/ca.key:
Verifying - Enter pass phrase for /etc/asterisk/keys/ca.key:
Creating CA certificate /etc/asterisk/keys/ca.crt
Enter pass phrase for /etc/asterisk/keys/ca.key:
Creating certificate /etc/asterisk/keys/asterisk.key
Generating RSA private key, 1024 bit long modulus
.++++++
.........++++++
e is 65537 (0x10001)
Creating signing request /etc/asterisk/keys/asterisk.csr
Creating certificate /etc/asterisk/keys/asterisk.crt
Signature ok
subject=/CN=192.168.251.253/O=bk
Getting CA Private Key
Enter pass phrase for /etc/asterisk/keys/ca.key:
Combining key and crt into /etc/asterisk/keys/asterisk.pem

Задать пароль и повторить два раза.

Читать дальше...

Asterisk 'sip.zadarma.com' PJSIP trunk

local_net - локальная сеть (например 192.168.0.0/24)
external_media_address = внешний IP
external_signaling_address = внешний IP
SIP_USER - SIPлогин
SIP_PASSWORD - SIPпароль

/etc/asterisk/pjsip.conf

Читать дальше...

Установка Asterisk 13 + FreePBX 13 на CentOS 7

$
0
0

Установка Asterisk 13 + FreePBX 13 на CentOS 7

CentOS 7 64-bit Asterisk 13, FreePBX 13 , libpri, DAHDI, Mysql (mariadb), apache2, lame, php, httpd.conf, php.ini

Выключение SELinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

Зависимости

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum install -y kernel-devel kernel-headers

yum install -y e2fsprogs-devel  keyutils-libs-devel krb5-devel libogg \
libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear \
php php-gd php-mysql php-pdo php-mbstring ncurses-devel \
mysql-connector-odbc unixODBC unixODBC-devel \
audiofile-devel libogg-devel openssl-devel zlib-devel  \
perl-DateManip sox git wget net-tools psmisc

yum install -y gcc gcc-c++ make gnutls-devel \
libxml2-devel ncurses-devel subversion doxygen \
texinfo curl-devel net-snmp-devel neon-devel  \
uuid-devel libuuid-devel sqlite-devel sqlite \
speex-devel gsm-devel libtool libtool-ltdl libtool-ltdl-devel 

Сделайте полный апдейт

 yum update -y

Перезагрузите компьютер

 reboot

Установка mysql (mariadb)

1: Установим mariadb (MySQL)

 yum -y install mariadb-server mariadb mariadb-devel

2: Запустим и включим автозагрузку mariadb (MySQL)

 systemctl start mariadb.service
 systemctl enable mariadb.service

3: Запустим интерактивный конфигуратор (будет предложено задать пароль пользователя root для mysql и др.)

 mysql_secure_installation
Spoiler

Установите PearDB

 pear uninstall db
 pear install db-1.7.14

SRTP

 cd /usr/src && wget http://srtp.sourceforge.net/srtp-1.4.2.tgz 

tar zxvf srtp-1.4.2.tgz && 
cd srtp && autoconf && 
./configure CFLAGS=-fPIC --prefix=/usr && 
make && 
make runtest && 
make install

Pjproject

 cd /usr/src && git clone git://github.com/asterisk/pjproject pjproject 

cd pjproject/ && 
./configure --libdir=/usr/lib64 --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video &&
make dep &&
make &&
make install &&
ldconfig &&
ldconfig -p | grep pj
Вывод ldconfig -p | grep pj

libjansson

 cd /usr/src && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz

tar zvxf jansson-2.5.tar.gz && 
cd jansson-2.5 && 
./configure --prefix=/usr/ && 
make clean && 
make && 
make install && 
ldconfig

Исходники

cd /usr/src &&  
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.5.0.tar.gz &&
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Lame

cd /usr/src && 
tar zxvf lame-3.98.4.tar.gz && 
cd lame-3.98.4 && 
./configure && 
make && 
make install 

DAHDI & LibPRI

 yum install "kernel-devel-uname-r == $(uname -r)"

cd /usr/src && 
tar xvfz dahdi-linux-complete-current.tar.gz && 
cd dahdi-linux-complete-* && 
make all && 
make install && 
make config
cd /usr/src && 
tar xvfz libpri-1.5.*.tar.gz && 
cd /usr/src/libpri-1.5.* && 
make && 
make install

SpanDSP

cd /usr/src && wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz
tar zxvf spandsp-0.0.6.tar.gz && 
cd spandsp-0.0.6 && 
./configure && 
make && 
make install &&
ln -s /usr/local/lib/libspandsp.so.2 /usr/lib64/libspandsp.so.2

Asterisk 13

cd /usr/src && 
tar xvfz asterisk-13*.tar.gz &&
cd asterisk-13.* &&
./configure --libdir=/usr/lib64 &&
contrib/scripts/get_mp3_source.sh &&
make menuselect
Asterisk 12

После ввода команды make menuselect, вам будет предложено выбрать устанавливаемые модули. Большинство требуемых модулей выбираются автоматически. Для поддержки mp3 включите модуль 'format_mp3'

 --->  Add-ons (See README-addons.txt)  
             --- extended ---
             XXX chan_mobile
             [*] chan_ooh323
             [*] format_mp3
             [*] res_config_mysql
             --- deprecated ---
             [*] app_mysql
             [*] app_saycountpl
             [*] cdr_mysql

  ---> Core Sound Packages
            [*] CORE-SOUNDS-RU-GSM
  --->  Extras Sound Packages
            [*] EXTRA-SOUNDS-EN-GSM  

make && make install && make config && ldconfig
 sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g'  /usr/sbin/safe_asterisk

Создайте пользователя Asterisk и задайте права пользователя.

useradd -m asterisk &&
chown asterisk.asterisk /var/run/asterisk &&
chown -R asterisk.asterisk /etc/asterisk &&
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk &&
chown -R asterisk.asterisk /usr/lib64/asterisk 

Настроим httpd (Apache)

cp /etc/php.ini /etc/php.ini_orig &&
sed -ie 's/\;date\.timezone\ \=/date\.timezone\ \=\ "Europe\/Moscow"/g' /etc/php.ini &&
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini &&
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig &&
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf &&
sed -i 's/AllowOverride None/AllowOverride All/'  /etc/httpd/conf/httpd.conf &&
systemctl restart httpd &&
systemctl enable httpd

FreePBX

freepbx13

pear install Console_Getopt

cd /usr/src &&
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz

tar zxvf freepbx-13.0-latest.tgz &&
cd freepbx &&
./start_asterisk start
 ./install -n

Подключимся к FreePBX

http://IP.Address.FreePBX.Server/admin

Первым делом, вам будет предложено задать имя пользователя и пароль FreePBX

freepbx start set user login

Can Not Connected To Asterisk

Если появится предупреждение Can Not Connected To Asterisk, а Asterisk точно запущен, закомментируйте инклюды в файле /etc/asterisk/manager.conf

;#include manager_additional.conf
;#include manager_custom.conf

Установка Asterisk

SIP TLS SRTP Asterisk

$
0
0

SIP TLS SRTP Asterisk

  mkdir /etc/asterisk/keys
  cd  /usr/src/asterisk-13*/contrib/scripts/
  ./ast_tls_cert -C pbx.asterisk-pbx.ru -O "asterisk-pbx.ru" -d /etc/asterisk/keys
  • -C domain или IP адрес)
  • -O name
  • -d directory (/etc/asterisk/keys)

No config file specified, creating '/etc/asterisk/keys/tmp.cfg'
You can use this config file to create additional certs without
re-entering the information for the fields in the certificate
Creating CA key /etc/asterisk/keys/ca.key
Generating RSA private key, 4096 bit long modulus
..++
........................................................................................................................++
e is 65537 (0x10001)
Enter pass phrase for /etc/asterisk/keys/ca.key:
Verifying - Enter pass phrase for /etc/asterisk/keys/ca.key:
Creating CA certificate /etc/asterisk/keys/ca.crt
Enter pass phrase for /etc/asterisk/keys/ca.key:
Creating certificate /etc/asterisk/keys/asterisk.key
Generating RSA private key, 1024 bit long modulus
.++++++
.........++++++
e is 65537 (0x10001)
Creating signing request /etc/asterisk/keys/asterisk.csr
Creating certificate /etc/asterisk/keys/asterisk.crt
Signature ok
subject=/CN=192.168.251.253/O=bk
Getting CA Private Key
Enter pass phrase for /etc/asterisk/keys/ca.key:
Combining key and crt into /etc/asterisk/keys/asterisk.pem

Задать пароль и повторить два раза.

sip.conf

[general]
tcpenable=yes
bindaddr=0.0.0.0
tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1
tlsdontverifyserver=yes

[general]
register => tls://SIPTRUNK:PASSWORD@123.123.123.123:5061

[SIPTRUNK]
type=friend
context=from-TLSTRUNK
host=123.123.123.123
port=5061
secret=PASSWORD
dtmfmode=rfc2833
disallow=all
allow=alaw
fromdomain=123.123.123.123
insecure=port,invite
qualify=yes
canreinvite=no
encryption=yes
transport=tls

*CLI> module load res_srtp.so
Loaded res_srtp.so
 Loaded res_srtp.so => (Secure RTP (SRTP))
*CLI> module show like srtp
Module                         Description                              Use Count  Status      Support Level
res_srtp.so                    Secure RTP (SRTP)                        0          Running              core
1 modules loaded

modules.conf

 load = res_srtp.so
 

*CLI> sip reload
 Reloading SIP
  == Parsing '/etc/asterisk/sip.conf': Found
  == Using SIP TOS bits 96
  == Using SIP CoS mark 4
  == TLS/SSL ECDH initialized (automatic), faster PFS ciphers enabled
  == TLS/SSL certificate ok

Asterisk pjsip.conf

$
0
0

Asterisk pjsip.conf

PJSip - драйвер канала SIP в Asterisk 12.

Что такое PJSIP

PJSIP мультимедийная библиотека с открытым кодом, для реализации протоколов SIP, SDP, RTP, STUN, TURNи ICE. Она сочетает лучшие возможности SIPсигнализации, хорошую проходимость NATи высокий уровень взаимодействия с приложениями. Подходит практически для любого типа систем, начиная от компьютеров и заканчивая встраиваемыми системами (embedded systems) и мобильными телефонами.

Формат файла pjsip.conf

Pjsip.conf обычный текстовый файл, как и все конфигурационные файлы Asterisk, состоит из секций. Каждая секция (раздел) определяет конфигурацию объекта res_pjsip.

Секции отделены друг от друга именами, заключенными в квадратные скобки [какая неожиданность]

и содержат одну или более конфигурационную опцию и её значение отделенное знаком равно.

[ SectionName ] 
ConfigOption = Value 
ConfigOption = Value

Имена секций pjsip.conf

В большинстве случаев имена секций могут быть произвольными, однако в случае с типами ENDPOINT и AORимена должны

совпадать со заголовком SIPURI«To» для идентификации входящих SIPзапросов.

Каждая секция имеет обязательную опцию type=, которой определяется назначение секции в конфигурации объектов res_pjsip.

Типы секций pjsip.conf

Ниже перечислены типы секций res_pjsipи простейшие примеры конфигурации.

Варианты и значения по умолчанию

Как узнать возможные варианты значений и параметры по умолчанию?

В этом поможет встроенная справка интерфейса командной строки (CLI).

«config show help res_pjsip <configobject> <configoption>»

config show help res_pjsip aor

ENDPOINT

Модуль ENDPOINT определяет многочисленные параметры SIP, а также связь с другими модулями - AUTH, AORи TRANSPORT.
Секция ENDPOINT должна быть обязательно связана с одной или несколькими секциями AOR.
По сути дела, ENDPOINT является основным профилем SIPтелефона или SIPтранка в res_pjsip, аналогично пиру в sip.conf.
Только если там определялись почти все параметры, то здесь часть ключевых свойств вынесены в специальные секции (модули), которые и будут рассмотрены ниже.

config show help res_pjsip endpoint
Простой пример конфигурации секции ENDPOINT

[777]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=udp-transport
auth=auth777
aors=777
В данном примере мы видим тип секции: type=endpoint
контекст, разрешенные кодеки и также ассоциацию с другими секциями
transport=udp-transport, auth=auth777и aors=777.
Насколько я понимаю, опции typeи aorsявляются обязательными для работоспособности точки.
Для назначения Caller ID этому пиру(ENDPOINT), потребуется задать следующие параметры:
trust_id_outbound=yes
callerid=V Pupkin <777>

TRANSPORT

Настройка транспортного уровня res_pjsip. Используются протоколы UDP, TCP, WebSockets и методы шифрования TLS/SSL. Можно настроить одну транспортную секцию для использования множеством точек (ENDPOINT), или создать уникальный транспортный уровень для конкретной точки.

config show help res_pjsip transport

Для применения настроек транспортного уровня недостаточно перечитать конфиги. Потребуется рестартовать Asterisk

простой пример конфигурации секции TRANSPORT

[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0

или TLS транспорт:

[tls-transport]
type=transport
protocol=tls
bind=0.0.0.0
;various TLS specific options below:
cert_file=
privkey_file=
ca_list_file=
cipher=
method=
Каждый транспорт в вашей системе должен иметь уникальный порт (также как и в sip_profilesво FreeSWITCH)

localhost*CLI> pjsip show transports

Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress....................>
 =========================================================================================

Transport:  udp-transport             udp      0      0  0.0.0.0:5080
Transport:  udp-transport-infra       udp      0      0  192.168.1.110:5081
Transport:  udp-transport-megafon     udp      0      0  0.0.0.0:5060

AUTH

Секция аутентификации содержит опции и полномочия для входящих и исходящих регистраций. С этой секцией ассоциируются такие секции как ENDPOINT и REGISTRATIONS. Множество точек и регистраций могут использовать одну и ту же секцию аутентификации, если требуется.

config show help res_pjsip auth
Простой пример секции AUTH

[auth777]
type=auth
auth_type=userpass
password=password
username=777
с использованием MD5
[auth6001]
type=auth
auth_type=md5
md5_cred=5f4dcc3b5aa765d61d8327deb882cf99
username=777

AOR

Главная функция AoR (Address of Record) указать Asterisk, как связаться с ENDPOINT. Без соответствующей AORсекции, точка ENDPOINT будет недоступна для вызова. Здесь также задаются соответствия голосовой почте, MWI, продолжительность действия регистрации -expiration и настройки qualify (периодической отправки SIPсообщений OPTONS для мониторинга состояния устройств)

Когда Asterisk получает запрос на регистрацию от устройства, он в первую очередь ищет соответствующую SIPзаголовку To: «777»<sip:777@192.168.1.21;transport=UDP> запись в именах секций AOR– в нашем прмере [777]

config show help res_pjsip aor
Простейший пример секции AOR

[777]
type=aor
max_contacts=1
Опция max_contact=1 значит, что только один SIP User Agent может быть одновременно зарегистрирован через эту запись AOR, можно указать и 10, если потребуется.
[777]
type=aor
contact=sip:777@192.168.1.21:5060
Во втором примере мы не ожидаем запроса на регистрацию от SIP UA, а указываем вручную постоянный контакт для этой записи. Можно не беспокоится о кол-ве подключений, адрес все равно один.
[siptrunk]
type=aor
contact=sip:123.123.1.1:5060
В последнем примере пропущен username, что позволяет использовать данную запись для исходящей связи, определяя вызываемый номер при помощи диалплана «Dial(PJSIP/${EXTEN}@siptrunk)».

REGISTRATION

Секция регистраций отвечает за исходящие регистрации. Используется для регистрации в удаленных системах, будь то другой Asterisk или транк от провайдера.

config show help res_pjsip_outbound_registration registration
Пример секции REGISTRATION

[siptrunk]
type=registration
transport=udp-transport
outbound_auth=siptrunk
server_uri=sip:username@123.123.1.1:5060
client_uri=sip:username@192.168.1.1:5060
retry_interval=60
Для регистрации понадобится определить используемый транспорт и секцию аутентификации. Помимо этого, наверняка, потребуется указать контакт для входящих вызовов.

[providertrunk]
type=registration
transport=udp-transport
outbound_auth=providertrunk
server_uri=sip:sip.example.com
client_uri=sip:1234567890@sip.example.com
retry_interval=60
Пример регистрации транка провайдера.

DOMAIN_ALIAS

Псевдоним домена. [Имя] данной секции является псевдонимом, а конфигурационная опция domain=, доменным именем, которому сопоставлен псевдоним.

config show help res_pjsip domain_alias
Пример секции DOMAIN_ALIAS

[example2.com]
type=domain_alias
domain=example.com

ACL

Модуль не привязан к какой-либо точке ENDPOINTs и управляет всеми входящими SIPкоммуникациями с использованием res_pjsip. Установки ACl (Access Control Lis) могут быть назначены в самой секции, или в файле acl.confна который будет ссылаться секция.

config show help res_pjsip_acl acl
Простые примеры ACL

Asterisk 12 res_pjsip_acl

Настройки берутся из файла acl.conf:

[acl]
type=acl
acl=example_named_acl1
Настройки непосредственно в секции:
[acl]
type=acl
deny=0.0.0.0/0.0.0.0
permit=123.12.123.0
permit=123.12.123.1
Конфиг разрешающий регистрацию на основе SIPзаголовка, а не IP адреса.
[acl]
type=acl
contactdeny=0.0.0.0/0.0.0.0
contactpermit=123.12.123.0
contactpermit=123.12.123.1

IDENTIFY

Определяет конечные точки с помощью IP-адреса источника.

config show help res_pjsip_endpoint_identifier_ip identify
Пример identity

[777]
type=identify
endpoint=777
match=123.0.112.1

CONTACT

Контакты являются одним из способов не указывать явно SIPURIв плане набора (диалплане).

config show help res_pjsip contact

Отношения объектов конфигурации pjsip.conf

ENDPOINT

  • Множество ENDPOINTs связываются с множеством AORs
  • Ноль или больше ENDPOINTs связаны с ноль или одной AUTHs
  • Ноль или больше ENDPOINTs связаны с как минимум одним TRANSPORT
  • Ноль или одна ENDPOINTs связана с определенной IDENTIFY

REGISTRATION

  • Ноль или больше REGISTRATIONs связаны с ноль или одной AUTHs
  • Ноль или больше REGISTRATIONs связаны с как минимум одним TRANSPORT

AOR

  • Множество ENDPOINTs связываются с множеством AORs
  • Множество AORs связаны с множеством CONTACTs

CONTACT

  • Множество CONTACTs связываются с множеством AORs

IDENTIFY

  • Ноль или больше ENDPOINTs связаны с определенным IDENTIFY объектом.

ACL, DOMAIN_ALIAS

  • Эти объекты не имеют направленных связей с другими объектами.

Примеры

Пример ENDPOINT для одного SIP телефона с регистрацией на Asterisk.

;===============TRANSPORT
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============EXTENSION 777
 
[777]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=udp-transport
auth=auth777
aors=777
 
[auth777]
type=auth
auth_type=userpass
password=777
username=777
 
[777]
type=aor
max_contacts=1
  • auth= используется для входящей аутентификации
  • max_contacts= установите кол-во регистраций, одну или более, разрешенных для этой учетной записи.
Пример SIP транка с исходящей регистрацией

;==============TRANSPORTS
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============TRUNK
 
[siptrunk]
type=registration
transport=udp-transport
outbound_auth=siptrunk
server_uri=sip:sip.example.com
client_uri=sip:1234567890@sip.example.com
retry_interval=60
 
[siptrunk]
type=auth
auth_type=userpass
password=1234567890
username=1234567890
 
[siptrunk]
type=aor
contact=sip:123.0.112.1:5060
 
[siptrunk]
type=endpoint
transport=udp-transport
context=from-trunk
disallow=all
allow=ulaw
outbound_auth=siptrunk
aors=siptrunk
 
[siptrunk]
type=identify
endpoint=siptrunk
match=123.0.112.1
Пример регистрации множественных ENDPOINTs с использованием шаблонов

;===============TRANSPORT
 
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
;===============ENDPOINT TEMPLATES
 
[endpoint-basic](!)
type=endpoint
transport=udp-transport
context=from-internal
disallow=all
allow=alaw
 
[auth-userpass](!)
type=auth
auth_type=userpass
 
[aor-single-reg](!)
type=aor
max_contacts=1
 
;===============EXTENSION 777
 
[777](endpoint-basic)
auth=auth777
aors=777
 
[auth777](auth-userpass)
password=777
username=777
 
[777](aor-single-reg)
 
;===============EXTENSION 778
 
[778](endpoint-basic)
auth=auth778
aors=778
 
[auth778](auth-userpass)
password=778
username=778
 
[778](aor-single-reg)
 
;===============EXTENSION 779
 
[779](endpoint-basic)
auth=auth779
aors=779
 
[auth779](auth-userpass)
password=779
username=779
 
[779](aor-single-reg) 
Диалплан extensions.conf
 exten => _6XXX,1,Dial(PJSIP/${EXTEN})
 exten => _9NXXNXXXXXX,1,Dial(PJSIP/mytrunk/sip:${EXTEN:1}@203.0.113.1:5060)
 exten => _9NXXNXXXXXX,1,Dial(PJSIP/${EXTEN:1}@mytrunk)

От старого к новому - sip.conf к pjsip.conf сравнение примеров.

Сравнение конфигурации ENDPOINT

  • Два SIPтелефона должны звонить и принимать вызовы через Asterisk.
  • В обоих случаях для аутентификации используются username и password.
  • 777 регистрируется с динамического IP, 778 со статического IP адреса.

1

sip.confpjsip.conf
[general]
udpbindaddr=0.0.0.0
 
[777]
type=friend
host=dynamic
disallow=all
allow=alaw
context=from-internal
secret=1234
 
[778]
type=friend
host=192.168.1.2
disallow=all
allow=alaw
context=from-internal
secret=1234
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
 
[777]
type = endpoint
transport = sudp-transport
context = from-internal
disallow = all
allow = alaw
aors = 777
auth = auth777
 
[777]
type = aor
max_contacts = 1
 
[auth777]
type=auth
auth_type=userpass
password=1234
username=777
 
[778]
type = endpoint
transport = udp-transport
context = from-internal
disallow = all
allow = alaw
aors = 778
auth = auth778
 
[778]
type = aor
contact = sip:778@192.168.1.2:5060
 
[auth778]
type=auth
auth_type=userpass
password=1234
username=778

Сравнение конфигурации trunk

sip.confpjsip.conf
[general]
udpbindaddr=0.0.0.0
 
register => myaccountname:1234567890@203.0.113.1:5060

[mytrunk]
type=friend
secret=1234567890
username=myaccountname
host=123.0.112.1
disallow=all
allow=alaw
context=from-trunk
[simpletrans]
type=transport
protocol=udp
bind=0.0.0.0 
[mytrunk]
type=registration
transport=simpletrans
outbound_auth=mytrunk
server_uri=sip:@123.0.112.1:5060
client_uri=sip:myaccountname@123.0.112.1:5060
 
[mytrunk]
type=auth
auth_type=userpass
password=1234567890
username=myaccountname
 
[mytrunk]
type=aor
contact=sip:123.0.112.1:5060
 
[mytrunk]
type=endpoint
transport=simpletrans
context=from-trunk
disallow=all
allow=alaw
outbound_auth=mytrunk
aors=mytrunk
 
[mytrunk]
type=identify
endpoint=mytrunk
match=123.0.112.1

Каналы в Asterisk

Настройка Asterisk

Centos 7 USB

$
0
0

Centos 7 USB

Скачайте ISO Centos 7 minimal

Создайте образ при помощи программы WIN32DiscImager

Загрузитесь с созданной флешки.

Asterisk 13 RealTime SIP

$
0
0

Asterisk 13 RealTime SIP

CREATE TABLE `sip_peers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `accountcode` varchar(20) DEFAULT NULL,
  `directmedia` varchar(128) DEFAULT NULL,
  `disallow` varchar(100) DEFAULT 'all',
  `allow` varchar(100) DEFAULT 'alaw;ulaw;gsm;g729',
  `allowoverlap` enum('yes','no') DEFAULT 'yes',
  `allowsubscribe` enum('yes','no') DEFAULT 'yes',
  `allowtransfer` varchar(3) DEFAULT NULL,
  `amaflags` varchar(13) DEFAULT NULL,
  `autoframing` varchar(3) DEFAULT NULL,
  `auth` varchar(40) DEFAULT NULL,
  `buggymwi` enum('yes','no') DEFAULT 'no',
  `callgroup` varchar(10) DEFAULT NULL,
  `callerid` varchar(80) DEFAULT NULL,
  `cid_number` varchar(40) DEFAULT NULL,
  `fullname` varchar(40) DEFAULT NULL,
  `call-limit` int(8) DEFAULT '0',
  `callingpres` varchar(80) DEFAULT NULL,
  `canreinvite` char(6) DEFAULT 'yes',
  `context` varchar(80) DEFAULT NULL,
  `callbackextension` varchar(80) DEFAULT NULL,
  `defaultip` varchar(15) DEFAULT NULL,
  `defaultuser` varchar(128) DEFAULT NULL,
  `dtmfmode` varchar(7) DEFAULT NULL,
  `encryption` varchar(128) DEFAULT NULL,
  `fromuser` varchar(80) DEFAULT NULL,
  `fromdomain` varchar(80) DEFAULT NULL,
  `fullcontact` varchar(80) DEFAULT NULL,
  `g726nonstandard` enum('yes','no') DEFAULT 'no',
  `host` varchar(31) NOT NULL DEFAULT '',
  `insecure` varchar(20) DEFAULT NULL,
  `ipaddr` varchar(15) NOT NULL DEFAULT '',
  `language` char(2) DEFAULT NULL,
  `lastms` varchar(20) DEFAULT NULL,
  `mailbox` varchar(50) DEFAULT NULL,
  `maxcallbitrate` int(8) DEFAULT '384',
  `mohsuggest` varchar(80) DEFAULT NULL,
  `md5secret` varchar(80) DEFAULT NULL,
  `musiconhold` varchar(100) DEFAULT NULL,
  `name` varchar(80) NOT NULL DEFAULT '',
  `nat` varchar(128) DEFAULT NULL,
  `outboundproxy` varchar(80) DEFAULT NULL,
  `deny` varchar(95) DEFAULT NULL,
  `permit` varchar(95) DEFAULT NULL,
  `pickupgroup` varchar(10) DEFAULT NULL,
  `port` varchar(5) NOT NULL DEFAULT '',
  `progressinband` enum('yes','no','never') DEFAULT 'no',
  `promiscredir` enum('yes','no') DEFAULT 'no',
  `qualify` char(3) DEFAULT NULL,
  `regexten` varchar(80) NOT NULL DEFAULT '',
  `regseconds` int(11) NOT NULL DEFAULT '0',
  `rfc2833compensate` enum('yes','no') DEFAULT 'no',
  `rtptimeout` char(3) DEFAULT NULL,
  `rtpholdtimeout` char(3) DEFAULT NULL,
  `secret` varchar(80) DEFAULT NULL,
  `sendrpid` enum('yes','no') DEFAULT 'yes',
  `setvar` varchar(100) NOT NULL DEFAULT '',
  `subscribecontext` varchar(80) DEFAULT NULL,
  `subscribemwi` varchar(3) DEFAULT NULL,
  `t38pt_udptl` enum('yes','no') DEFAULT 'no',
  `transport` varchar(128) DEFAULT NULL,
  `trustrpid` enum('yes','no') DEFAULT 'no',
  `type` varchar(6) NOT NULL DEFAULT 'friend',
  `useclientcode` enum('yes','no') DEFAULT 'no',
  `usereqphone` varchar(3) NOT NULL DEFAULT 'no',
  `username` varchar(128) DEFAULT NULL,
  `videosupport` enum('yes','no') DEFAULT 'yes',
  `vmexten` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `name_2` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

/etc/odbcinst.ini

# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1

/etc/odbc.ini

[asterisk]
Driver=MySQL
SERVER=localhost
PORT=3306
DATABASE=asterisk
USER=asterisk
PASSWORD= PASSWORD

/etc/asterisk/res_odbc.conf

[sql]
enabled => yes
dsn => asterisk
username => asterisk
password => PASSWORD
pre-connect => yes

/etc/asterisk/extconfig.conf

[settings]
sipusers => odbc,sql,sip_peers
sippeers => odbc,sql,sip_peers

/etc/asterisk.modules.conf

load = res_odbc.so
load = res_config_odbc.so
CLI> module show like odbc
Module                         Description                              Use Count  Status      Support Level
res_config_odbc.so             Realtime ODBC configuration              0          Running              core
res_odbc.so                    ODBC resource                            0          Running              core
2 modules loaded

*CLI> odbc show all

ODBC DSN Settings
-----------------

  Name:   sql
  DSN:    asterisk
    Last connection attempt: 1970-01-01 03:00:00

/etc/asterisk/sip.conf

[general]
rtcachefriends=yes

Добавление данных

INSERT INTO asterisk.sip_peers ( NAME, username, secret, context, HOST, nat, qualify, TYPE) VALUES ('1001', '1001', 'USERPASSWORD', 'USERCONTEXT', 'dynamic', 'yes', 'no', 'friend'); 
http://vetal-daw.blogspot.ru/2015/08/realtime-config-sip-asterisk-13.html

ngrep


Установка Asterisk

$
0
0

Установка Asterisk

Основные требования к системе

  • Для инсталляции и запуска Asterisk не требуется никакого специального оборудованиия.
  • Перед установкой Asterisk должны быть установлены программные пакеты:
    • Исходники ядра (kernel sources)
    • Заголовочные .h файлы для Вашего ядра (kernel headers)
    • bison (необходим для обработки выражений в файле extensions.conf)
    • Пакеты: openssl и openssl-dev или libssl-dev

Исходники Asterisk

Asterisk - ядро основной программы
Asterisk-addons - дополнительные файлы
Libpri - PRI - библиотеки
Dahdi (zaptel) - драйверы телефонии

cd /usr/src/

wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4.15.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-12-current.tar.gz

Lame

   tar zxvf lame-3.98.4.tar.gz
   cd lame-3.98.4
   ./configure
   make
   make install
   cd ..

Компиляция Libpri

cd /usr/src/libpri-VERSION
make
make install

Компиляция DAHDI

cd /usr/src/dahdi-linux-complete-VERSION
make all
make install
make config

Компиляция Asterisk

cd /usr/src/asterisk-VERSION
./configure
make menuselect
make
make install
make samples
make progdocs
make config

Компиляция Asterisk-addons

Начиная с версии 1.8 Asterisk-addons входят в состав core не не требуют отдельной компиляции.

cd /usr/src/asterisk-addons-VERSION
./configure
make
make install

Запуск и остановка Asterisk

/usr/sbin/asterisk: Файл запускающий Asterisk
Если Вы установили Asterisk, можно запустить его командой:

 /usr/src/asterisk -vvvgc
Остановить Asterisk из CLIможно командой 'stop now'.
Командой без аргументов, Asterisk запускается как демон.
 /usr/sbin/asterisk 
Подключится к командному интерфейсу (CLI) можно используя аргумент 'r'.
 /usr/sbin/asterisk -r
Запуск Asterisk из под не - root пользователя.По умолчанию Asterisk запускается из под root, что может быть небезопасно. Для изменения пользователя раскомментируйте строки в файле /etc/init.d/asterisk.
AST_USER="asterisk"
AST_GROUP="asterisk"

Создайте группу и пользователя asterisk.

/usr/sbin/groupadd asterisk 
/usr/sbin/useradd -d /var/lib/asterisk -g asterisk asterisk 

Измените права на использование следующих файлов:

chown --recursive asterisk:asterisk /var/lib/asterisk
chown --recursive asterisk:asterisk /var/log/asterisk
chown --recursive asterisk:asterisk /var/run/asterisk
chown --recursive asterisk:asterisk /var/spool/asterisk
chown --recursive asterisk:asterisk /usr/lib/asterisk
## Если Вы используете Zaptel
chown --recursive asterisk:asterisk /dev/zap
## Если Вы используете DAHDI
chown --recursive asterisk:asterisk /dev/dahdi
#----------------------------------------------------
chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk
chmod --recursive u=rwX,g=rX,o= /var/log/asterisk
chmod --recursive u=rwX,g=rX,o= /var/run/asterisk
chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk
chmod --recursive u=rwX,g=rX,o= /usr/lib/asterisk
## Если Вы используете Zaptel
chmod --recursive u=rwX,g=rX,o= /dev/zap
##  Если Вы используете DAHDI
chmod --recursive u=rwX,g=rX,o= /dev/dahdi
#----------------------------------------------------
chown --recursive root:asterisk /etc/asterisk
chmod --recursive u=rwX,g=rX,o= /etc/asterisk 
/etc/init.d/asterisk restart 

Автозагрузка Asterisk

Различные операционные системы имеют разные способы запуска программ во время загрузки. В директории с исходниками /usr/src/asterisk-VERSION/contrib/init.dсодержатся скрипты для запуска в archlinux, debian, gentoo, mandriva, redhat, slackware, suse.

Для систем, которые все еще используют inittab, просто добавьте следующую строку в /etc/inittab:

as:2:respawn:/usr/sbin/asterisk -f 

Для Redhat окружения выполните

cd /usr/src/asterisk-VERSION
make config
Это скопирует скрипт из contrib/init.d/rc.redhat.asteriskв /etc/rc.d/init.d/asterisk и выполните команду:
/sbin/chkconfig --add asterisk 

Директории Asterisk

  • /usr/lib/asterisk/modules: Содержит бинарные файлы (модули. кодеки)
  • /var/lib/asterisk: Содержит переменные данные(звуки. скрипты и т.д.).
  • /var/spool/asterisk: Файлы создаваемые в процессе работы (голосовые сообщения, исходящие вызовы и т.д.)
  • /var/log/asterisk: Логи. информация о вызовах.
  • /etc/asterisk; Конфигурационные файлы Asterisk.

Скачать Asterisk

SIP протокол

$
0
0

SIP протокол

SIP (англ. Session Initiation Protocol — протокол установления сессии) — стандарт на способ установления и завершения пользовательского интернет-сеанса, включающего обмен мультимедийным содержимым (видео- и аудиоконференция, мгновенные сообщения, онлайн игры).

В модели взаимодействия открытых систем SIPявляется сетевым протоколом прикладного уровня.

Протокол описывает, каким образом клиентское приложение (например, софтфон) может запросить начало соединения у другого, возможно, физически удалённого клиента, находящегося в той же сети, используя его уникальное имя. Протокол определяет способ согласования между клиентами об открытии каналов обмена на основе других протоколов, которые могут использоваться для непосредственной передачи информации (например, RTP). Допускается добавление или удаление таких каналов в течение установленного сеанса, а также подключение и отключение дополнительных клиентов (то есть допускается участие в обмене более двух сторон — конференц-связь). Протокол также определяет порядок завершения сеанса.

Дизайн протокола

Клиенты SIPтрадиционно используют порт 5060 TCP и UDP для соединения серверов и других элементов SIP. В основном SIPиспользуется для установления и разъединения голосовых и видеозвонков. При этом он может использоваться и в любых других приложениях, где требуется установка соединения, таких как Event Subscription and Notification, Terminal mobility и так далее. Существует большое количество RFC, относящихся к SIPи определяющих поведение таких приложений. Для передачи самих голосовых и видеоданных используют другие транспортные протоколы, чаще всего Real-time Transport Protocol (RTP).

Главной задачей разработки SIPбыло создание сигнального протокола и протокола установления соединений для IP коммуникаций, который может поддерживать расширенный набор функций обработки вызова и услуг, представленных в существующей ТфОП. Сам протокол SIPне определяет этих функций, а сосредоточен только на процедурах установления звонка и сигнализации. При этом он был спроектирован обеспечивать создание таких функций элементов сети, как Прокси-сервер (Proxy Servers) и Пользовательские Агенты (User Agents). При помощи этих элементов можно поддерживать базовые телефонные операции: набор номера, звонок телефонного аппарата, возможность после набора услышать длинные или короткие гудки.

Телефонные сети на основе SIPмогут поддерживать и более современные услуги, обычно предоставляемые Signalling System 7 (SS7), несмотря на значительное различие этих двух протоколов. SS7 характеризуется сложной, централизованной интеллектуальной сетью и простыми, неинтеллектуальными, терминалами (традиционные телефонные аппараты). SIP— наоборот, требует очень простую (и, соответственно, хорошо масштабируемую) сеть с интеллектом, встроенным в оконечные элементы на периферии (терминалы, построенные как физические устройства или программы).

SIPиспользуется вместе с несколькими другими протоколами и участвует только в сигнальной части сессии связи. SIPвыполняет роль носителя для SDP, который описывает параметры media-данных в рамках сессии, например используемые порты IP и кодеки. В типичном применении сессии SIP— это просто потоки пакетов RTP. RTPявляется непосредственным носителем голосовых и видеоданных.

Первая предложенная версия стандарта (SIP 2.0) была определена в RFC 2543. Протокол был дополнительно уточнён в RFC 3261, хотя многие реализации по-прежнему основаны на промежуточных версиях стандарта. Обратите внимание, что номер версии остался 2.0.

Сообщения протокола SIP

Сообщения протокола SIP (запросы и ответы), представляют собой последовательности текстовых строк, закодированных в соответствии с документом RFC 2279. Структура и синтаксис сообщений SIPидентичны используемым в протоколе HTTP.

Структура сообщений протокола SIP:

Стартовая строка
Заголовки
Пустая строка
Тело сообщения
  • Стартовая строка — начальная строка любого SIP-сообщения. Если сообщение является запросом, в ней указывается тип запроса, адресат и номер версии протокола. Если сообщение является ответом на запрос, в ней указывается номер версии протокола, тип ответа и его короткая расшифровка.
  • Заголовки сообщений содержат информацию, необходимую для обработки сообщения (информация об отправителе, адресате, пути следования и пр.)
  • Тело сообщения содержит описание сеансов связи. Не все запросы содержат тело сообщения (например запрос BYE). Все ответы могут содержать тело сообщения, но содержимое тела в них бывает разным.

Запросы

В первоначальной версии протокола SIP (RFC 3261) было определено шесть типов запросов. С помощью запросов клиент сообщает о текущем местоположении, приглашает пользователей принять участие в сеансах связи, модифицирует уже установленные сеансы, завершает их и т. д. Тип запроса указывается в стартовой строке.

INVITE— Приглашает пользователя к сеансу связи. Обычно содержит SDP-описание сеанса.

АСК— Подтверждает приём ответа на запрос INVITE.

BYE— Завершает сеанс связи. Может быть передан любой из сторон, участвующих в сеансе.

CANCEL— Отменяет обработку ранее переданных запросов, но не влияет на запросы, которые уже закончили обрабатываться.

REGISTER— Переносит адресную информацию для регистрации пользователя на сервере определения местоположения.

OPTION— Запрашивает информацию о функциональных возможностях терминала.

Но в процессе развития, в протокол было добавлено еще несколько типов запросов, которые дополнили его функциональность:

PRACK— временное подтверждение

SUBSCRIBE— подписка на получение уведомлений о событии

NOTIFY— уведомление подписчика о событии

PUBLISH— публикация события на сервере

INFO— передача информации, которая не изменяет состояние сессии

REFER— запрос получателя о передаче запроса SIP

MESSAGE— передача мгновенных сообщений средствами SIP

UPDATE— модификация состояния сессии без изменения состояния диалога

Ответы на запросы

Ответы на запросы сообщают о результате обработки запроса, либо передают запрошенную информацию. Структуру ответов и их виды протокол SIPунаследовал от протокола HTTP. Определено шесть типов ответов, несущих разную функциональную нагрузку. Тип ответа кодируется трёхзначным числом, самой важной является первая цифра, которая определяет класс ответа:

1ХХ— Информативные ответы показывают, что запрос находится в стадии обработки. Наиболее распространённые ответы данного типа 100 Trying, 180 Ringing, 183 Session Progress.

2ХХ— Финальные ответы означающие, что запрос был успешно обработан. В настоящее время в данном типе определён только один ответ — 200 OK.

3ХХ— Финальные ответы информирующие оборудование вызывающего пользователя о новом местоположении вызываемого пользователя, например ответ 302 Moved Temporary.

4ХХ— Финальные ответы информирующие об ошибке при обработке или выполнении запроса, например 403 Forbidden или классический для протокола HTTP, ответ 404 Not Found.

5ХХ— Финальные ответы информирующие о том, что запрос не может быть обработан из-за отказа сервера, 500 Server Internal Error.

6ХХ— Финальные ответы информирующие о том, что соединение с вызываемым пользователем установить невозможно, например ответ 603 Decline означает, что вызываемый пользователь отклонил входящий вызов.

canceled

           INVITE (SDP)
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x       
   x         100 Trying          x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x  183 Session Progress (SDP) x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x      RTP (g711a) 2276       x         
   x11218 qqqqqqqqqqqqqqqq> 19680x         
   x      RTP (g711a) 2215       x        
   x11218 <qqqqqqqqqqqqqqqq 19680x         
   x           CANCEL            x        
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x        
   x           200 OK            x      
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x   487 Request Terminated    x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x       
   x             ACK             x      
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> 
completed

            INVITE (SDP)         x         
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x        
   x         100 Trying          x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x  183 Session Progress (SDP) x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x        200 OK (SDP)         x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x             ACK             x         
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x         
   x             BYE             x         
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x         
   x           200 OK            x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x
rejected

(Busy)

   x        INVITE (SDP)         x         
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x         
   x         100 Trying          x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x  183 Session Progress (SDP) x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x        486 Busy Here        x         
   x <qqqqqqqqqqqqqqqqqqqqqqqqqq x         
   x             ACK             x         
   x qqqqqqqqqqqqqqqqqqqqqqqqqq> x         
Настройка SIP в Asterisk 12 sip.conf

Настройка Asterisk

Asterisk

Unable to continue. Cron line added didn't remain in crontab on final check in ...

$
0
0

Unable to continue. Cron line added didn't remain in crontab on final check in /var/www/html/admin/libraries/BMO/Cron.class.php on line 103

решение:

Закомментировать строку 103 в /var/www/html/admin/libraries/BMO/Cron.class.php

                        // It didn't stick. WTF? Put our original one back.
                        $this->installCrontab($backup);
//                      throw new \Exception("Cron line added didn't remain in crontab on final check");
                } else {
                        // It was already there.

IP АТС Asterisk

$
0
0

IP АТС Asterisk

Наши контакты


info@asterisk-pbx.ru

Skype:asterisk-pbx.ru


+7 (812) 998-11-38

+7 (921) 998-11-38


Неотек Инжиниринг

194021,Санкт-Петербург
2-й Муринский пр-т, 49, оф. 225

время работы офиса 10-00 до 17-30

Мы предлагаем услуги по установке,
настройке и обслуживанию Asterisk.
Наши специалисты имеют огромный опыт внедрения открытых
и проприетарных телекоммуникационных платформ.
Стоимость базовой установки и настройки IP АТС Asterisk
за безналичный расчет (включая НДС) - 20 000 рублей.
Приобретая базовую установку Asterisk вы гарантировано получаете:

Программное обеспечение и функционал:

  • Asterisk 13
  • FreePBX 13 - веб интерфейс настройки Asterisk
  • CDR-viewer - веб интерфейс записи и детализации вызовов
  • ARI (RESTful) и AMI - интерфейсы приложений.
  • Протоколы связи: SIP, IAX2, h323, DAHDI
  • Функции: Очереди, Группы приема вызовов, Телеконференции, Автосекретарь, Маршрутизация вызовов, Переадресация вызовов, Факс-на-ЕМайл.
  • Операционная система: Centos 7 (Centos 6, Ubuntu или Debian - по требованию)

Базовую настройку IP АТС Asterisk:

  • Создание требуемого кол-ва IP абонентов
  • Подключение требуемого кол-ва SIP (или h323) транков к провайдеру IP телефонии.
  • Настройку входящей/исходящей маршрутизации по вашему ТЗ.
  • Настройку дневного/ночного режима
  • Настройка голосового меню (IVR)
  • Настройка групп приема вызовов.
  • Базовые настройки безопасности (IPtables и fail2ban)
  • Настройка приобретенного у нас оборудования (VoIPшлюзов, IP телефонов, Плат DAHDI).
  • Консультации по настройке вашего оборудования.
  • Базовое обучение использования FreePBX для настройки Asterisk (Подключение IP абонентов, IP транков; создание очередей, телеконференций, голосовых меню, групп приема вызовов; использование сервисных кодов и отчетов о звонках.)
  • Бесплатную тех. поддержку в течении месяца с момента ввода в эксплуатацию.

Варианты установки:

  1. Продажа сервера с установкой и настройкой системы.
  2. Установка на сервере заказчика.
  3. Удаленная установка/настройка на сервере заказчика.
  4. Установка на VPS хостинге
  5. Установка на embedded устройства (например роутеры поддерживающие работу с OpenWRT, функционал может быть ограничен)

Также мы предлагаем установку и настройку дополнительного ПО и функционала:

Call Center на Asterisk

Описание работ:

  • Настройка очередей колл-центра на Asterisk
  • Установка Asternic Call Center Stats (приложение статистики очереди колл центра)

Подробнее о Call Center на Asterisk

Интеграция Asterisk и Vtiger CRM

Описание работ:

  • Установка VTiger CRM.
  • Настройка модуля PBXв VTiger CRMдля взаимодействия с Asterisk.
  • Настройка Asterisk AMIдля взаимодействия с Asterisk.
  • Настройка Asterisk Dialplan.

Подробнее о Vtiger >>>

Интеграция Asterisk и Sugar CRM

Описание работ:

  • Установка Sugar CRM.
  • Настройка модуля PBXв Sugar CRMдля взаимодействия с Asterisk.
  • Настройка Asterisk AMIдля взаимодействия с Asterisk.
  • Настройка Asterisk Dialplan.

Web Callback - звонок с сайта

Описание работ:

  • Php код - форма для обратного вызова с сайта
  • Настройка Asterisk manager Interface
  • Настройка IPtables

Подключение 3G модемов для голосовых вызовов VoIP > GSM

Описание работ:

  • Установка драйвера канала chan_dongle.
  • Настройка требуемого кол-ва GSM модемов.
  • Для старых версий Linux может понадобится перекомпиляция ядра.

Система автоматического обзвона абонентов на Asterisk

Описание работ:

  • Скрипт генерации call файлов по списку абонентов.
  • Настройка Asterisk Dialplan.

Смотрите также решение для автообзвона абонентов на FreeSWITCH >>>

Fax сервер на Asterisk

Описание работ:

  • Установка Hylafax.
  • Настройка требуемого кол-ва виртуальных факсов.
  • Настройка отправки факсов через драйвер виртуального принтера WinPrintHylafax
  • Настройка отправки факсов через email
  • Прием факcов на email
  • Настройка почтового клиента Postfix.

Полнофункциональный веб-интерфейс для настройки, обслуживания и получения информации о вызовах.

 
Viewing all 1135 articles
Browse latest View live