Category: Tech articles

  • Asterisk IP PBX ICQ Call Notification

    (статью скоро переработаю, т.к. micq уже умер. 891rpm)

    (АОН с Asterisk IP PBX на ICQ)

    С 22 июня 2005 года работает у нас в службе тех-поддержки ICQ бот под ником Asterisk (UIN не скажу ).Занимается он тем, что по ICQ отправляет техподдержке номер телефона звонящего, дату и время.

    Итак.
    Имеем настроеный рабочий Asterisk на сервере.
    Заходим на сайт http://www.micq.org/download.shtml.en и скачиваем последнюю версию mICQ
    (на данный момент это mICQ 0.5.0.4 (released 2005-06-05)). То есть:

    [roman@pbx1 log]$ cd ~
    [roman@pbx1 ~]$ wget http://www.micq.org/source/micq-0.5.0.4.tgz
    ---bla-bla-bla---
    [roman@pbx1 ~]$ tar -zxvf micq-0.5.0.4.tgz
    ---bla-bla-bla---
    [roman@pbx1 ~]$ cd micq-0.5.0.4
    [roman@pbx1 micq-0.5.0.4]$ ./configure --help #Читаем help если надо...
    [roman@pbx1 micq-0.5.0.4]$ ./configure
    ---bla-bla-bla---
    [roman@pbx1 micq-0.5.0.4]$ make
    ---bla-bla-bla---
    [roman@pbx1 micq-0.5.0.4]$ su -
    Password:
    [root@pbx1 ~]# cd /home/roman/micq-0.5.0.4
    [root@pbx1 micq-0.5.0.4]# make install
    [root@pbx1 micq-0.5.0.4]# exit
    [roman@pbx1 micq-0.5.0.4]$ micq

     

    При запросе UIN смело набираем \’0\’ (просто ноль, кто не понял ) и жмем Enter. Далее придумываем архисложный пароль, вводим, Enter, вводим его еще раз, Enter, дальше если вы работаете через прокси , вводите его параметры, иначе, как все нормальные люди, смело жмете Enter.
    Получаем UIN, регистрируемся на сервере.
    Если хотите, в консоли mICQ есть команда \’help\’, а есть еще \’help \’, то есть что-то вроде \’help msg\’ даст вам справку по отправке сообщений.
    Комманда \’msg 227702532 Hello Anest!!! How are you today guy?\’ спросит \’Как дела?\’ у нашего любимого Anest\’а, а \’msg 320598502 Privet rebyata! Pochemu na zvonki ne otvechaete?\’ спросит у нашей техподдержки, что это она так расслабилась.
    ___________________________________________
    # Дополнение от 03.07.2005г.
    # В консоли mICQ дайте комманду
    mICQ> autoaway 0
    Changing status to away/not available after idling 0 seconds.
    mICQ> save
    Saving preferences to /home/roman/.micq/micqrc.
    Your personal settings have been saved!

    # Это не даст вашему боту эпизодически пропадать в offline.
    ___________________________________________
    Поиграли, выходим из mICQ командой \’exit\’.
    Далее:
    [roman@pbx1 micq-0.5.0.4]# nano ~/.micq/micqrc

    или другим вашим любимым редактором vi, pico, или просто по F4 в \’mc\’ на этом файле, меняем \’ # password\’ на \’password <тут ваш пароль>\’.
    Продолжаем:
    [roman@pbx1 micq-0.5.0.4]# screen -d -m micq

    # Кто не пользуется и не знает, команда \’screen\’ создает нечто вроде виртуального терминала, от которого можно безболезненно отключаться, при этом программа, что запущена в нем, остается там работать в режиме S+, либо Ss+.
    Почитайте \’man screen\’ и Краткое руководство по работе в SCREEN на www.opennet.ru.
    # Проверяем, что заработало:
    [roman@pbx1 micq-0.5.0.4]# ps ax | grep micq | grep -v grep
    16046 ? Ss 0:00 SCREEN -d -m micq
    16047 pts/2 Ss+ 0:00 micq

    # Проверяем еще раз:
    [roman@pbx1 micq-0.5.0.4]# screen -R
    # Видим консоль mICQ, нажимаем Ctrl+c, потом отдельно \’d\’ – отключаемся от консоли.

    Дальше правим конфиг Asterisk\’a extentions.conf
    [roman@pbx1 micq-0.5.0.4]# sudo nano /etc/asterisk/extensions.conf
    # В нужном extention тепосредственно перед Dial вставляем нечто следующее:
    exten => 4,7,System(/bin/echo -e \"msg <тут UIN, на который хотим слать оповещение> \'Incoming Call From: ${CALLERIDNUM} To: <ваш номер> Received: ${DATETIME:0:2}/${DATETIME:2:2}/${DATETIME:4:4} at ${DATETIME:9}\'\" > /home/roman/.micq/scripting)
    #Сохраняем файл, перезагружаем конфиги Asterisk\’a
    [roman@pbx1 micq-0.5.0.4]# su -
    Password:
    [root@pbx1 ~]# asterisk -r
    pbx1*CLI> extensions reload
    ---bla-bla-bla---
    pbx1*CLI> exit
    [root@pbx1 ~]# exit
    [roman@pbx1 micq-0.5.0.4]#

    Все.
    ___________________________________________
    # Дополнение от 19.07.2005г.
    # Бот падает в оффлайн, если превышен некоторый лимит количества сообщений за единицу времени.
    Слава Богу, обычно он сам поднимается после этого.
    ___________________________________________
    ___________________________________________
    # Дополнение от 20.07.2005г.
    # Дополнение к дополнению от 19.07.2005 :)
    Можно с некоторой периодичностью, например используя cron, скриптом давать боту комманду login.
    ___________________________________________
    ___________________________________________
    # Дополнение от 16.03.2006г.
    # Версия mICQ 0.5.0.4 с русским работала некорректно. Уже следующая работала отлично. На настоящий момент используйте версию 0.5.1.
    http://www.micq.org/source/micq-0.5.1.tgz

    # Про login
    Добавьте в /etc/crontab
    */30 * * * * root echo \"login\" > /home/roman/.micq/scripting

    # Про \”зомбиков\”
    Если процесс micq умирает по какой-то причине (например кто-то сделал killall SCREEN), то в системе появляются подвисшие процессы \’echo\’, звонок не завершается нормальным образом.
    Хак:
    #!/bin/bash

    # for pid in $(ps aux | grep \"micq\" | grep \"scripting\" | grep -v grep | awk \'{print $2}\'); do
    for pid in $(ps aux | grep -v grep | awk \'/micq|scripting/ {print $2}\'); do
    echo \"Killing micq with PID $pid:\"
    kill -9 $pid
    done
    exit

    # Дополнение от 02.08.2006г.
    Автозапуск micq под пользователем roman.
    Прописывается например в /etc/rc.d/rc.local
    /bin/su – roman -c \”/usr/bin/screen -d -m /usr/bin/micq\”

    http://asteriskforum.ru/viewtopic.php?p=1127

    http://romik-g.livejournal.com/3690.html