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

Настроим Asterisk, FreeSWITCH, IP АТС.

$
0
0

Настроим Asterisk, FreeSWITCH, IP АТС.

Установка, настройка Asterisk и FreeSWITCH. Неограниченное кол-во VoIP абонентов. IP АТС корпоративного уровня. Реализуем сложные ТЗ. Удаленно, в любой точке мира.

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

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

Мы находимся в Санкт-Петербурге, но работаем по всему миру!

Решения

VoIPАТС

  • Неограниченное количество VoIPабонентов и транков.
  • Запись разговоров и детализированный отчет о звонках.
  • Факс на e-mail.
  • Русскоязычный интерфейс.
  • CTI - Интеграция со сторонними приложениями.

Колл Центр

Дополнительно

  • Аудит и обслуживание уже установленных систем Asterisk, FreeSWITCH и др.
  • Написание кастомизированного диаплана под любые нужды.
  • Интеграция с устаревшими TDMАТС (Avaya, NEC, Nortel, Samsung, Panasonic, LG).
  • Аудит и настройки безопасности VoIPсистем.
  • Биллинг. Многопользовательские системы.
  • SIP proxy, SBC.

Напишите нам!

Свяжитесь с нами для получения подробной информации.
IP АТС

Only edit this fieldset if “Функционал” is set to “IP АТС”.

Колл Центр

Only edit this fieldset if “Функционал” is set to “Колл Центр”.

Кастомные решения

Only edit this fieldset if “Функционал” is set to “Все сложно”.


IP АТС Asterisk и FreeSWITCH

$
0
0

IP АТС Asterisk и FreeSWITCH

Установка, настройка и обслуживание IP АТС Asterisk и FreeSWITCH.

Мы предлагаем услуги по установке, настройке и обслуживанию IP АТС Aterisk и FreeSWITCH. За годы работы, мы накопили внушительный опыт внедрения открытых и проприетарных телекоммуникационных платформ, что позволяет, предлагать нашим клиентам самые оптимальные решения.

Для внедрения IP АТС небольшой емкости (до 100 абонентов), прекрасно подходит программная АТС Asterisk с веб интерфейсом FreePBX. Русскоязычный, простой и интуитивно понятный веб интерфейс позволит вам, в дальнейшем, обслуживать АТС без дополнительных затрат. Все используемое ПО является свободно распространяемым и вы платите только за пусконаладку (от 10 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 телефонии.
  • Подключение потоков ISDN PRI E1.
  • Настройку входящей/исходящей маршрутизации по вашему ТЗ.
  • Настройку дневного/ночного режима
  • Настройка голосового меню (IVR)
  • Настройка групп приема вызовов.
  • Базовые настройки безопасности (IPtables и fail2ban)
  • Настройка приобретенного у нас оборудования (VoIPшлюзов, IP телефонов).
  • Консультации по настройке вашего оборудования.
  • Базовое обучение использования FreePBX для настройки Asterisk (Подключение IP абонентов, IP транков; создание очередей, телеконференций, голосовых меню, групп приема вызовов; использование сервисных кодов и отчетов о звонках.)
  • Бесплатную тех. поддержку в течении месяца с момента ввода в эксплуатацию.

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

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

Call Center на Asterisk

$
0
0

Call Center на Asterisk

Колл-Центр обработки входящих вызовов. Русскоязычный Веб-интерфейс. Статистика работы агентов и очередей в режиме реального времени. Недорогой, эффективный, легко настраиваемый call центр.

Базовые функции:

  • голосовое меню (IVR);
  • маршрутизация вызовов по времени;
  • очередь центра обработки вызовов
  • группы приема вызовов;
  • переадресации на внутренних или внешних абонентов;
  • голосовые конференции;
  • запись переговоров;
  • статистика звонков (CDR);
  • статистика работы очереди;

ПО

  • Asterisk 13.xx
  • FreePBX 13 - Русифицированный, интуитивно понятный веб-интерфейс для настройки Asterisk.
    • Asterisk CDR viewer - Детализированный отчет о звонках, прослушивание записанных разговоров
  • Call Center Stats - Статистика очередей колл-центра
  • FOP2 - Панель оператора

Работы:

  • Инсталляция и базовые наcтройки безопасности.
  • Настройка по согласованному ТЗ.

Колл Центр или Центр Обработки Вызовов (ЦОВ)

Asterisk прекрасно справляется с организацией как небольших колл центров, так и более мощных систем.
Приложение queue обеспечивает постановку абонента в очередь по принципу FIFO (первый вошел, первый вышел).

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

Реализацию функционала колл-центра в Asterisk можно условно разделить на уровень АТС, уровень приложений АТС и уровень приложений 3-й стороны (3rd party) :

Базовые функции маршрутизации и обработки вызовов реализованы непосредственно в Asterisk:

  • Организация очереди (обработка вызовов в порядке поступления).
  • Маршрутизация вызова по номеру абонента.
  • Интерактивные Голосовые Сообщения / IVR.
  • Распределение вызовов среди агентов по занятости или по порядку.

asterisk freepbx queue

Гибкое распределение вызовов между агентами колл центра в соответствии с заданной политикой.

  • Звонят все агенты
  • Звонят наименее занятые
  • Вызываются по кругу с последнего ответившего.
  • Линейно (в порядке перечисления)
  • Случайным образом

asterisk freepbx queue strategy

Параметры времени и операторов

Так же «очередь» имеет множество опций обработки вызова и работы агентов:

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

asterisk freepbx timers

Рассчитывается среднее время ожидания в очереди и ожидающий абонент информируется о номере в очереди и оставшемся времени ожидания.

Параметры ёмкости очереди

Все разговоры могут быть записаны в формате wav или gsm, с возможностью последующего поиска и скачивания записи в детализированном отчете о звонках (CDR) Детализированный отчет о звонках (CDR) храниться в базе данных MySQL. Доступ к отчетам осуществляется через веб-интерфейс и предоставляет возможности для поиска, сортировки и сравнения вызовов за разные периоды времени.

В информации о входящем вызове сохраняются

  • Дата и время звонка
  • Продолжительность вызова
  • Номер позвонившего
  • Номер оператора или агента.
  • Номер очереди
  • Ссылка на запись разговора.

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

  • Регистрация всех входящих и исходящих вызовов
  • Запись переговоров
  • Статус оператора (свободен, занят, пауза)

Веб-интерфейс для статистики очередей и агентов.

  • Количество принятых вызовов за указанный период времени
  • Количество отвеченных вызовов
  • Количество не отвеченных вызовов
  • Среднее время разговора

Следующие отчеты интегрированы в Asternic Call Center Stats :

Распределение: по очередям, по месяцам, по неделям, по дням, по часам.

Отвеченные вызовы: по очередям, по времени ожидания, по агентам, Причина разъединения, продолжительность вызова (в том числе средняя продолжительность по очередям и агентам).

Неотвеченные вызовы: по очередям, по времени ожидания, по агентам, Причина разъединения, продолжительность вызова (в том числе средняя продолжительность по очередям и агентам).

Текущее состояние агентов: продолжительность работы или простоя, состояние текущего вызова, текущее кол-во вызовов в очереди)

