?

Log in

No account? Create an account

Previous Entry Share Next Entry
Asterisk IP PBX ICQ Call Notification
romik_g
http://asteriskforum.ru


(copied from my post)

АОН с Asterisk IP PBX на ICQ

Собственно сабжRolling EyesRolling EyesRolling Eyes

С 22 июня 2005 года работает у нас в службе техподдержки ICQ бот под ником Asterisk (UIN не скажу Smile)LOL.Занимается он тем, что по 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' (просто ноль, кто не понял Smile ) и жмем Enter. Далее придумываем архисложный пароль, вводим, Enter, вводим его еще раз, Enter, дальше если вы работаете через прокси LOL, вводите его параметры, иначе, как все нормальные люди, смело жмете 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?' спросит у нашей техподдержки, что это она так расслабиласьLOL.
___________________________________________
# Дополнение от 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"
___________________________________________
Комментарии приветствуются. Ясен пень, что работающего таким образом ICQ бота можно заставить говорить все, что нужно, любые оповещения и отчеты...
_______________________________________________
Задумчивый Romik Rolling EyesRolling EyesRolling EyesPS: комментарии отключены, спамеры с виагрой достали, извиняйте )