четверг, 5 ноября 2015 г.

проверяем и синхронизируем даты и время

После ntpdate pool.ntp.org обнаружили неприятную "особенность" - апи стало работать с новым временем, а FS - по прежнему использует старое. Впрочем, правится тоже несложно: из апи или консоли
fsctl sync_clock
или
fsctl sync_clock_when_idle

Для проверки можно использовать такой скрипт:
check-time.py

import freeswitch

import time

def fsapi(session, stream, env, args):

        t = str(int(time.time()*1000))
        print t
        freeswitch.consoleLog('info', 'timestamp: %s\n' % t)

        t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
        print t
        freeswitch.consoleLog('info', 'sys date: \n%s\n' % t)

класть в скрипты, это может быть /etc/freeswitch/scripts или /usr/share/freeswitch/scripts

Теперь из fs_ctl вызываем:
freeswitch@192.168.10.202@internal> python check-time

и проверяем что даты перед и после sys date совпадают

При необходимости ставим и грузим mod_python

среда, 19 августа 2015 г.

freeswitch arrays

В доке сказано, что можно делать массив так:
Appending to an ARRAY with PUSH
<action application="push" data"myvar,test A"/>
<action application="push" data"myvar,test B"/>
<action application="push" data"myvar,test C"/>

По факту, формат такой
<action application="push" data"myvar=test A"/>

Получить потом можно так
<action application="log" data="INFO ${myvar}"/>
и выглядеть оно будет примерно так
ARRAY::test X|:test Y|:test Z|:test A|:test B|:test C

Можно указать конкретный элемент:
<action application="set" data="myvar[0]=Test A"/>

Вариант добавления в начало, не проверялось, но скорее всего так:
<action application="unshift" data="myvar=test X"/>
(в офдоке снова через запятую, что вероятно неверно)

Есть через regex, тоже не проверялось
<action application="set" data="num=2121231234"/>
<action application="capture" data="myvar|${num}|(\d{3})(\d{3})(\d{4})"/>

Получать через
${myvar}, пример вывода выше
${myvar[2]}

пятница, 14 августа 2015 г.

dtmf - типы передачи

Бывает in-bound и out-of-bound, то есть в голосовом потоке (можно услышать ушами) или прочие методы.
Коротко

  1. in-bound, inbound
  2. out-of-bound
    1. rfc 2833, rtp-nte
    2. sip info
    3. sip notify
Подробнее

среда, 15 июля 2015 г.

zabbix: мониторим freeswitch

Рабочая версия 2.4, под centos 6 x86_64
Считаем, что у нас уже есть сервер, поднимать будем агентов. Тут речь о настройке.
быстрая установка
идём на http://repo.zabbix.com/, выбираем нужный релиз, в моём случае zabbix-release-2.4-1.el6.noarch.rpm, ставим через rpm -Uvh, потом yum -y install zabbix-agent

Введение-предупреждение: selinux у меня выключен, поэтому если требуется его работа - или настраиваем в режиме permissive, выставляя потом права и создавая правила, или при любой проблеме первым делом проверяем, не он ли мешает работе.

2 метода получения данных:
  1. SNMP
  2. скриптами для агента

zabbix + kamailio

Как обычно, 2 варианта: SNMP и zabbix-agent

вторник, 14 июля 2015 г.

Sox

I am looking for command-line utility that monitors the microphone, and if you start to speak, writes the file. Recording period should be adjusted.

Solution is:

   sox -t alsa default recording.wav silence 1 0.1 5% 1 1.0 5%

+
http://www.thegeekstuff.com/2009/05/sound-exchange-sox-15-examples-to-manipulate-audio-files/