Приложения использующие информацию о вызовах сохраненную в БД и логах (CDRстатистика, Статистика очереди ):

  • Приложения для создания отчетов о входящих/исходящих вызовах и поиска записей.
  • Приложения для создания отчетов о качестве работы операторов(качество обслуживания.

Приложения в режиме реального времени получающие информацию о статусе агентов, длине очередей и загруженности каналов.

  • Real Time статус операторов, очередей и каналов.

FOP2 - Flash Operator Panel

Приложения контроля интеллектуального набора. Хотя набор номеров и маршрутизацию осуществляет сам Asterisk, для интеллектуального дозвона требуется приложение которое инициировало бы вызовы по заданному списку и управляло алгоритмом набора.

  • Автоматизированный набор номера (predictive dialer)

Приложения визуализации данных о клиенте, только получают данные о номере вызывающего абонента от Asterisk и далее, сверяя поступившую информацию с собственной БД открывают существующую или предлагают агенту создать новую карточку клиента. Таким образом эти приложения являются по сути обособленными системами, использующими Asterisk только для получении информации о номере вызывающего абонента.

  • Визуализация данных о клиенте (карточка клиента) на основании номера абонента (CallerID)

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

 

IAX2 channels

$
0
0

IAX2 channels

Протокол IAX (Inter Asterisk Exchange) позволяет проще проходить NAT, за счет использования одного и того же порта для инициализации соединения и для медиа-потоков. А также уменьшением трафика при многоканальных соединениях, по сравнению с chan_sip, за счет уменьшения сигнальных пакетов.

Протокол IAXможет быть использован для соединения с другими Asterisk PBXсерверами и для соединения с IAXклиентами.

IAX2 настройка

IAXканалы определяются в файле Asterisk: iax.conf.

Имена каналов

Формат имен IAXканалов, использующийся для исходящих вызовов:

IAX/[<user>[:<secret>]@]<peer>[:<portno>][/<exten>[@<context>][/<options>]]
  • <user>: идентификатор пользователя на удаленной системе, или имя клиента, сконфигурированного в файле iax.conf (опционально).
  • <secret>: Пароль (не обязательно). Как альтернатива, это может быть имя файла, содержащего ключ RSA, без соответствующего расширения файла (.key или .pub), и заключенного в [квадратные скобки] , например, так: [thefilename]
  • <peer>: Имя вызываемого сервера.
  • <portno>: Номер порта, который используется при соединении с удаленным сервером (не обязательно)
  • <exten>: Екстеншен, который должен быть вызван на удаленном сервере Asterisk (не обязательно)
  • <context>: Контекст, который должен быть использован на удаленном сервере Asterisk (не обязательно).
  • <options>: Пока доступен только один параметр - 'a', который подразумевает: 'запрос автоматического ответа',

Примеры имен каналов для исходящих соединений:

  • IAX/mark:asdf@myserver/6275@default – Вызов сервера «myserver», используя имя пользователя: «mark» и пароль: «asdf», и запрос на вызов екстеншена: 6275 в контексте по умолчанию: default.
  • IAX/iaxphone/s/a – Вызов «iaxphone» и запрос немедленного ответа.
  • IAX/guest@misery.digium.com – Вызов в Digium
  • IAX/john: [johnrsa] @somewhere.com — Вызов направляется на сервер: somewhere.com, используется имя пользователя: «john» и ключ RSA для авторизации.

Формат имен IAXканалов, использующийся для входящих вызовов довольно прост:

IAX[[<username>@]<host>]/<callno>
  • <username>: имя пользователя, если оно известно
  • <host>: имя или адрес хоста, с которого поступило соединение
  • <callno>: вызываемый локальный номер в системе

Примеры имен каналов для входящих соединений:

  • IAX [mark@192.168.0.1] /14 – Вызов номера: 14 от пользователя «mark» с адреса: 192.168.0.1
  • IAX [192.168.10.1] /13 – Вызов номера: 13 с адреса: 192.168.10.1

Обратите внимание

Для организации транкового канала IAXнеобходима поддержка аппаратного таймера в системе с Asterisk. IAXТранк позволяет нескольким голосовым потокам использовать один «транковый канал» при коммуникации с другим сервером, тем самым, уменьшая избыточность создаваемых IP пакетов. Обычно, уже после использования 4 одновременных соединений, становиться заметен выигрыш в объеме передаваемых данных на один пакет с данными, когда используется транковый канал.

Asterisk: Настройка

Asterisk: iax.conf

$
0
0

Asterisk: iax.conf

В файле iax.conf вы описываете ваши соединения по протоколу IAX.

Настройка IAXклиентов. Выдержка из примера конфигурации файла IAX.CONF, который идет в дистрибутиве:

Далее Вы можете добавить секции, в которых определяются Ваши пользователи, имена контекстов для исходящих от них вызовов, их имена и пароли, которые будут использоваться для авторизации. Примитивный контроль доступа на основе IP адресов можно осуществлять, используя директивы «permit» и «deny». Есть возможность использования нескольких правил, в этом случае первое определенное правило используется по умолчанию, если нет дальнейших совпадений.

Вы можете переопределить значение caller*ID, в этом случае, при получении вызова Вы можете установить поле Caller*ID в нужное Вам значение, если Вы не доверяете значению, которое предоставил удаленный пользователь.

Для авторизации пользователей поддерживаются три метода: md5?, авторизация с использованием незашифрованного пароля (plaintext) и метод с использованием rsa?. Самый незащищенный метод - это использование незашифрованного пароля «plaintext», т.к. при этом пароль в неизменном виде передается по сетям связи. В методе «md5» используется схема запрос/ответ с использованием md5 хеша передаваемых данных, но, по прежнему, необходимо на обоих концах соединения хранить пароль в незашифрованном виде. Метод «rsa» позволяет производить авторизацию с использованием однонаправленного шифрования с использованием связки публичного и приватного ключа, где с помощью публичного ключа можно только шифровать данные, но невозможно их расшифровать, а расшифровка данных возможна только при использовании приватного ключа. Если используется авторизация с методом «rsa», параметр «inkeys» определяет список имен публичных ключей для локальной системы, которые могут быть использованы для авторизации удаленного абонента, эти имена должны быть разделены символом «:». Параметр «outkey» - это имя одного приватного ключа, который используется для авторизации на удаленной системе.

Файл публичного ключа имеет имя вида: /var/lib/asterisk/keys/<name>.pub, тогда как приватный ключ именуется как: /var/lib/asterisk/keys/<name>.key. Приватнйы ключ всегда должен быть зашифрован с использованием алгоритма 3DES.

Примеры:

Голосовые кодеки Нижеприведенные голосовые кодеки Вы можете использовать в качестве аргументов для директив: allow/disallow:

  • g723.1
  • gsm
  • ulaw
  • alaw
  • g726
  • slinear
  • lpc10
  • adpcm
  • g729
  • speex
  • ilbc
  • h261
  • h263
  • all

Управление потоками медиаданных

Указывая параметр notransfer=yes, Вы можете запретить серверу Asterisk исключить себя из пути следования медиаданных между двумя удаленными абонентами и замыкать его между ними напрямую. Это, конечно, влияет на содержимое Ваших (CDR) записей и билинговой информации. Замечание: Поведение при использовании этого параметра очень похоже на использование параметра canreinvite=no в файле конфигурации sip.conf.

TOS

В качестве альтернативы, Вы можете непосредственно указать какие TOS биты требуется установить:

tos=0x18 ; где tos биты устанавливаются индивидуально и в комбинации из нескольких битов.
Например так:
tos=0x10 = требование минимальных задержек прохождения пакетов (low delay)
tos=0x08 = требование выделения большой полосы пропускания (high throughput)
tos=0x04 = требование высокой надежности доставки пакетов (high reliability)
tos=0x02 = установить ECT бит
tos=0x01 = установить CE бит
или сразу установить насколько бит сразу, например так:
tos=0x18
при этом устанавливается биты требующие наименьших задержек прохождения пакета (low delay) и выделения большой полосы пропускания (high throughput).

Параметр qualify Для некоторых IAXклиентов включая firefly, diax, IAXphone, IAXComm не может быть отслежено их состояние с использованием директивы qualify=1000. Если Вы определите этот параметр, то в CLIконсоли Вы увидите примерно такое сообщение:

Peer '2004' is now UNREACHABLE!
Для этих клиентов устанавливайте: qualify=no.

Упрощение формата команды Dial в файле extensions.conf

Хотя, для определения вызовов через IAXканалы, вся информация (имя пользователя, пароль, и т.д.) может быть явно задана для каждой команды «dial» в файле extensions.conf, эта строка для создания вызова может быть упрощена или сокращена, путем помещения всей этой информации в файл iax.conf, и использования для создания исходящего вызова ссылки на имя определенного там абонента:

Dial(IAX2/<peer name>/<exten>)
Например, для вызова в IAXtel, вы можете в файле iax.conf создать примерно такую запись:
[iaxtel-outbound]
type=peer
username=<username>
secret=<secret>
peercontext=iaxtel
host=iaxtel.com
Тогда можно использовать команду Dial в таком виде:
exten => _1700XXXXXX,1,Dial(IAX2/iaxtel-outbound/${EXTEN})
Замечание: Параметр «peercontext» появился начиная с CVS версии Asterisk от 26-06-2004.

Таблица команд и директив с определением, где их можно использовать. __Нуждается в обновлении: последний раз редактировалось 14 октября 2004.

Directive Value General Peer User
allow <codec> Y Y Y
disallow <codec> Y Y Y
amaflags Y
auth
autocreatepeer
bandwidth Y Y Y
bindaddr Y
bindport Y
callerid
callgroup
context Y Y
defaultexpirey
defaultip
externip N N
fromdomain
fromuser
host
incominglimit
jitterbuffer Y
maxjitterbuffer Y
maxexcessbuffer Y
outgoinglimit
inkeys Y Y
outkey Y Y
insecure
language
localnet
mailbox
maxexpirey
md5secret Y Y
notransfer Y Y
peercontext
pedantic
permit Y Y
deny Y Y
pickupgroup
qualify Y Y
register Y
restrictcid
secret Y Y
srvlookup
tos Y Y
trunkfreq Y
trunk Y Y
trustrpid
type Y Y
useragent
username
videosupport

Tips

  • Команда «Register» для регистрации на другом IAXсервере должны находиться в секции [general] файла iax.conf.
  • Для создания IAXсоединения в транковом режиме?, добавьте «trunk=yes» в определение Вашего абонента в файле iax.conf. Транковый IAXканал нуждается в поддержке аппаратного таймера. Для дополнительной информации, смотри: Asterisk timer.
  • Не используйте одновременно «host=dynamic» и «defaultip=111.222.333.444», убедитесь, что используется только один из этих параметров (смотри багрепорты: 558 и 673).
  • Если Вы не используете контроль доступа на основе IP адресов для всех ваших клиентских записей с «type='user», тогда в Вашем файле iax.conf должна содержаться гостевая («guest») запись, для которой не задано поле secret (без пароля), если Вы хотите, чтобы Ваш сервер Asterisk имел более-менее безопасную конфигурацию. В случае, если у Вас не определена гостевая запись то, когда к Вам поступает соединение с удаленной системы, она может подключиться к Вам без указания имени пользователя (анонимно), в этом случае сервер Asterisk может позволить ей подключиться с любым из паролей, которые определены в файле iax.conf. Это значит, что если у Вас имеется много записей с типом - «type=user» в файле iax.conf и не описана гостевая («guest») запись, то кто-либо, кто знает хотя бы один пароль для соединения с Вашим сервером, может использовать его для входа под именем пользователя, кому этот пароль принадлежит (т.e. ему не нужно знать одновременно и имя пользователя и его пароль, достаточно знать только пароль). Но, добавление гостевой записи (без пароля), для анонимных входящих вызовов, решает эту проблему.
  • Добавьте последнюю запись в файл iax.conf, не содержащую пароля, для отправки анонимных вызовов в определенный контекст.
  • Если Вы используете механизм realtime, убедитесь, что у Вас нет пользователей с пустым паролем или без установленных параметров permit/deny.
  • Используйте глобальный параметр mailboxdetail=yes, для отправки детальной информации и информации о количестве новых сообщений в голосовом ящике. Эта функция работает для большинства IAXтелефонов, например, с AT-320? или с программными клиентами.

Файлы конфигурации Asterisk

Asterisk: Настройка

Asterisk: odbc.conf

$
0
0

Asterisk: odbc.conf

Файл настроек ODBC.

Параметры ODBC соединений

[ENV] - Глобальные переменные

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

[ENV]
INFORMIXSERVER => my_special_database
INFORMIXDIR => /opt/informix
ORACLE_HOME => /home/oracle

Имена контекстов (подключений)

Остальные секции имеют произвольные имена. Эти имена, в дальнейшем, используются
в других конфигах, таких как extconfig.confи
func_odbc.confдля связи с этими соединениями.

 [asterisk]

enabled

Позволяет отключать секцию, без использования комментария:

 enabled => no

Если явно не выключено, категория (секция) считается включенной.

dsn

Это значение должно совпадать с записью в /etc/odbc.ini (или /usr/local/etc/odbc.ini во FreeBSD и подобных системах).

 dsn => asterisk

username

Имя пользователя базы данных. Если не задано, будет использовано имя контекста, по умолчанию

 username => myuser

password

Пароль для аутентификации в базе данных. По умолчанию не задан.

 password => mypass

pre-connect

Подключаться при старте Asterisk?

 pre-connect => yes

sanitysql

Как определить, что соединение живое? Должно возвращаться не нулевое значение в первом поле, первой записи. По умолчанию «select 1».

 sanitysql => select 1

max_connections

Максимальное кол-во подключений в момент времени. Значение по умолчанию =1 и очень хорошая идея увеличить это значение, если версия unuxODBC 2.3.1 и выше.

 max_connections => 20

forcecommit

Если канал закрыт, должны ли какие-либо незавершенные транзакции, продолжать выполнение.

 forcecommit => no

isolation

Отношения с другими транзакциями в базе данных.
Возможные значения: read_uncommitted, read_committed, repeatable_read и serializable. По умолчанию read_committed.

 isolation => repeatable_read

backslash_is_escape

Обратный слэш '\' знак комментария. По умолчанию = yes, но для MS SQL Server, установите = no.

  backslash_is_escape => yes

connect_timeout

Как долго (в секундах), пытаться подключиться, прежде чем считать соединение мертвым?
Значение по умолчанию составляет 10 секунд, но можно уменьшить его, чтобы повысить скорость реакции.

 connect_timeout => 10

negative_connection_cache

Если соединение упало, как долго (в секундах), кэшировать информацию, прежде чем предпринять попытку нового соединения?

 negative_connection_cache => 300

примеры

MySQL и MS SQL

MySQL

[mysql2]
enabled => no
dsn => MySQL-asterisk
username => myuser
password => mypass
pre-connect => yes

MS SQL

Некоторые сервера, такие как MS SQLи Sybase использующие TDS, ограничивают кол-во запросов для одного подключения до 1.
Если запретить общее использование соединений (share_connections ⇒ no) Asterisk может с ними работать.

[sqlserver]
enabled => no
dsn => mickeysoft
share_connections => no
limit => 5
username => oscar
password => thegrouch
pre-connect => yes
sanitysql => select count(*) from systables
; forcecommit => no            ; Default to committing uncommitted transactions?
                               ; Note:  this is NOT the autocommit flag; this
                               ; determines the end result of transactions which
                               ; are not explicitly committed or rolled back.  By
                               ; default, such transactions are rolled back if the
                               ; call ends without an explicit commit.
; isolation => read_committed  ; Isolation level; supported levels are:
                               ; read_uncommitted, read_committed, repeatable_read,
                               ; serializable.  Note that not all databases support
                               ; all isolation levels (e.g. Postgres only supports
                               ; repeatable_read and serializable).  See database
                               ; documentation for further information.
;
; Many databases have a default of '\' to escape special characters.  MS SQL
; Server does not.
backslash_is_escape => no

;
; If you are having problems with concurrency, please read this note from the
; mailing lists, regarding UnixODBC:
;
; http://lists.digium.com/pipermail/asterisk-dev/2009-February/036539.html
;
; In summary, try setting "Threading=2" in the relevant section within your
; odbcinst.ini.
;

Файлы конфигурации Asterisk

Команда Asterisk: AddQueueMember

$
0
0

Команда Asterisk: AddQueueMember

Приложение диалплана Asterisk: Динамическое добавление интерфейса для обработки очереди вызовов.

Описание

AddQueueMember(queuename[[,interface[[,penalty[[,options[[,membername[[,stateinterface]]]]]))

Команда динамически добавляет интерфейс в существующую очередь вызовов, для обработки поступающих в нее вызовов (интерфейс как бы регистрируется в очереди вызовов, так же как агент, с использованием команды AgentCallbackLogin).

Аргументы
  • queuename - имя очереди вызовов, в которую необходимо добавить интерфейс.
  • interface - Название интерфейса для добавления в очередь, если не указано, используется текущий интерфейс.
  • penalty - Целое число большее или равное нулю, доступные участники, обрабатывающие очередь, с меньшим значением пенальти получают вызовы в первую очередь.
  • options: (версии 1.2+)
    • j - Если заданный интерфейс уже обрабатывает поступающие вызовы данной очереди и существует команда с приоритетом n+101, тогда с нее продолжиться выполнение команд плана набора. Иначе, команда выйдет с кодом ошибки.
    • В версии 1.6+ нет значений для поля «options», т.к. параметр «j» был удален, но, если необходимо указать остальные параметры, то этот аргумент должен быть указан как пустой параметр: ,,
  • membername - имя для участника обработки очереди, под которым он будет добавлен.
  • stateinterface - альтернативный интерфейс, который будет использоваться для определения состояния участника обработки очереди.
Код возврата

При возникновении ошибки возвращает -1.

По завершению выполнения, команда также установит переменную AQMSTATUS в одно из значений:

  • ADDED
  • MEMBERALREADY
  • NOSUCHQUEUE
Пример:
 AddQueueMember(sales,PJSIP/2666)

Используя вариант этой команды: AddQueueMember(<queuename>), вы добавите интерфейс, c которого совершается вызов, в список операторов очереди. <queuename> - это имя очереди вызовов, описанной в файле queues.conf

пример 2:
  1. _10X - расширение, где 10уникальный код функции, а Xидентификатор очереди
  2. Set(queueN=q${EXTEN:0:1}) - задает переменную с именем очереди, q + X
  3. AddQueueMember(${queueN},Local/${CALLERID(num)}@from-queue/n) - добавить интерфейс Local/вызывающий абонентв очередь qX.

exten => _10X,1,Noop(agent logged on)
   same => n,Set(queueN=q${EXTEN:0:1})
   same => n,AddQueueMember(${queueN},Local/${CALLERID(num)}@from-queue/n)
   same => n,PlayBack(ru/agent-loginok)
*CLI> queue show q1
q1 has 0 calls (max 11) in 'random' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
   Members:
      Local/4887@from-queue/n (ringinuse disabled) (dynamic) (Not in use) has taken no calls yet
   No Callers
См. также

Команды диалплана Asterisk

Команда Asterisk: Queue

$
0
0

Команда Asterisk: Queue

Приложение Asterisk - Queue(), для постановки входящего вызова в очередь.

Описание

Приложение Asterisk Queue() вызывает указанную очередь, предварительно настроенную в queues.confили соответствующем модуле FreePBX
В дополнение к настройкам очереди используйте аргументы для определения дополнительных свойств очереди, таких как - продолжение выполнения диалплана по завершению вызова одной из сторон; перехода в другой контекст; назначения голосового приветствия; тайм-аут вызова и тд.

Приложение Queue() не отвечает на вызов автоматически (не открывает аудио канал).
Чтобы воспроизвести вызывающему абоненту голосовое приветствие и включить музыку на удержании (MOH) на время ожидания, перед ним должно быть выполнено какое-либо из приложений Asterisk app: Answer, Progressили Ringing.

Приложение возвращает переменную ${QUEUESTATUS}с одним из ниже перечисленных значений:

  • TIMEOUT
  • FULL
  • JOINEMPTY
  • LEAVEEMPTY
  • JOINUNAVAIL
  • LEAVEUNAVAIL
  • CONTINUE

Также приложение Queue() возвращает в переменную ${MEMBERINTERFACE}с номером агента принявшего вызов и другие переменные. Установите для этого параметр setinterfacevar=yesв настройках очереди queues.conf.

Синтаксис

//Queue(queuename[,options[,URL[,announceoverride[,timeout[,AGI[,macro[,gosub[,rule[,position]]]]]]]]])//

Аргументы

options

  • C: Установить статус вызова «answered elsewhere» даже если вызов отвергнут.
  • c: Продолжить выполнение диалплана, если вызываемыйпервым положил трубку.
  • d: режим модема с минимальной задержкой.
  • F([[context^]exten^]priority): Если вызывающийабонент повесил трубку первым, продолжить обработку вызова для вызываемогоагента в указанном контексте. Любые переменные определенные для данного контекста должны начинаться с одинарной или двойной нижней черты ('_'), чтобы наследоваться в контексте назначения.
  • F: Отличает от предыдущей опции тем, что не переходит в другой контекст, если вызывающийабонент повесил трубку, но продолжает выполнение текущего контекста со следующего приоритета.

Примечание: При использовании данной опции из Asterisk app Macroили Asterisk app: Gosubне будет возврата.(?)

  • h: Разрешить вызываемойстороне повесить трубку нажатием -'*'.
  • H: Разрешить вызывающейстороне повесить трубку нажатием -'*'.
  • n: Не предпринимать повторных попыток вызова агентов очереди по истечению таймаута и перейти к выполнению следующего приоритета в текущем контексте.
  • i: Игнорировать установки переадресации вызова, если таковые заданы на вызываемых екстеншенах агентов очереди.
  • I: Данная опция указывает Asterisk игнорировать любые запросы на обновление или перенаправление получаемые от вызываемых устройств.
  • r: Установить КПВ (гудки) вместо Музыки на Удержании для ожидающих в очереди. Периодические анонсы будут воспроизводится по прежнему, если заданы.
  • R: Установить КПВ (гудки) вместо Музыки на Удержании для ожидающих в очереди, если устройство действительно вызывается.
  • t: Разрешить вызываемомуабоненту переадресацию вызова при помощи кода, назначенного в features.conf.
  • T:Разрешить вызывающемуабоненту переадресацию вызова при помощи кода, назначенного в features.conf.
  • w: Разрешить вызываемомуабоненту записать разговор при помощи приложения Asterisk: Monitor.
  • W: Разрешить вызывающемуабоненту записать разговор при помощи приложения Asterisk: Monitor.
  • k: Разрешить вызываемойстороне припарковать вызов посылкой DTMFкода, назначенного в features.conf.
  • K: Разрешить вызывающейстороне припарковать вызов посылкой DTMFкода, назначенного в features.conf.

URL - Добавить значение Access-URL: в SIP Invite. Если вызываемое устройство поддерживает данную функцию, возможно вывести на дисплей телефона дополнительную информацию.

timeout - Завершить вызов приложения Queue() по истечению заданного в секундах таймаута. Данная опция превалирует над параметром <timeout> в настройках очереди queues.conf, если в настройках очереди задано timeoutpriority=app. Например, если timeout=30, но Queue(qname,,,,10), то вызов перейдет на следующий приоритет через 10 секунд.
Смотрите подробнее в queue timing options - queues.conf.

AGI - выполнить AGI скрипт, когда вызывающая при ответе оператора.

macro - Перейти в Macro-контекст при ответе оператора.

gosub - Перейти по Sub-маршруту при ответе оператора.

rule - Назначить специфические правила, вместо правил по умолчанию см. Asterisk queuerules.conf.

position - Попытаться поставить вызывающего абонента на указанную позицию в очереди. Например, если указано '1' на первую, а '3' на третью.

См. также

Команды диалплана Asterisk


Команда Asterisk: MixMonitor

$
0
0

Команда Asterisk: MixMonitor

Приложение Asterisk записи разговора и микширования аудио двух каналов (приемника и передатчика).

Описание
Записывает аудио текущего соединение в указанный файл.
Это приложение не отвечает само на вызов и требует предварительного выполнения answerили progress

Используйте также приложение StopMixMonitor, чтобы получить доступ к записанному файлу, пока обработка диалплана записываемого вызова не завершена.

примечание: MixMonitor запускается как audiohook.

${MIXMONITOR_FILENAME}: Содержит имя созданного файла.

Синтаксис

MixMonitor(filename.extension[,options[,command]])

Аргументыfilename - Имя записываемого файла. Если не содержит абсолютный путь, то помещается в директорию, определенную по умолчанию в конфиге asterisk.conf

options

  • a: Добавить файл, а не перезаписывать, если существует.
  • b: Сохранять аудио, только если установлено соединение. Если эта опция используется для канала Local, используйте опцию '/n', чтобы обеспечить корректную работу. Например:Dial(Local/start@mycontext/n)
  • v(x): Регулировать «слух» по значению <x> (диапазон от '-4' до '4')
  • V(x): Регулировать «речь» по значению <x> (диапазон от '-4' до '4')
  • W(x): Регулировать «слух и речь» по значению <x> (диапазон от '-4' до '4')

«heard and spoke» - имеются ввиду входящий и исходящий медиа(аудио) потоки по отношению к инициатору вызова.

  • r(file): Записать принимаемыйаудио поток в указанный файл. Как и для основного файла, директория определяется в либо абсолютным путем к файлу, либо по умолчанию, в директорию monitorсм. asterisk.conf
  • t(file): Записать передаваемый аудио поток в указанный файл.
  • i(chanvar): Сохранить MixMonitorsID в указанной переменной (chanvar) .
  • m(mailbox): Создать копию файла, как файл голосовой почты для заданных голосовых ящиков, перечисленных через запятую, вида:m(1111@default,2222@default,…). Директория, необязательный параметр, может быть задана как: m(mailbox@context/folder).

command - Будет выполнена по завершению записи. Любая строка вида '^{X}' будет рассматриваться как ${X}. Все переменные будут установлены в момент вызова MixMonitor.

См. Также

Spoiler

Команды диалплана Asterisk

Установка 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 Call Center Stats

$
0
0

Asterisk Call Center Stats

Статистика очередей колл центра Asterisk PBX.
Мод основанный на Asternic Call Center Stats lite.

Ключевые изменения:
Вместо парсинга текстового лога очереди /var/log/asterisk/queueu_logв MySQL
используется реалтаймлог очереди модуля app_queueв MySQL - Asterisk PBX.

Отчеты в Asterisk Call Center Stats:

Сортировка

  • Выбор данных по:
    • очередям
    • агентам
    • дате

Реалтайм

  • Состояние агентов в реальном времени.
  • Информация о очереди:
    • Свободные агенты.
    • В разговоре.
    • Количество вызовов в очереди.
  • Вызовы ожидающие в очереди.

asterisk queue stats realtime

Отвеченные вызовы

  • Отвеченные вызовы по очередям и агентам.
  • Среднее время ожидания для очередей и агентов.
  • Среднее время разговора для очередей и агентов.
  • Количество отвеченных вызовов по агентам.
  • Процент отвеченных вызовов для очередей и агентов.

asterisk queue stats answered calls

asterisk queue stats answered calls

Неотвеченные вызовы

  • Количество неотвеченных вызовов по очередям.
  • Средняя позиция в очереди при выходе.
  • Причина разъединения: повесили трубку или отключены по таймауту.

asterisk queue stats unanswered calls

Распределение вызовов

  • Распределение вызовов по дате, по часам и дням недели

asterisk queue stats distribution calls

asterisk queue stats distribution calls

Установка Asterisk Call Center Stats

Установка приложения статистики очередей колл-центра Asterisk PBX.

Укажем Asterisk сохранять лог очереди в БД

Создайте таблицу в БД asterisk.

CREATE TABLE IF NOT EXISTS `queuelog` (
`time` varchar(32) DEFAULT NULL,
`callid` char(64) DEFAULT NULL,
`queuename` char(64) DEFAULT NULL,
`agent` char(64) DEFAULT NULL,
`event` char(32) DEFAULT NULL,
`data` char(64) DEFAULT NULL,
`data1` char(64) DEFAULT NULL,
`data2` char(64) DEFAULT NULL,
`data3` char(64) DEFAULT NULL,
`data4` char(64) DEFAULT NULL,
`data5` char(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

в файле /etc/asterisk/logger.confвыключите лог в файл:

 queue_log_to_file = no

в файле /etc/asterisk/asterisk.conf

 [options]
 queue_adaptive_realtime = yes

в файле /etc/asterisk/extconfig.conf

 queue_log => odbc,asterisk,queuelog

где asterisk - db конфиг, например в /etc/asterisk/res_odbc_custom.conf

[asterisk]
enabled => yes
dsn => asterisk
username => dbuser
password => dbpass
pre-connect => yes

Примените конфигурацию

 asterisk -rx 'core reload'

Установка и настройка Asterisk Call Center Stats

Скачайте приложение в директорию веб сервера (в примере /var/www/html):

 wget http://asterisk-pbx.ru/downloads/cdr/asterisk-queue-stats.tar.gz

Распакуйте:

 cd /var/www/html
 tar zxvf asterisk-queue-stats-001.tar.gz
 cd queue-stats

Отредактируйте файл config.phpв соответствии в вашими данными, где

  • $dbname - БД в которой вы создали таблицу queuelog (в примере - asterisk)
  • $dbname - Пользователь ДБ
  • $dbpass - Пароль БД (см. /etc/asterisk/res_odbc.conf или /etc/asterisk/res_odbc_custom.conf)

// Credentials for MYSQL database
$dbhost = 'localhost';
$dbname = 'asterisk';
$dbuser = 'root';
$dbpass = '';

// Credentials for AMI (for the realtime tab to work)
// See /etc/asterisk/manager.conf

$manager_host   = "127.0.0.1";
$manager_user   = "admin";
$manager_secret = "amp111";

Задайте права на директорию queue-stats:

 chown -R asterisk. /var/www/html/queue-stats

Откройте статистику в вашем любимом веб браузере:

http://ip.add.res.s/queue-stats
Spoiler

Команда Asterisk: AddQueueMember

Asterisk: PauseQueueMember

Команда Asterisk: Queue

Asterisk: QueueLog

Asterisk: RemoveQueueMember

Asterisk: UnpauseQueueMember

Asterisk queuerules.conf

Asterisk: queues.conf

function 'QUEUE_EXISTS'

function 'QUEUE_MEMBER'

function 'QUEUE_MEMBER_LIST'

Функция диалплана Asterisk: QUEUE_VARIABLES

function 'QUEUE_WAITING_COUNT'

Asterisk: queue_log в MySQL через unixODBC

FreePBX Queues

Asterisk: queue_log в MySQL через unixODBC

$
0
0

Asterisk: queue_log в MySQL через unixODBC

Realtime лог очереди в нативную базу данных Asterisk.

SQL таблица лога очереди

Создадим таблицу в БД asterisk.

CREATE TABLE IF NOT EXISTS `queue_log` (
`time` varchar(32) DEFAULT NULL,
`callid` char(64) DEFAULT NULL,
`queuename` char(64) DEFAULT NULL,
`agent` char(64) DEFAULT NULL,
`event` char(32) DEFAULT NULL,
`data` char(64) DEFAULT NULL,
`data1` char(64) DEFAULT NULL,
`data2` char(64) DEFAULT NULL,
`data3` char(64) DEFAULT NULL,
`data4` char(64) DEFAULT NULL,
`data5` char(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Выключение текстового лога

Если используется стандартное имя queue_logреалтайм семейства (realtime family)
и настроено соединение с базой данных, Asterisk сам создаст таблицу queue_log,
при отключении текстового лога и перезагрузке модуля logger:

*CLI> module reload logger
Module 'logger' reloaded successfully.
 Asterisk Queue Logger restarted

в файле /etc/asterisk/logger.conf выключите лог в файл:

 queue_log_to_file = no

в файле /etc/asterisk/asterisk.conf*

 [options]
 queue_adaptive_realtime = yes

* - спорная опция

Конфигурация realtime family

в файле /etc/asterisk/extconfig.conf

 queue_log => odbc,asterisk,queue_log

где 'asterisk' ваш db конфиг в /etc/asterisk/res_odbc.conf:

[asterisk]
enabled => yes
dsn => asterisk
username => dbuser
password => dbpass
pre-connect => yes

Расшифровка событий очереди (queue) в логе.

eventdata1data2data3
ABANDONpositionorigpositionwaittime
AGENTDUMP
AGENTLOGINchannel
AGENTCALLBACKLOGINexten@context
AGENTLOGOFFchannellogintime
AGENTCALLBACKLOGOFFexten@contextlogintimereason
COMPLETEAGENTholdtimecalltimeorigposition
COMPLETECALLERholdtimecalltimeorigposition
CONFIGRELOAD
CONNECTholdtimeuniqueid
ENTERQUEUEurlcalleridenterposition
EXITWITHKEYkeyposition
EXITWITHTIMEOUTposition
QUEUESTART
SYSCOMPAT
TRANSFERextension,context
Другие страницы с тегом 'queue':

Функция диалплана Asterisk: QUEUE_VARIABLES

$
0
0

Функция диалплана Asterisk: QUEUE_VARIABLES

Функция Asterisk QUEUE_VARIABLESвозвращает предустановленные переменные с информацией о состоянии очереди.

Описание

Доступны перечисленные ниже переменные.
Возвращает '0' если очередь найдена и setqueuevar определена, '-1' в противном случае.

Синтаксис

QUEUE_VARIABLES(queuename)

Аргументы

  • queuename
  • variables:
    • QUEUEMAX - Максимально разрешенное кол-во вызовов в очереди.
    • QUEUESTRATEGY - Стратегия очереди.
    • QUEUECALLS - Кол-во вызовов в очереди в данный момент.
    • QUEUEHOLDTIME - Среднее время ожидания в очереди на данный момент.
    • QUEUECOMPLETED - Кол-во отвеченных вызовов.
    • QUEUEABANDONED - Кол-во отвергнутых (неотвеченных) вызовов.
    • QUEUESRVLEVEL - Заданный уровень обслуживания очереди.
    • QUEUESRVLEVELPERF - Текущий уровень обслуживания очереди.
Пример:

Запишем в БД текущее состояние очереди при поступлении нового вызова в очередь.
Ключи Fcкоманды QUEUEвелят продолжить выполнения диалплана, если вызывающий или вызываемый, соответственно, завершают вызов.

exten => _488X,1,Queue(${EXTEN},Fc)
   same => n,set(QUEUE_VARIABLES(${EXTEN})) 
   same => n,Goto(queue-variables,s,1)

[queue-variables]     
exten => s,1,Noop()    
   same => n,set(REALTIME(queue_adv,queue,${queue},queuesrvlevelperf)=${QUEUESRVLEVELPERF})
   same => n,set(REALTIME(queue_adv,queue,${queue},queueabandoned)=${QUEUEABANDONED})
   same => n,set(REALTIME(queue_adv,queue,${queue},queuecompleted)=${QUEUECOMPLETED})
   same => n,set(REALTIME(queue_adv,queue,${queue},queueholdtime)=${QUEUEHOLDTIME})
   same => n,set(REALTIME(queue_adv,queue,${queue},queuecalls)=${QUEUECALLS})
   same => n,hangup
вывод консоли

запись в БД

 select * from queuelog_adv;
+-------+------------+---------------+----------------+----------------+-------------------+
| queue | queuecalls | queueholdtime | queuecompleted | queueabandoned | queuesrvlevelperf |
+-------+------------+---------------+----------------+----------------+-------------------+
| 4884  | 0          | 8             | 12             | 1              | 33.3              |
+-------+------------+---------------+----------------+----------------+-------------------+
1 row in set (0.00 sec)

Asterisk: функции диалплана

Asterisk 13 + Opus VP8

$
0
0

Asterisk 13 + Opus VP8

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 + Opus

https://github.com/seanbright/asterisk-opus

Начиная с версии Asterisk 14 OPUS входит в стандартную поставку Asterisk.
http://blogs.digium.com/2016/09/30/opus-in-asterisk/

IPMatika Yealink - Auto Provisioning - Hot Desking

$
0
0

IPMatika Yealink - Auto Provisioning - Hot Desking

Рассмотрим простой пример организации VoIPАТС с реализацией функций:
Auto Provisionig - в нашем примере, загрузка настроек телефона с TFTP сервера.
Hot Desking - за телефонными аппаратами не закреплен конкретный номер. Сотрудник нажимает запрограммированную кнопку на телефоне, вводит логин/пароль и авторизуется на своем SIPаккаунте.

Данная инструкция ориентирована на использование линейки VoIPтелефонов Yealink(IPmatika) SIP-T2/T19P/T4

Список моделей.

  • Yealink SIP-T28P
  • Yealink SIP-T26P
  • Yealink SIP-T22P
  • Yealink SIP-T21P
  • Yealink SIP-T20P
  • Yealink SIP-T19P
  • Yealink SIP-T46G
  • Yealink SIP-T42G
  • Yealink SIP-T41P

Формат имени конфигурационного файла общих настроек (common) для каждой модели.

Phone Model Common CFG File
SIP-T28P y000000000000.cfg
SIP-T26P y000000000004.cfg
SIP-T22P y000000000005.cfg
SIP-T21P y000000000034.cfg
SIP-T20P y000000000007.cfg
SIP-T19P y000000000031.cfg
SIP-T46G y000000000028.cfg
SIP-T42G y000000000029.cfg
SIP-T41P y000000000036.cfg

Формат имени конфигурационного файла для каждого уникального устройства.

MAC_Address.cfg

Пример общего конфигурационного файла модели T19(P).

Может быть использован для всех вышеперечисленных моделей.

y000000000031.cfg

Использован минимум настроек:

Включить Auto Provisioning:

 auto_provision.mode = 1 

Адрес сервера Auto Provisioning (tftp):

 auto_provision.server.url = 10.10.10.1

Назначим кнопку для Hot Desking (код 34). Под кнопку использована softkey 3 (кнопка под дисплеем, по умолчанию DND)

 programablekey.3.type = 34

Назначим Time Offset (Московское время)

 local_time.time_zone = +3

Укажем NTP сервер:

 local_time.ntp_server1 = 10.10.10.1

Назначим опции для авторизации Hot Desking (в нашем примере это логин и пароль SIPаккаунта)

 hotdesking.startup_username_enable = 1
 hotdesking.startup_password_enable = 1

Пример конфигурационного файла телефона, где в качестве имени файла выступает MAC адрес телефона

Может быть использован для всех вышеперечисленных моделей.

mac_address.cfg

По сути дела, нам требуется указать только адрес SIPсервера (в нашем случае Asterisk) и порт (в примере использован 5061)

Адрес SIPсервера:

  account.1.sip_server_host = 10.10.10.1

Порт SIPсервера:

 account.1.sip_server_port = 5061

Транспорт; 0-UDP (default), 1-TCP, 2-TLS, 3-DNS SRV;

 account.1.transport = 0

Теперь осталось только поместить файлы на TFTP сервер, который можно разместить на том же сервере, что и Asterisk:

Настройка TFTP сервера

И добавить в настройки DHCP сервера опцию 66 (или 128).

Настройка DHCP - option 66

Телефон подключается в локальную сеть, получает IP адрес и адрес TFTP сервера по DHCP,
скачивает файл общих настроек и свой уникальный конфигурационный файл.
Теперь когда аппарат получил всю требуемую информацию, а именно:

  • адрес tftp сервера по DHCP
  • адрес SIPсервера из конфигурационного файла с tftp сервера.
  • параметры Hot Desking из общего конфигурационного файла.
  • и тд

Пользователь нажимает кнопку HDesk (Смена - в руссифицированном интерфейсе) и авторизуется под своим SIPаккаунтом.

Настройка оборудования


Asterisk CDR - Call Detail Records - Статистика звонков

$
0
0

Asterisk CDR - Call Detail Records - Статистика звонков

CDR - детализированный отчет вызовов. Лог вызовов через ODBC: MySQL, PostgreSQL, TDS и др. Детализированные отчеты о звонках используются для выставления счетов (биллинг), анализа объемов голосового трафика или для отладки Asterisk.

Поля CDR записей

  • R/O - read only
Option Value/Example Notes
accountcode 54321 Код аккаунта присвоенный абоненту, для биллинга например. По умолчанию не задан.
src 8129981138 Идентификатор вызывающего абонента(Caller ID). Источник вызова, сохраняется автоматически. R/O
dst 111 Пункт назначения вызова.Вызываемое расширение диалплана.
dcontext from-internal Контекст назначения обработки вызова. auto, R/O
clid "Olegus" <81239981138> Caller ID вызывающего абонента в полном формате - "name" <number>. auto, R/O
channel SIP/0004F2040808-a1bc23ef Канал инициатор вызова. A-leg(side).auto, R/O
dstchannel SIP/0004F2046969-9786b0b0 Канал назначения вызова. B-Leg(side).auto, R/O
lastapp Dial Приложениеобработки вызова выполненное последним в канале. auto, R/O
lastdata SIP/0004F2046969,30,tT Данные (например 'Dial(данные)') приложения выполненного последним.auto, R/O
start 2016-05-27 12:02:00 Время поступления вызова вызова. auto, R/O
answer 2016-05-27 12:02:15 Время ответа на вызов абонентом или ответ приложения. auto, R/O
end 2016-05-27 12:08:15 Время окончания соединения.Hangup. auto, R/O
duration 195 Общая продолжительность вызова в секундах.auto, R/O
billsec 180 Продолжительность соединения в секундах с момента ответа(снятия трубки или выполнения команды Asterisk app: Answerв диалплане).auto, R/O
disposition ANSWERED Состояние обработки вызова. Может быть: NO ANSWER, FAILED, BUSY, ANSWEREDили UNKNOWN.
amaflags DOCUMENTATION Automatic Message Accounting (AMA) flag. значения: OMIT, BILLING, DOCUMENTATION или Unknown.
userfield custom Пользовательское поле. Пусто по умолчанию, назначается в диалплане. set(CDR(userfield)=<value>). R/W
uniqueid 1288332400.1 Уникальный идентификатор канала. R/O

Помимо поля userfieldвы можете создавать собственные CDR переменные или модифицировать стандартные.

Поля CDRзаписей могут быть назначены в диалплане Asterisk функцией CDR() ().
Функция CDR() также может быть использована для установки полей CDR, которые определяются пользователем.

 exten => 177,1,Verbose(Call start time: ${CDR(start)})
       same => n,Set(CDR(userfield)=red_eyes)

Также можно добавить собственные поля:

   exten => 177,1,NoOp()
       same => n,Set(CDR(mycustomfield)=greentea)
       same => n,Verbose(I need some more ${CDR(mycustomfield)})

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

Приложения и функции диалплана связанные с CDR

ForkCDR: Разделить запись CDRтекущего канала .
NoCDR: Не сохранять CDRдля текущего вызова.
ResetCDR: Сбросить CDRдля текущего канала.
function 'CDR': Задать пользовательское значение CDRв канале. Не работает для Read Onlyполей CDR.

cdr.conf

Содержит общие (глобальные) параметры CDRи конфигурацию бакендов cdr_scvи cdr_radius.
Файл конфигурации cdr.conf

Option Value/Example Notes
enable yes Включить лог CDR. По умолчанию включено.
unanswered no Сохранять или нет информацию о неотвеченных вызовах. Не касается внешних вызовов. О них сохраняется полная информация, независимо от значения данной опции.
endbeforehexten no Закрыть и сохранить запись CDRдо выполнения расширения 'h' (hangup). Если значение - 'no', закрытие CDRпроизойдет, только по завершению всех шагов диалплана. Если - 'yes', при завершении вызова, независимо от того продолжается выполнение диалплана в контексте или нет
initiatedseconds no По умолчанию 'billsec' вычисляется, просто как разница 'end' минус 'answer' в секундах. Включение опции initiatedseconds=yes, укажет Asterisk использовать точные значения до микросекунд
batch no Записывать CDRгруппой, вместо записи каждого вызова отдельно. Снижает нагрузку на Asterisk. Зависит от перечисленных ниже опций.
size 100 Кол-во строк CDRв буфере, при достижении которого, будет произведена запись.
time 300 Предел времени хранения данных в буфере. Запись будет произведена, независимо от порога строк в буфере, заданного параметром size.
scheduleronly no Set whether CDR batch processing should be done by spawning a new thread, or within the context of the CDR batch scheduler. The default value is no, and we recommend not changing it.
safeshutdown yes Блокировать остановку Asterisk, пока буфер не очищен (данные сохранены).Предотвращает потерю данных, при корректномвыключении Asterisk.

backends

Модули баз данных предоставляют различные бакенды для записи CDR. Все они требуют специфических настроек.

Проверка подключенных backends: CLI>cdr show status

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    mysql
    Adaptive ODBC
    cdr-custom

cdr_adaptive_odbc

Как следует из названия, модуль cdr_adaptive_odbc сохраняет CDRв базу данных через ODBC.
«adaptive» в данном случае означает, что она пытается приспособиться к структуре таблицы: нет статической структуры таблиц, которые должны быть использованы с этим модулем.
Когда модуль загружен (или при перезагрузке), он читает структуру таблицы. Он ищет имя столбца, которому соответствует переменная CDR.
Это относится как к встроенным CDRпеременным, так и к пользовательским переменным.
Например, чтобы передавать данные из встроенной переменной CDRchannel, в таблице базы данных должен быть столбец channel.

пример:

Добавим в кастомную CDRпеременную useragentзначение равное номеру SIPтелефона.

exten ⇒ 177,n,Set(CDR(useragent)=${CHANNEL(useragent)})

Чтобы данные переменной useragentбыли занесены через cdr_adaptive_odbc, надо создать столбец useragentв БД.

В файле конфигурации cdr_adaptive_odbc можно создать множество таблиц. Имя секции может быть любым, модуль не использует его. Вот пример простой конфигурации таблицы:

[mytable]
connection = asterisk
table = asterisk_cdr
Option Value/Example Notes
connection asterisk База данных. Параметры соединения настраиваются в Asterisk: odbc.conf. Обязательный параметр.
table asterisk_cdr Имя таблицы БД. Обязательное поле.
usegmtime no Использовать время GMT вместо локального времени. По умолчанию -'no'.

В дополнение к вышеперечисленным опциям cdr_adaptive_odbc.conf, можно задать ещё несколько.

Обычно, CDRищет столбец соответствующий имени переменной. Параметр aliasпозволяет соотнести имя переменной с отличным от него именем столбца.

 alias <CDR variable> => <column name>

Например:

 alias src => source

Также, можно отфильтровать определенное содержимое.

  filter <CDR variable> => <content>

Например:

  filter accountcode => 321

И наконец, можно добавить статические данные, дополнительно к поступающим из CDR.

 static <"Static Content Goes Here"> => <column name>

Например:

static "My Data" => my_id

cdr_csv

Модуль cdr_csvпростейший бакенд, сохраняющий CDRданные в CSVфайл, разделяя запятой.
Конфигурация находится в файле cdr.conf

Для работы не требует конфигурации, тем не менее есть несколько параметров:

Option defaultNotes
usegmtime no Сохранять время GMT вместо локального. По умолчанию - no.
loguniqueid no Сохранять uniqueid переменную CDR. По умолчанию - no
loguserfield no Сохранять userfield CDRпеременную . По умолчанию - 'no'.
accountlogs yes Создавать отдельный csv файл для каждой переменной accountcode. По умолчанию - yes.

Порядок CDRпеременных в CSV файле созданном модулем CDR_CSV:

<accountcode>,<src>,<dst>,<dcontext>,<clid>,<channel>,<dstchannel>,<lastapp>, <lastadata>,<start>,<answer>,<end>,<duration>,<billsec>,<disposition>, <amaflags>[,<uniqueid>][,<userfield>]
cdr_custom

Данный модуль используется для создания пользовательского (custom) CSV файла.
Конфигурационный файл модуля cdr_custom.conf.
Единственная секция [mappings] может быть использована в этом файле. Шаблон задается с помощью функций диалплана Asterisk.

В следующем примере cdr_customсоздает файл /var/log/asterisk/cdr-custom/Master.csv. Шаблон использует функции function 'CDR'() для извлечения значений и function 'CSV_QUOTE'() обеспечивающую правильное форматирование CSV файла (${CSV_QUOTE(${CDR(lastdata)})}).

[mappings]

Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},
   ${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},
   ${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},
   ${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},
   ${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},
   ${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},
   ${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},
   ${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},
   ${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})}

cdr_manager

Модуль cdr_manager интерпретирует данные CDR, как события Asterisk Manager Interface (AMI).
Конфигурационный файл - cdr_manager.conf.

Первая секция [general] содержит единственную опцию enabled, по умолчанию = no.

[general]
enabled = yes
В следующая секция cdr_manager.confэто [mappings]. Здесь назначается пользовательская CDRпеременная передаваемая менеджеру Asterisk.
<CDR variable> => <Header name>

пример:

 [mappings]
 rate => Rate
 carrier => Carrier

В данной конфигурации заданные переменные появятся как события в интерфейсе менеджера.
Источником событий станет следующий диалплан:

 exten => 177,1,Answer()
     same => n,Set(CDR(rate)=0.03)
     same => n,Set(CDR(carrier)=BВ&С)
     same => n,Hangup()

Следующая команда инициирует вызов:

*CLI> console dial 177@test

asterisk:alsa.conf

В итоге, следующее событие отобразится в Asterisk Call ManagerFinally:

Event: Cdr
Privilege: cdr,all
AccountCode: 
Source: 
Destination: 177
DestinationContext: test
CallerID: 
Channel: Console/dsp
DestinationChannel: 
LastApplication: Hangup
LastData: 
StartTime: 2016-05-23 08:29:21
AnswerTime: 2016-05-23 08:29:22
EndTime: 2016-05-23 08:29:23
Duration: 0
BillableSeconds: 0
Disposition: ANSWERED
AMAFlags: DOCUMENTATION
UniqueID: 1383680051.3
UserField: 
Rate: 0.03
Carrier: BВ&С

cdr_mysql

Файл конфигурации - cdr_mysql.conf
Данный модуль для сохранения CDRв MySQL. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_odbc

Файл конфигурации - cdr_odbc.conf
Модуль для сохранения CDRчерез ODBC драйвер. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_pgsql

Файл конфигурации - cdr_pgsql.conf
Модуль для сохранения CDRв базу данных PostgreSQL. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_radius

cdr_radiusбакенд связывает CDRс Radius сервером.
Используется конфигурационный файл cdr.confв секции [radius].

Option Value/Default Notes
usegmtimeyesСохранять время GMT вместо локального.
loguniqueidyesСохранять uniqueid переменную CDR.
loguserfieldyesСохранять userfield CDRпеременную.
radiuscfg/etc/radiusclient-ng/radiusclient .confМестоположение конфигурационного файла radiusclient-ng.

cdr_sqlite

Устарело. Используйте cdr_sqlite3_custom.

cdr_sqlite3_custom

CDRбакенд для сохранения данных в SQLite БД версии 3. База данных создается модулем, как /var/log/asterisk/master.db
Данный модуль использует конфигурационный файл cdr_sqlite3_custom.conf.
Конфигурация указывает имя таблицы CDRи пользовательские переменные, если требуется.

Spoiler

cdr_syslog

Сохраняет CDRиспользуя syslog linux. Чтобы включить данную возможность, сперва добавьте запись в конфиг syslog, /etc/syslog.conf.
Например:

local.*      /var/log/asterisk/asterisk-cdr.log
Конфигурационный файл Asterisk - cdr_syslog.conf:
[cdr]

facility = local
priority = info
template = "Вызов от ${CDR(src)}"
пример записи syslog, для приведенной конфигурации:
 cat /var/log/asterisk/asterisk-cdr.log

Sep 17 18:15:57 pbx cdr: «Вызов от 8129981138»

cdr_tds

Конфигурационный файл - cdr_tds.conf

cdr_tdsмодуль использует FreeTDS библиотеку для отправки CDR Microsoft SQL Server или Sybase БД.
FreeTDS возможно использовать с unixODBC, так что конфигурация может быть сделана и в cdr_adaptive_odbc.

Файлы конфигурации Asterisk

Asterisk: Настройка

function 'CUT'

$
0
0

function 'CUT'

Функция Asterisk: разрезать строку по заданными разделителям.

Описание

Вырезать информацию из строки (переменной), ориентируясь на разделители.

Синтаксис

 CUT(varname,char-delim,range-spec)

Аргументы

  • varname - переменная для операции.
  • char-delim - Разделитель, по умолчанию '-'.
    • Если разделитель запятая, экранируется обратной косой чертой - CUT(foo,\,,1)
  • range-spec - Номер поля, который вам нужен со смещением начиная с 1-го, также возможно задавать диапазон полей через '-' и группировать при помощи амперса́нда - '&'.

Пример

Предположим, имеется таблица БД - devices, с данными SIPустройств.

+------+-------+------------+------------+------+-------------+---------------+
| id   | tech  | dial       | devicetype | user | description | emergency_cid |
+------+-------+------------+------------+------+-------------+---------------+
| 4889 | pjsip | PJSIP/4889 | fixed      | 4889 | sip 4889    |               |
| 4887 | sip   | SIP/4887   | fixed      | 4887 | sip 4887    |               |
| 4886 | sip   | SIP/4886   | fixed      | 4886 | sip 4886    |               |
+------+-------+------------+------------+------+-------------+---------------+
 exten => _4XXX,1,verbose(${REALTIME(devices,user,${EXTEN},:,:)})

Функция REALTIME()возвращает на строку содержащую user:4889 c двоеточием в качестве разделителя:

 Verbose("id:4889:tech:pjsip:dial:PJSIP/4889:devicetype:fixed:user:4889:description:sip 4889:")
Требуется получить технологию из поля под порядковым номером 6, в данном случае PJSIP/4889.
используем для этого функцию CUT():
 exten => _4XXX,1,verbose(${CUT(REALTIME(devices,user,${EXTEN},:,:),:,6)})

и получим требуемое значение:

 Verbose("PJSIP/4889") 

Поля 4,5 и 6:

 exten => _4XXX,1,verbose(${CUT(REALTIME(devices,user,${EXTEN},:,:),:,4-6)}) 
 Verbose("pjsip:dial:PJSIP/4889")

Поля 6 и 8:

 exten => _4XXX,1,verbose(${CUT(REALTIME(devices,user,${EXTEN},:,:),:,6&8)}) 
 Verbose("PJSIP/4889:fixed")

Asterisk: функции диалплана

Настройка TFTP сервера

$
0
0

Настройка TFTP сервера

# yum install tftp tftp-server
# yum install xinetd
Зададим права на директорию для файлов:
# chown -R nobody:nobody /var/lib/tftpboot

Отредактируем файл /etc/xinetd.d/tftp

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = nobody
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

Применим настройки.

 /etc/rc.d/init.d/xinetd restart

centos 7

systemctl restart xinetd

systemctl start tftp

systemctl enable tftp

http://www.bo-yang.net/2015/08/31/centos7-install-tftp-server

systemctl status xinetd

[root@phn1 tftpboot]# systemctl status  xinetd
xinetd.service - Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled)
   Active: active (running) since Fri 2015-07-03 19:37:47 MSK; 2min 27s ago
  Process: 6188 ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $EXTRAOPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 6189 (xinetd)
   CGroup: /system.slice/xinetd.service├─6189 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
           └─6197 in.tftpd -s /var/lib/tftpboot

Jul 03 19:37:47 phn1 xinetd[6189]: removing discard
Jul 03 19:37:47 phn1 xinetd[6189]: removing discard
Jul 03 19:37:47 phn1 xinetd[6189]: removing echo
Jul 03 19:37:47 phn1 xinetd[6189]: removing echo
Jul 03 19:37:47 phn1 xinetd[6189]: removing tcpmux
Jul 03 19:37:47 phn1 xinetd[6189]: removing time
Jul 03 19:37:47 phn1 xinetd[6189]: removing time
Jul 03 19:37:47 phn1 xinetd[6189]: xinetd Version 2.3.15 started with libwrap loadavg labeled-networking options compiled in.
Jul 03 19:37:47 phn1 xinetd[6189]: Started working: 1 available service
Jul 03 19:37:47 phn1 systemd[1]: Started Xinetd A Powerful Replacement For Inetd.
Jul 03 19:38:09 phn1 xinetd[6189]: START: tftp pid=6197 from=192.168.12.32

check from win7

cmd

C:\Users\test>tftp

Обмен файлами с удаленным компьютером, на котором запущена служба TFTP.

TFTP [-i] узел [GET | PUT] источник [адресат]

  -i            Задание режима передачи файлов в двоичном формате.
                В этом режиме файл передается в неизменном виде
                по байтам. Воспользуйтесь этим режимом при передаче
                двоичных файлов.
  узел          Указание локального или удаленного узла.
  GET           Передача исходного файла с удаленного узла
                на локальный узел.
  PUT           Передача исходного файла с локального узла
                на удаленный узел.
  источник      Передаваемый файл.
  адресат       Задание адресата, которому нужно передать файл.
Скачаем какой-нибудь файл для проверки:
C:\Users\olegus.ASTERISK-PBX\Downloads>tftp -i 192.168.0.123 GET y000000000031.cfg
Успешная передача: 2033 байт за 1 сек., 2033 байт/с

Система

asterisk:func:sql_esc

$
0
0

  -= Info about function 'SQL_ESC' =-

[Synopsis]
Escapes single ticks for use in SQL statements.

[Description]
Used in SQL templates to escape data which may contain single ticks  ''' which
are otherwise used to delimit data.
Example: SELECT foo FROM bar WHERE baz='${SQL_ESC(${ARG1})}'

[Syntax]
SQL_ESC(string)

[Arguments]
Not available

[See Also]
Not available

Команда Asterisk ODBCFinish

$
0
0

Команда Asterisk ODBCFinish

 -= Info about application 'ODBCFinish' =-

[Synopsis]
Clear the resultset of a sucessful multirow query.

[Description]
For queries which are marked as mode=multirow, this will clear  any remaining
rows of the specified resultset.

[Syntax]
ODBCFinish(result-id)

[Arguments]
Not available

[See Also]
Not available
Viewing all 1041 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>