Asterisk: импорт из Master.csv в Postgresql

postgres=# CREATE USER ast_user with password 'xxxxxxx';
CREATE ROLE
postgres=# CREATE DATABASE ast_db with owner ast_user;
CREATE DATABASE
postgres=#exit

psql ast_db ast_user
ast_db=> CREATE TABLE cdr (
calldate timestamp with time zone DEFAULT now() NOT NULL,
clid character varying(80) DEFAULT '' NOT NULL,
src character varying(80) DEFAULT '' NOT NULL,
dst character varying(80) DEFAULT '' NOT NULL,
dcontext character varying(80) DEFAULT '' NOT NULL,
channel character varying(80) DEFAULT '' NOT NULL,
dstchannel character varying(80) DEFAULT '' NOT NULL,
lastapp character varying(80) DEFAULT '' NOT NULL,
lastdata character varying(80) DEFAULT '' NOT NULL,
duration bigint DEFAULT 0::bigint NOT NULL,
billsec bigint DEFAULT 0::bigint NOT NULL,
disposition character varying(45) DEFAULT '' NOT NULL,
amaflags bigint DEFAULT 0::bigint NOT NULL,
accountcode character varying(20) DEFAULT '' NOT NULL,
uniqueid character varying(32) DEFAULT '' NOT NULL,
userfield character varying(255) DEFAULT '' NOT NULL
);
CREATE TABLE

Устанавливаем поддержку постгреса в Perl:

perl -e shell -MCPAN
install DBI::DBD
install DBD::Pg

Создаем скрипт для переноса даных:

Читати далі

Подборка SQL запросов

Допустим у вас есть номер телефона рекламного отдела и PR-манагеры пустили какую-то рекламу в сентябре. Задача: найти всех клиентов которые позвонили в сентябре первый раз в жизни, но при этом им, что-то не понравилось и они не звонили после сентября. Инфа нужна, чтоб промыть им мозги… 🙂 Вот, что у меня получилось сходу: … SELECT … Читати далі

Iskratel vs Asterisk

Состыковка Астериска с ИскраТел проходит довольно занятно.
Провайдер телефонной связи может отдавать телефонные звонки по SIP, но сервер сигнализации и голосовые сервера находятся в разных местах.
По умолчанию Астер считает, что источник RTP находится на одном хосте с Сервером сигнализации, чтоб сказать ему о поиске голоса на тех хостах которые приходят в INVITE, а также в SDP, в настройках sip.conf необходимо добавить такие строки

canreinvite=yes
dtmfmode=info

When SIP initiates the call, the INVITE message contains the information on where to send the media streams. Asterisk uses itself as the end-points of media streams when setting up the call. Once the call has been accepted, Asterisk sends another (re)INVITE message to the clients with the information necessary to have the two clients send the media streams directly to each other.

А также опцией permit разрешить посылать голос на хосты отличные от сигнального.
В итоге лог должен содержать что-то типа такого:

Читати далі

Blacklist в Asterisk

Допустим нужно, чтоб определенный список людей попадал сразу в отдел продаж минуя IVR. Реализация такой схемы: [incoming] exten => s,1,LookupBlacklist(j) ;проверка на наличие номера в базе, j – переход на приоритет n+101 exten => s,2,Goto(ivr,s,1) exten => s,102,Dial(SIP/1234,60,tT) exten => s,103,Hangup Добавление номера в базу данных происходит таким образом: asterisk -rx “database put blacklist 0442223344 … Читати далі

Новый синтаксис в Asterisk 1.6

Буду тут оставлять заметки о том как меняется синтаксис между Asterisk 1.2 и Asterisk 1.6 1. Вместо “трубы” теперь в диалплане используется запятая, например 1.2 include => kiev|8:30-18:30|mon-fri|*|* 1.6 include => kiev,8:30-18:30,mon-fri,*,* 2. В ivr сменилось использование переменных DigitTimeout, ResponseTimeout, например: 1.2 exten => s,1,DigitTimeout,5 ; Set Digit Timeout to 5 seconds exten => s,2,ResponseTimeout,10 … Читати далі

Залипание порта в Asterisk

упал несколько раз Астериск 1.6.1.14.

Перед смертью в логи было написано пару милионов раз:

WARNING[21761] asterisk.c: Accept returned -1: Too many open files

а система утверждает, что Астер не врет

lsof | grep asterisk | wc -l
1129

Читати далі

Е1 в Asterisk

По Украинской национальной версии в области телефонии поддключение по Е1 производится по сигнализации EuroISDN в настройках chan_dahdi.conf Астериска нужно выставлять такие параметры: switchtype = euroisdn signalling = pri_cpe prilocaldialplan=national Что позволит принимать телефонные номера как national в стандарте EuroISDN но появляется небольшая проблема – требуется еще и от себя устанавливать аналогичное соединение, пролистав example который … Читати далі

Переменная PRI_CAUSE (ISDN Cause code)

Переменная PRI_CAUSE используется для передачи информации по линиям связи ISDN PRI о причине разрыва связи до ее фактического разрыва.

Переменная появилась, начиная с версии 1.0 сервера Asterisk.

Для каналов: Zap PRI, chan_capi и chan_misdn BRI есть возможность установки значения переменной PRI_CAUSE до выполнения команды Hangup(). Это приведет к тому, что в отправляемом сообщении PRI DISCONNECT будет установлен параметр CAUSE, который может быть использован телефонным коммутатором.

Читати далі