Ключевые слова:asterisk, phone, aon, voip, icq, (найти похожие документы)
From: Romik
Date: Wed, 15 Apr 2006 18:21:07 +0000 (UTC)
Subject: АОН с Asterisk IP PBX на ICQ
Оригинал: http://romik-g.livejournal.com/3690.html
С 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 .
В консоли 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
echo "Killing micq with PID $pid:"
kill -9 $pid
done
exit
для версии 1.4 и выше теперь надо так: (в одну строку!)
exten => 610,n,System(/bin/echo -e "msg 95256402 'Incoming Call From: ${CALLERID(all)}
To: ${EXTEN} Received: ${STRFTIME(${EPOCH},,
%d% mNaVH:NaVS)} '" > /home/user/.micq/scripting)