19 апр. 2017 г.

Asterisk: call web-based CRM when queue agent pick up the call

Asterisk: call web-based CRM when queue agent pick up the call.

We have a realtime queue.
We have to call URL when the agent of the queue pick up the call from it
URL  looks like a:

http://mycrm/socket/call.php?call_id=1492593880.162&operator_id=01&call_number=+73223223232"

6 мар. 2017 г.

Music on hold - Asterisk realtime queue

1. Create directory with moh music. For example - /var/lib/asterisk/moh/queuemoh. Move new music there.

2. Create section in /etc/musiconhold.conf :

[queuemoh]
mode=files
directory=/var/lib/asterisk/moh/queuemoh

3. Add musiconhold parameter to queue or set in the database (realtime queue):

musiconhold=queuemoh

19 нояб. 2016 г.

Raspbian Midnight Commander кракозябры

Нужно поменять locale в /etc/default/locale
c en_GB.UTF-8 на ru_RU.UTF-8
и кракозябры в ssh сеансе уйдут.

15 нояб. 2016 г.

Мигаем светодиодами в Raspberry Pi

Задача:
Есть некий важный процесс, который запускается на Raspberry Pi. 
Ему, процессу, не пристало лично заниматься такой глупостью, как мигание лампочками. 
Есть лампочки (LED), подключенные к GPIO выводам - красная и зеленая. 
Каждая из них может быть в 3-х состояниях - вкл, выкл и мигает. 
Для того, чтобы не отвлекать важный процесс, миганием занимается отдельный скрипт. А важный процесс просто пишет в файл признака соответствующее значение лампочки - on, off или blink. Если файла нет - значит лампочка не горит.
Скрипт на bash  под катом.

7 нояб. 2016 г.

debian 8.x - festival + asterisk

== debian 8.x - festival + asterisk ==
* Ставим
apt-get install festival festvox-ru
* Правим файл /etc/default/festival
Пишем в него
RUN_FESTIVAL=yes
* Правим файл /etc/festival.scm
Пишем в него (в конец) - включаем русский язык
;; set russian voice (comment the following 2 lines to use british_american)
(language_russian)
(set! voice_default 'voice_msu_ru_nsh_clunits)
* Правим файл /etc/asterisk/festival.conf и создаем каталог (обязательно!) - иначе будет заикаться
usecache=yes
cachedir=/var/lib/asterisk/festivalcache
* Копируем инит и разрешаем его, чтобы сервис запустился
cp /usr/share/doc/festival/examples/festival.init /etc/init.d/festival
update-rc.d festival defaults
Из плюсов - все уже в пакетах, включая русский язык и работает сразу.

15 сент. 2016 г.

Collect lspush.exe information (Lansweeper) by ftp

Collect information for Lansweeper (TM) by ftp when your notebooks anywhere. Use it by scheduler.
@echo off
:gettemp
set TMPFILE=%TMP%\%RANDOM%.tmp
if exist "%TMPFILE%" GOTO :gettemp
if exist c:\temp\lansweeper GOTO :run
mkdir c:\temp\lansweeper
:run
start /wait lspush.exe /folder "c:\temp\lansweeper"
echo open fbox.site.com>%TMPFILE%
echo lansweeper>>%TMPFILE%
echo secretpassword>>%TMPFILE%
echo bin>>%TMPFILE%
echo prompt>>%TMPFILE%
echo mput c:\temp\lansweeper\*.txt>>%TMPFILE%
echo bye>>%TMPFILE%
ftp.exe -s:%TMPFILE% >null
del %TMPFILE%
del c:\temp\lansweeper\*.txt
exit

30 авг. 2016 г.

Quick copy big number of files to slow flash drive

Проблема - DICOM исследование состоит из большого количества мелких файлов. Если их писать последовательно, просто смонтировав флешку, получается очень медленно.
Решение - создавать образ диска на HDD, писать туда, затем переносить образ через dd. Создаем таблицу разделов на флешке с двумя разделами - с тем, что нужно записать и остатком флешки.
#!/bin/bash
# 1st argument - name of disk device (e.g. /dev/sdb or /dev/flash etc)
# 2nd argument - source directory name
#FLASH_SIZE=`cat /sys/block/$1/size`
FLASH_SIZE=`du -s -k $2 |sed 's/\(.*[0-9]\)\(.*\)/\1*2+65535/'|bc`
date
echo $FLASH_SIZE sectors to write...
dd if=/dev/zero of=/tmp/flash.img bs=512 count=$FLASH_SIZE
echo dd image created...
/sbin/losetup /dev/loop0 /tmp/flash.img
/sbin/losetup -a
/sbin/mkfs -t vfat /dev/loop0
echo vfat fs on image made...
mount /dev/loop0 /mnt
cpstart=$(date +%s.%N); 
cp -r $2/* /mnt
cpdur=$(echo "$(date +%s.%N) - $cpstart" | bc);
printf "Copied in  %.6f seconds\n" $cpdur
echo files copied to image...
umount /mnt &
wait
dd if=/dev/zero of=$1 bs=512 count=1
echo -e "n\np\n1\n2048\n+"$FLASH_SIZE"\nt\nb\na\nw\nq\n"|fdisk $1 >/dev/null
dd if=/dev/loop0 of=$1'1' bs=512 count=$FLASH_SIZE &
wait
echo image moved to flash...
/sbin/losetup -D
rm /tmp/flash.img
echo -e "n\np\n2\n\n\nt\n2\nb\nw\nq\n"|fdisk $1 >/dev/null
mkfs -t vfat $1'2' &
wait
echo cleaning done.
date

11 авг. 2016 г.

От Стокгольма до Лаппеенранты за 7 дней - перегон яхты из Швеции.

Участники:
ТС - я, рулильщик
БР - брат, таксист на дальние расстояния.
Д - дочь, студентка, кок и швартовая команда.
АИ - наша единственная надежда, навигатор и шкотовый.














День (-1), 08.07
Путешествие началось вечером в пятницу. Загрузив вещи в машину, в 18:30 мы выехали из Питера. Нашей целью была паромная переправа в Турку. Гугл утверждал, что ехать туда около 4,5 часов, но по дороге был большой элемент неопределённости - финская граница в пятницу вечером. Поэтому выехали мы с запасом, поставив себе задачу пройти границу до полуночи. Около 10 часов вечера забрали от выборгского замка АИ с вещами.
На границу приехали около 23:30 и, на удивление, очередь там оказалось совсем не большой. Примерно в 00:10 выехали в Финляндию.

2 авг. 2016 г.

Установка DCM4CHEE для Windows и Debian

Windows

Берем инсталляцию MYSQL отсюда - http://dev.mysql.com/downloads/windows/
Берем инсталляцию JDK отсюда - 
http://www.oracle.com/technetwork/java/javase/downloads/index.html
или (для JDK7) 
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
сам dcm4chee берем отсюда - 
https://sourceforge.net/projects/dcm4che/files/dcm4chee/
Jboss для него берем отсюда - 
https://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/
Ставим MySQL.
Ставим JDK. Нужно ставить 1.7, так как с 8 не работает jmx-console


4 июн. 2016 г.

Нагрузочное тестирование Asterisk

На дополнительном Asterisk cоздаем call file с именем test:
Channel: SIP/192.168.0.1/100
application:Playback
data:demo-congrats
MaxRetires:1
RetryTime:60
WaitTime:30
Priority:1

С помощью скрипта закидываем его на прозвон в цикле:
#!/bin/bash
while true
do
  cp test test.call
  chown asterisk test.call
  chgrp asterisk test.call
  tmpname=$RANDOM.call
  mv test.call /var/spool/asterisk/outgoing/$tmpname
  sleep 60
done